Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

DZ 4 i 5 (zadatak)
WWW:
Idite na Prethodno  1, 2, 3 ... 8, 9, 10, 11, 12, 13  Sljedeće
Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 12:33 pet, 20. 1. 2012    Naslov: Citirajte i odgovorite

[quote="Zenon"]Mislim, meni je jasno da n nije konstanta, ali mi je objašnjavao zašto se to ne smije.
To je tzv. "dinamičko alociranje niza" koje ćemo učiti u drugom semestru ( trenutno ni ja ne znam što je ni kako se pravilno izvodi ), ali je rekao da ga možemo i sada koristiti, ako znamo pravilno, iako se cilja na korištenje obrađenog gradiva.[/quote]

Ne, nije [b]to[/b] dinamicka alokacija. To spada u novije standarde C-a, sto mi iz nekih (recimo pedagoskih) razloga ovdje ne zelimo raditi. Dinamicka alokacija je nacin na koji cemo raditi nizove varijabilne duljine u drugom semestru, no smijete ju koristiti vec sada ako to radite ispravno (i, jasno, nije u koliziji s textom zadatka, npr. da nisu zabranjeni pomocni nizovi).

@Hubert Cumberdale Pretpostavljam da ti je Namdev pomogao, pa ja necu traziti u cemu je problem.
Zenon (napisa):
Mislim, meni je jasno da n nije konstanta, ali mi je objašnjavao zašto se to ne smije.
To je tzv. "dinamičko alociranje niza" koje ćemo učiti u drugom semestru ( trenutno ni ja ne znam što je ni kako se pravilno izvodi ), ali je rekao da ga možemo i sada koristiti, ako znamo pravilno, iako se cilja na korištenje obrađenog gradiva.


Ne, nije to dinamicka alokacija. To spada u novije standarde C-a, sto mi iz nekih (recimo pedagoskih) razloga ovdje ne zelimo raditi. Dinamicka alokacija je nacin na koji cemo raditi nizove varijabilne duljine u drugom semestru, no smijete ju koristiti vec sada ako to radite ispravno (i, jasno, nije u koliziji s textom zadatka, npr. da nisu zabranjeni pomocni nizovi).

@Hubert Cumberdale Pretpostavljam da ti je Namdev pomogao, pa ja necu traziti u cemu je problem.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Zenon
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 09. 2011. (19:14:43)
Postovi: (2B1)16
Sarma: -
Lokacija: [tex]\pm\infty[/tex]

PostPostano: 13:39 pet, 20. 1. 2012    Naslov: Citirajte i odgovorite

[quote="vsego"][quote="Zenon"]Mislim, meni je jasno da n nije konstanta, ali mi je objašnjavao zašto se to ne smije.
To je tzv. "dinamičko alociranje niza" koje ćemo učiti u drugom semestru ( trenutno ni ja ne znam što je ni kako se pravilno izvodi ), ali je rekao da ga možemo i sada koristiti, ako znamo pravilno, iako se cilja na korištenje obrađenog gradiva.[/quote]

Ne, nije [b]to[/b] dinamicka alokacija. To spada u novije standarde C-a, sto mi iz nekih (recimo pedagoskih) razloga ovdje ne zelimo raditi. Dinamicka alokacija je nacin na koji cemo raditi nizove varijabilne duljine u drugom semestru, no smijete ju koristiti vec sada ako to radite ispravno (i, jasno, nije u koliziji s textom zadatka, npr. da nisu zabranjeni pomocni nizovi).

@Hubert Cumberdale Pretpostavljam da ti je Namdev pomogao, pa ja necu traziti u cemu je problem.[/quote]

Ispričavam se na netočnom objašnjenju.
Hvala na ispravci :)
vsego (napisa):
Zenon (napisa):
Mislim, meni je jasno da n nije konstanta, ali mi je objašnjavao zašto se to ne smije.
To je tzv. "dinamičko alociranje niza" koje ćemo učiti u drugom semestru ( trenutno ni ja ne znam što je ni kako se pravilno izvodi ), ali je rekao da ga možemo i sada koristiti, ako znamo pravilno, iako se cilja na korištenje obrađenog gradiva.


Ne, nije to dinamicka alokacija. To spada u novije standarde C-a, sto mi iz nekih (recimo pedagoskih) razloga ovdje ne zelimo raditi. Dinamicka alokacija je nacin na koji cemo raditi nizove varijabilne duljine u drugom semestru, no smijete ju koristiti vec sada ako to radite ispravno (i, jasno, nije u koliziji s textom zadatka, npr. da nisu zabranjeni pomocni nizovi).

@Hubert Cumberdale Pretpostavljam da ti je Namdev pomogao, pa ja necu traziti u cemu je problem.


Ispričavam se na netočnom objašnjenju.
Hvala na ispravci Smile



_________________
It's a wonderful, wonderful life!
[tex]\heartsuit \ \mathcal{PMF-MO} \ \heartsuit[/tex]
[tex]\mathbb Z\Sigma\mathbb N\emptyset\mathbb N[/tex]
[Vrh]
Korisnički profil Pošaljite privatnu poruku
celeste
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 31. 10. 2009. (11:56:09)
Postovi: (23)16
Sarma = la pohva - posuda
-2 = 1 - 3

PostPostano: 0:25 ned, 13. 1. 2013    Naslov: Citirajte i odgovorite

Jel bi mi molim vas netko mogao objasniti zashto je ovo beskonachna petlja? Mozhda sam preumorna i kasno je ali ne kuzhim stvarno.

[code:1]#include <stdio.h>
#include <stdlib.h>

int main(){
int i,d,k,a,b,c;
scanf("%d %d",&a,&b);
for(i=a;i<=b;i++){
c=1;
while(i>0){
k=i%12;
if(k%8==0) c=0;
i=i/12;}
if(c==0) printf("%d\n",i);}
return 0;
}
[/code:1]

[size=9][color=#999999]Added after 3 minutes:[/color][/size]

Isprichavam se, ovo je zadatak:
Napišite program koji učitava prirodne brojeve a i b, te u rastućem poretku ispisuje sve cijele brojeve koji se nalaze između a i b (uključivo i a i b), a u zapisu s bazom 12 imaju samo znamenke djeljive sa 8. Ispisane brojeve odvojite razmacima. Ako takvih brojeva nema, program ispisuje poruku "Nema takvih brojeva.". Pazite da tekst bude naveden točno kako piše (bez navodnika)!
Oprez: može biti a<b ili a>b ili a=b!
Jel bi mi molim vas netko mogao objasniti zashto je ovo beskonachna petlja? Mozhda sam preumorna i kasno je ali ne kuzhim stvarno.

Kod:
#include <stdio.h>
#include <stdlib.h>

int main(){
    int i,d,k,a,b,c;
    scanf("%d %d",&a,&b);
    for(i=a;i<=b;i++){
        c=1;
        while(i>0){
            k=i%12;
            if(k%8==0) c=0;
            i=i/12;}
        if(c==0) printf("%d\n",i);}
        return 0;
}


Added after 3 minutes:

Isprichavam se, ovo je zadatak:
Napišite program koji učitava prirodne brojeve a i b, te u rastućem poretku ispisuje sve cijele brojeve koji se nalaze između a i b (uključivo i a i b), a u zapisu s bazom 12 imaju samo znamenke djeljive sa 8. Ispisane brojeve odvojite razmacima. Ako takvih brojeva nema, program ispisuje poruku "Nema takvih brojeva.". Pazite da tekst bude naveden točno kako piše (bez navodnika)!
Oprez: može biti a<b ili a>b ili a=b!


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Atomised
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59)
Postovi: (399)16
Sarma = la pohva - posuda
70 = 95 - 25
Lokacija: Exotica

PostPostano: 0:38 ned, 13. 1. 2013    Naslov: Citirajte i odgovorite

Nisam detaljno gledao (niti uopće pročitao tekst zadatka) ali, ako ti je [tt]i[/tt] brojač u petlji, ovo [tt]i=i/12[/tt] unutar tijela petlje izgleda dosta sumnjivo. :)
Nisam detaljno gledao (niti uopće pročitao tekst zadatka) ali, ako ti je i brojač u petlji, ovo i=i/12 unutar tijela petlje izgleda dosta sumnjivo. Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
celeste
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 31. 10. 2009. (11:56:09)
Postovi: (23)16
Sarma = la pohva - posuda
-2 = 1 - 3

PostPostano: 0:45 ned, 13. 1. 2013    Naslov: Citirajte i odgovorite

hm... hvala. nije ni bitan tekst.

[size=9][color=#999999]Added after 6 minutes:[/color][/size]

mozhe savjet kako da doradim kod da mi ne rachuna samo za zadnju znamenku nego za svaku? ne znam kaj da probam vishe.

[code:1]#include <stdio.h>
#include <stdlib.h>

int main(){
int a,b,i,d,c=0,t,x=0;
scanf("%d %d",&a,&b);
if(a>b){
t=a;
a=b;
b=t;}
else{
for(i=a;i<=b;i++){
d=i%12;
if(d!=0){
if(d%8==0) {printf("%d ",i);x=1;}}}}
if(x==0) printf("Nema takvih brojeva.");
return 0;
}[/code:1]
hm... hvala. nije ni bitan tekst.

Added after 6 minutes:

mozhe savjet kako da doradim kod da mi ne rachuna samo za zadnju znamenku nego za svaku? ne znam kaj da probam vishe.

Kod:
#include <stdio.h>
#include <stdlib.h>

int main(){
    int a,b,i,d,c=0,t,x=0;
    scanf("%d %d",&a,&b);
    if(a>b){
        t=a;
        a=b;
        b=t;}
    else{
        for(i=a;i<=b;i++){
            d=i%12;
            if(d!=0){
                if(d%8==0) {printf("%d ",i);x=1;}}}}
                if(x==0) printf("Nema takvih brojeva.");
            return 0;
}


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 0:54 ned, 13. 1. 2013    Naslov: Citirajte i odgovorite

Spremi [tt]i[/tt] u neku pomocnu varijablu, pa onda nju dijeli s 12, kako je opisano u skripti i na vjezbama.
Spremi i u neku pomocnu varijablu, pa onda nju dijeli s 12, kako je opisano u skripti i na vjezbama.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
celeste
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 31. 10. 2009. (11:56:09)
Postovi: (23)16
Sarma = la pohva - posuda
-2 = 1 - 3

PostPostano: 19:14 pon, 14. 1. 2013    Naslov: Citirajte i odgovorite

Pomoch. Nisam bash sigurna jel do pointera ili do funkcije ili kaj mu je, ali za br mi vracha 0.
Napišite program koji učitava prirodni broj n≤17, te niz od n cijelih brojeva. Program treba ispisati sumu zadnjih 6 neparnih elemenata niza.
Ako neparnih brojeva ima manje od 6, ispišite sumu svih neparnih. Ako neparnih brojeva uopće nema u nizu, ispišite 0.

[code:1]#include <stdio.h>
#include <stdlib.h>

int broj(int x[],int n){
int i,br=0;
for(i=0;i<n;i++);{
if(x[i]%2==1) br=br+1;}
return br;
}
int main(){
unsigned int n;
scanf("%d",&n);
int x[18],s=0,i,a,br;
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
br=broj(x[i],n);
printf("%d\n",br);
if(br>=6){
for(i=n;i>n-7;i--){
a=0;
if(x[i]%2!=0) {s=s+x[i];a=1;}}}
if(br<6){
for(i=0;i<n;i++){
a=0;
if(x[i]%2!=0) {s=s+x[i];a=1;}}}

if(a==1) printf("%d,%d",s,br);
else printf("%d",0);
return 0;
}
[/code:1]
Pomoch. Nisam bash sigurna jel do pointera ili do funkcije ili kaj mu je, ali za br mi vracha 0.
Napišite program koji učitava prirodni broj n≤17, te niz od n cijelih brojeva. Program treba ispisati sumu zadnjih 6 neparnih elemenata niza.
Ako neparnih brojeva ima manje od 6, ispišite sumu svih neparnih. Ako neparnih brojeva uopće nema u nizu, ispišite 0.

Kod:
#include <stdio.h>
#include <stdlib.h>

int broj(int x[],int n){
    int i,br=0;
    for(i=0;i<n;i++);{
        if(x[i]%2==1) br=br+1;}
        return br;
}
int main(){
    unsigned int n;
    scanf("%d",&n);
    int x[18],s=0,i,a,br;
    for(i=0;i<n;i++){
    scanf("%d",&x[i]);}
    br=broj(x[i],n);
    printf("%d\n",br);
    if(br>=6){
        for(i=n;i>n-7;i--){
        a=0;
        if(x[i]%2!=0) {s=s+x[i];a=1;}}}
    if(br<6){
        for(i=0;i<n;i++){
            a=0;
            if(x[i]%2!=0) {s=s+x[i];a=1;}}}

    if(a==1) printf("%d,%d",s,br);
    else printf("%d",0);
    return 0;
}


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 19:20 pon, 14. 1. 2013    Naslov: Citirajte i odgovorite

Ajmo ovo
[code:1] for(i=0;i<n;i++){
scanf("%d",&x[i]);}
br=broj(x[i],n);[/code:1]
preglednije napisati:
[code:1] for(i=0;i<n;i++){
scanf("%d",&x[i]);
}
br=broj(x[i],n);[/code:1]
Je li sad jasno sto se dogadja? :)

Preporucam da pregledno uvlacite kod, jer tako sebi najvise olaksate.

P.S. Funkcija prima niz [tt]int[/tt]-ova, a saljes joj jedan (neinicijalizirani!) [tt]int[/tt]... ne razumijem ideju, ali to nikako ne moze biti dobro.
Ajmo ovo
Kod:
    for(i=0;i<n;i++){
    scanf("%d",&x[i]);}
    br=broj(x[i],n);

preglednije napisati:
Kod:
    for(i=0;i<n;i++){
        scanf("%d",&x[i]);
    }
    br=broj(x[i],n);

Je li sad jasno sto se dogadja? Smile

Preporucam da pregledno uvlacite kod, jer tako sebi najvise olaksate.

P.S. Funkcija prima niz int-ova, a saljes joj jedan (neinicijalizirani!) int... ne razumijem ideju, ali to nikako ne moze biti dobro.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
celeste
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 31. 10. 2009. (11:56:09)
Postovi: (23)16
Sarma = la pohva - posuda
-2 = 1 - 3

PostPostano: 20:54 pon, 14. 1. 2013    Naslov: Citirajte i odgovorite

Isprike, ali ne razumijem shto da napishem da bi funkcija primala niz intova a ne samo prvi. Ne mogu to nikak nachi ni u vjezhbama ni u predavanjima... Molim pomoch.
Isprike, ali ne razumijem shto da napishem da bi funkcija primala niz intova a ne samo prvi. Ne mogu to nikak nachi ni u vjezhbama ni u predavanjima... Molim pomoch.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 21:09 pon, 14. 1. 2013    Naslov: Citirajte i odgovorite

Predavanje 12 prof. Nogo (na webu kolegija), slideovi 10-11
Predavanje 12 prof. Singera (njegov web), slideovi 24-28
Skripta iz vjezbi, poglavlje 11.2.

Samo se normalno pozove:
[code:1]br = broj(x, n);[/code:1]

Inace, uopce ne trebaju 2 slucaja. Dosta je racunati sumu dok se ne prodje 6 neparnih brojeva ili dodje do pocetka niza. Slucajevi su navedeni kao objasnjenja, da bi zadatak bio dovoljno precizan.

Ovaj kod gore je koncipiran tako da ce traziti sumu neparnih brojeva medju elementima [tt]x[n][/tt], [tt]x[n-1][/tt],..., [tt]x[n-7+1][/tt], sto je zadnjih 7 (zapravo zadnjih 6, plus jedan nepostojeci) neparnih brojeva samo ako su svi neparni. Sto se ovog "nepostojeceg" tice, [tt]x[n][/tt] nema definiranu vrijednost.
Predavanje 12 prof. Nogo (na webu kolegija), slideovi 10-11
Predavanje 12 prof. Singera (njegov web), slideovi 24-28
Skripta iz vjezbi, poglavlje 11.2.

Samo se normalno pozove:
Kod:
br = broj(x, n);


Inace, uopce ne trebaju 2 slucaja. Dosta je racunati sumu dok se ne prodje 6 neparnih brojeva ili dodje do pocetka niza. Slucajevi su navedeni kao objasnjenja, da bi zadatak bio dovoljno precizan.

Ovaj kod gore je koncipiran tako da ce traziti sumu neparnih brojeva medju elementima x[n], x[n-1],..., x[n-7+1], sto je zadnjih 7 (zapravo zadnjih 6, plus jedan nepostojeci) neparnih brojeva samo ako su svi neparni. Sto se ovog "nepostojeceg" tice, x[n] nema definiranu vrijednost.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
celeste
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 31. 10. 2009. (11:56:09)
Postovi: (23)16
Sarma = la pohva - posuda
-2 = 1 - 3

PostPostano: 23:20 pon, 14. 1. 2013    Naslov: Citirajte i odgovorite

Hvala puno, jasnije mi je sad puno. :D Pojednostavnila sam kod, istina, nishta mi nije trebalo, ni dodatna funkcija ni for petlja. Sve radi, odlichno.
Hvala puno, jasnije mi je sad puno. Very Happy Pojednostavnila sam kod, istina, nishta mi nije trebalo, ni dodatna funkcija ni for petlja. Sve radi, odlichno.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
celeste
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 31. 10. 2009. (11:56:09)
Postovi: (23)16
Sarma = la pohva - posuda
-2 = 1 - 3

PostPostano: 18:23 uto, 15. 1. 2013    Naslov: Citirajte i odgovorite

Ne prihvacha mi aplikacija za zadache i ne mogu skuzhiti zashto iz inputa koji mi je poslan na mail jer je prevelik i ne vidi se previshe iz toga. Mozhe neki hint molim.
zadatak: Napišite program koji učitava prirodni broj n<131, te niz od n cijelih brojeva. Program treba pronaći najveći element niza djeljiv s 11, te u originalnom poretku ispisati indekse onih elementa niza kojima je prva znamenka jedna od znamenki pronađenog maksimuma.
Ako traženi maksimum ne postoji, program ne smije ništa ispisati. Ispisane brojeve odvojite razmacima.


[code:1] #include <stdio.h>
#include <stdlib.h>

int maxich(int x[],int n){
int i,max,t;
for(i=0;i<n;i++){
if(x[i]%11==0){
max=x[i];
t=i;
for(i=t+1;i<n;i++){
if(x[i]>max) max=x[i];}}}
return max;
}

void obrnuto(int x[],int n){
int i,c=0,m,d;
for(i=0;i<n;i++){
m=x[i];
c=0;
while(m>0){
d=m%10;
c=c*10+d;
m=m/10;}
x[i]=c;}
}



int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);
if(x[i]<0) x[i]=abs(x[i]);}
m=maxich(x,n);
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
m=t;
while(m>0){
if(m%10==x[i]%10 && x[i]!= t) {printf("%d ",i);break;}
m=m/10;}}
return 0;

}[/code:1]
Ne prihvacha mi aplikacija za zadache i ne mogu skuzhiti zashto iz inputa koji mi je poslan na mail jer je prevelik i ne vidi se previshe iz toga. Mozhe neki hint molim.
zadatak: Napišite program koji učitava prirodni broj n<131, te niz od n cijelih brojeva. Program treba pronaći najveći element niza djeljiv s 11, te u originalnom poretku ispisati indekse onih elementa niza kojima je prva znamenka jedna od znamenki pronađenog maksimuma.
Ako traženi maksimum ne postoji, program ne smije ništa ispisati. Ispisane brojeve odvojite razmacima.


Kod:
 #include <stdio.h>
#include <stdlib.h>

int maxich(int x[],int n){
    int i,max,t;
    for(i=0;i<n;i++){
        if(x[i]%11==0){
            max=x[i];
            t=i;
            for(i=t+1;i<n;i++){
                if(x[i]>max) max=x[i];}}}
                return max;
}

void obrnuto(int x[],int n){
    int i,c=0,m,d;
    for(i=0;i<n;i++){
        m=x[i];
        c=0;
        while(m>0){
            d=m%10;
            c=c*10+d;
            m=m/10;}
            x[i]=c;}
}



int main(){
    int n,i,x[131],max,t,d,m,z=0,c;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&x[i]);
        if(x[i]<0) x[i]=abs(x[i]);}
    m=maxich(x,n);
    t=m;
    obrnuto(x,n);
    for(i=0;i<n;i++){
        m=t;
        while(m>0){
        if(m%10==x[i]%10 && x[i]!= t) {printf("%d ",i);break;}
        m=m/10;}}
        return 0;

    }


[Vrh]
Korisnički profil Pošaljite privatnu poruku
El_Loco
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 05. 2012. (15:25:04)
Postovi: (31)16
Spol: muško
Sarma = la pohva - posuda
14 = 27 - 13

PostPostano: 18:43 uto, 15. 1. 2013    Naslov: Citirajte i odgovorite

u funkciji maxich ne provjeravaš djeljivost s 11 za brojeve nakon indexa t
u funkciji maxich ne provjeravaš djeljivost s 11 za brojeve nakon indexa t


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 19:32 uto, 15. 1. 2013    Naslov: Citirajte i odgovorite

Funkcija [tt]obrnuto()[/tt] je cisti vishak, no kad je vec tu, zasto ne bi bili prihvatljivi elementi niza koji, zapisani unatrag, daju maksimalnog djeljivog s 11 (ref. [tt]x[i]!= t[/tt])? :-k

Usput, nije rijesen slucaj kad u nizu nema brojeva djeljivih s 11.
Funkcija obrnuto() je cisti vishak, no kad je vec tu, zasto ne bi bili prihvatljivi elementi niza koji, zapisani unatrag, daju maksimalnog djeljivog s 11 (ref. x[i]!= t)? Think

Usput, nije rijesen slucaj kad u nizu nema brojeva djeljivih s 11.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
celeste
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 31. 10. 2009. (11:56:09)
Postovi: (23)16
Sarma = la pohva - posuda
-2 = 1 - 3

PostPostano: 21:15 uto, 15. 1. 2013    Naslov: Citirajte i odgovorite

A shto da vam kazhem, volim funkcije. Kada nijedan broj u nizu nije djeljiv s 11 program ne ispisuje nishta kao shto zadatak i kazhe.
Vech mi trechi put u mailu pishe da ne vrijedi za input 130 i onda 130 brojeva, pa jel mozhda bash zbog tog 130?
A shto da vam kazhem, volim funkcije. Kada nijedan broj u nizu nije djeljiv s 11 program ne ispisuje nishta kao shto zadatak i kazhe.
Vech mi trechi put u mailu pishe da ne vrijedi za input 130 i onda 130 brojeva, pa jel mozhda bash zbog tog 130?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 23:21 uto, 15. 1. 2013    Naslov: Citirajte i odgovorite

1. Ako niti jedan broj nije djeljiv s 11, [tt]maxich()[/tt] vraca vrijednost [b]neinicijalizirane[/b] varijable [tt]max[/tt], sto moze slucajno ispasti ok, a moze ispasti i lose.

2. Trazi se najveci medju brojevima djeljivima s 11, a ne najveci medju apsolutnim vrijednostima tih brojeva. Dakle, ne smiju se racunati apsolutne vrijednosti prije trazenja maksimuma.

Da elaboriram ovo o nepotrebnoj funkciji...
Sto se dobije kad broj (cjelobrojno) podijelimo s 10? Isti broj bez zadnje znamenke.
Sto se dobije kad taj rezultat opet (cjelobrojno) podijelimo s 10? Pocetni broj bez zadnje dvije znamenke.
...
Do kada tako? Dok nije ostala jedna znamenka.
Posto smo uzeli apsolutnu vrijednost, kako znamo da broj ima jednu znamenku? Tako da je manji od 10.

Dakle:
[code:1]function prva_zn(int x) {
while (x >= 10) x /= 10;
return x;
}[/code:1]
vraca prvu znamenku nenegativnog cijelog broja (ako [tt]x[/tt] moze biti i negativan, ubacimo na pocetak [tt]if (x < 0) x = -x;[/tt]). Jednostavno i bez mijenjanja niza.

Ako bude jos pitanja, molim zalijepiti aktualnu verziju programa, da ne pricamo napamet.
1. Ako niti jedan broj nije djeljiv s 11, maxich() vraca vrijednost neinicijalizirane varijable max, sto moze slucajno ispasti ok, a moze ispasti i lose.

2. Trazi se najveci medju brojevima djeljivima s 11, a ne najveci medju apsolutnim vrijednostima tih brojeva. Dakle, ne smiju se racunati apsolutne vrijednosti prije trazenja maksimuma.

Da elaboriram ovo o nepotrebnoj funkciji...
Sto se dobije kad broj (cjelobrojno) podijelimo s 10? Isti broj bez zadnje znamenke.
Sto se dobije kad taj rezultat opet (cjelobrojno) podijelimo s 10? Pocetni broj bez zadnje dvije znamenke.
...
Do kada tako? Dok nije ostala jedna znamenka.
Posto smo uzeli apsolutnu vrijednost, kako znamo da broj ima jednu znamenku? Tako da je manji od 10.

Dakle:
Kod:
function prva_zn(int x) {
  while (x >= 10) x /= 10;
  return x;
}

vraca prvu znamenku nenegativnog cijelog broja (ako x moze biti i negativan, ubacimo na pocetak if (x < 0) x = -x;). Jednostavno i bez mijenjanja niza.

Ako bude jos pitanja, molim zalijepiti aktualnu verziju programa, da ne pricamo napamet.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike


Zadnja promjena: vsego; 4:03 sri, 16. 1. 2013; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
celeste
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 31. 10. 2009. (11:56:09)
Postovi: (23)16
Sarma = la pohva - posuda
-2 = 1 - 3

PostPostano: 2:39 sri, 16. 1. 2013    Naslov: Citirajte i odgovorite

ne znam. ne znam gdje da stavim if(x<0) x[i]=-x[i] da funkcionira u ovom kodu.
[code:1]
int maxich(int x[],int n){
int i,max,t;
for(i=0;i<n;i++){
if(x[i]%11==0){
max=x[i];
t=i;
for(i=t+1;i<n;i++){
if(x[i]%11==0 && x[i]>max) max=x[i];}}}
return max;
}

void obrnuto(int x[],int n){
int i,c=0,m,d;
for(i=0;i<n;i++){
m=x[i];
c=0;
while(m>0){
d=m%10;
c=c*10+d;
m=m/10;}
x[i]=c;}
}



int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
m=maxich(x,n);
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
m=t;
while(m>0){
if(m%10==abs(x[i])%10) {printf("%d ",i);break;}
m=m/10;}}
return 0;

}[/code:1]

[size=9][color=#999999]Added after 11 minutes:[/color][/size]

ne razumijem zashto ovo nije dobro.
[code:1]int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
m=maxich(x,n);
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
if(x[i]<0) x[i]=abs(x[i]);
m=t;
while(m>0){
if(m%10==x[i]%10) {printf("%d ",i);break;}
m=m/10;}}[/code:1]
ne znam. ne znam gdje da stavim if(x<0) x[i]=-x[i] da funkcionira u ovom kodu.
Kod:

int maxich(int x[],int n){
    int i,max,t;
    for(i=0;i<n;i++){
        if(x[i]%11==0){
            max=x[i];
            t=i;
            for(i=t+1;i<n;i++){
                if(x[i]%11==0 && x[i]>max) max=x[i];}}}
                return max;
}

void obrnuto(int x[],int n){
    int i,c=0,m,d;
    for(i=0;i<n;i++){
        m=x[i];
        c=0;
        while(m>0){
            d=m%10;
            c=c*10+d;
            m=m/10;}
            x[i]=c;}
}



int main(){
    int n,i,x[131],max,t,d,m,z=0,c;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&x[i]);}
    m=maxich(x,n);
    t=m;
    obrnuto(x,n);
    for(i=0;i<n;i++){
        m=t;
        while(m>0){
        if(m%10==abs(x[i])%10) {printf("%d ",i);break;}
        m=m/10;}}
        return 0;

    }


Added after 11 minutes:

ne razumijem zashto ovo nije dobro.
Kod:
int main(){
    int n,i,x[131],max,t,d,m,z=0,c;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&x[i]);}
    m=maxich(x,n);
    t=m;
    obrnuto(x,n);
    for(i=0;i<n;i++){
        if(x[i]<0) x[i]=abs(x[i]);
        m=t;
        while(m>0){
        if(m%10==x[i]%10) {printf("%d ",i);break;}
        m=m/10;}}


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 2:41 sri, 16. 1. 2013    Naslov: Citirajte i odgovorite

Ovo nikako nije dobro, jer [tt]obrnuto()[/tt] nece okrenuti negativne brojeve (vidi uvjet petlje).

Mozes:
1. neposredno nakon poziva [tt]maxich()[/tt] dodati petlju koja [tt]x[i][/tt] postavlja na apsolutne vrijednosti, ili
2. racunati apsolutnu vrijednost prije okretanja (u [tt]obrnuto()[/tt]).

Ima jos par mjesta/nacina, no mislim da su ova dva najjednostavniji.
Ovo nikako nije dobro, jer obrnuto() nece okrenuti negativne brojeve (vidi uvjet petlje).

Mozes:
1. neposredno nakon poziva maxich() dodati petlju koja x[i] postavlja na apsolutne vrijednosti, ili
2. racunati apsolutnu vrijednost prije okretanja (u obrnuto()).

Ima jos par mjesta/nacina, no mislim da su ova dva najjednostavniji.



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
celeste
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 31. 10. 2009. (11:56:09)
Postovi: (23)16
Sarma = la pohva - posuda
-2 = 1 - 3

PostPostano: 3:16 sri, 16. 1. 2013    Naslov: Citirajte i odgovorite

ovo je za neposredno nakon maxich, ne radi ako nijedan chlan u nizu nije pozitivan i djeljiv s 11, tj. ne radi za negativne.
[code:1]int main(){
int n,i,x[131],max,t,d,m,z=0,c;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);}
m=maxich(x,n);
for(i=0;i<n;i++){
if(x[i]<0) x[i]=-x[i];}
t=m;
obrnuto(x,n);
for(i=0;i<n;i++){
m=t;
while(m>0){
if(m%10==x[i]%10) {printf("%d ",i);break;}
m=m/10;}}
return 0;

}[/code:1]

[size=9][color=#999999]Added after 4 minutes:[/color][/size]

Ovo je u obrnuto, isto ne radi ako nema chlana koji je pozitivan i djeljiv s 11.

[code:1]void obrnuto(int x[],int n){
int i,c=0,m,d;
for(i=0;i<n;i++){
if(x[i]<0) x[i]=-x[i];
m=x[i];
c=0;
while(m>0){
d=m%10;
c=c*10+d;
m=m/10;}
x[i]=c;}
}[/code:1]
ovo je za neposredno nakon maxich, ne radi ako nijedan chlan u nizu nije pozitivan i djeljiv s 11, tj. ne radi za negativne.
Kod:
int main(){
    int n,i,x[131],max,t,d,m,z=0,c;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&x[i]);}
    m=maxich(x,n);
    for(i=0;i<n;i++){
        if(x[i]<0) x[i]=-x[i];}
    t=m;
    obrnuto(x,n);
    for(i=0;i<n;i++){
        m=t;
        while(m>0){
        if(m%10==x[i]%10) {printf("%d ",i);break;}
        m=m/10;}}
        return 0;

    }


Added after 4 minutes:

Ovo je u obrnuto, isto ne radi ako nema chlana koji je pozitivan i djeljiv s 11.

Kod:
void obrnuto(int x[],int n){
    int i,c=0,m,d;
    for(i=0;i<n;i++){
        if(x[i]<0) x[i]=-x[i];
        m=x[i];
        c=0;
        while(m>0){
            d=m%10;
            c=c*10+d;
            m=m/10;}
            x[i]=c;}
}


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3562)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 4:02 sri, 16. 1. 2013    Naslov: Citirajte i odgovorite

U oba slucaja si zaboravila izvuci apsolutnu vrijednost od [tt]m[/tt] (treba ti [tex]|\max x_i|[/tex], sto je razlicito od [tex]\max |x_i|[/tex] kojeg si prije racunala).

Ostaje moja stara opaska da ti ne radi ispravno (iako moze slucajno dati tocan rezultat) niti ako nema ucitanih brojeva djeljivih s 11.

Predlazem da ne krpas, nego slozis ispocetka. Evo skica:

0. m = 1;

1. ucitati brojeve; usput (dakle, odmah iza [tt]scanf()[/tt], u istoj petlji) provjeravati djeljivost s 11:
[tt]if (x[i] % 11 == 0 && (m == 1 || x[i] > m)) m = x[i];[/tt]
Ovdje koristim da 1 nije djeljiv s 11, pa mi [tt]m == 1[/tt] zapravo znaci "do sada nije nadjen broj djeljiv s 11".
Uz tu interpretaciju, uvjet [tt]if[/tt]-a znaci "ako je ucitani broj djeljiv s 11 i a) to je prvi takav; ili b) veci je od dosad najveceg".

2. ako je [tt]m != 1[/tt] (dakle, postoji neki djeljiv s 11), protrci po svim brojevima i provjeri im prvu znamenku (pomocu funkcije koju sam gore naveo; dodaj joj racunanje apsolutne vrijednosti, tako da u nizu stalno imas originalne brojeve, sto je i inace dobra praxa ako zadatak bas ne trazi da ih se mijenja).

I to je to. Bitno jednostavnije, a mislim da je jednostavnost bitna i za razumijevanje i za kolokvij (manje koda = manje gresaka i brze se napise).
U oba slucaja si zaboravila izvuci apsolutnu vrijednost od m (treba ti [tex]|\max x_i|[/tex], sto je razlicito od [tex]\max |x_i|[/tex] kojeg si prije racunala).

Ostaje moja stara opaska da ti ne radi ispravno (iako moze slucajno dati tocan rezultat) niti ako nema ucitanih brojeva djeljivih s 11.

Predlazem da ne krpas, nego slozis ispocetka. Evo skica:

0. m = 1;

1. ucitati brojeve; usput (dakle, odmah iza scanf(), u istoj petlji) provjeravati djeljivost s 11:
if (x[i] % 11 == 0 && (m == 1 || x[i] > m)) m = x[i];
Ovdje koristim da 1 nije djeljiv s 11, pa mi m == 1 zapravo znaci "do sada nije nadjen broj djeljiv s 11".
Uz tu interpretaciju, uvjet if-a znaci "ako je ucitani broj djeljiv s 11 i a) to je prvi takav; ili b) veci je od dosad najveceg".

2. ako je m != 1 (dakle, postoji neki djeljiv s 11), protrci po svim brojevima i provjeri im prvu znamenku (pomocu funkcije koju sam gore naveo; dodaj joj racunanje apsolutne vrijednosti, tako da u nizu stalno imas originalne brojeve, sto je i inace dobra praxa ako zadatak bas ne trazi da ih se mijenja).

I to je to. Bitno jednostavnije, a mislim da je jednostavnost bitna i za razumijevanje i za kolokvij (manje koda = manje gresaka i brze se napise).



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Idite na Prethodno  1, 2, 3 ... 8, 9, 10, 11, 12, 13  Sljedeće
Stranica 9 / 13.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan