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

Prek(r)asno ispisivanje (zadatak)
WWW:

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
Zenon
Forumaš(ica)
Forumaš(ica)


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

PostPostano: 17:03 sub, 12. 11. 2011    Naslov: Prek(r)asno ispisivanje Citirajte i odgovorite

Pozdrav.
Zadatak:
Napišite program koji učitava 8 cijelih brojeva, te ispisuje svakog koji je djeljiv s prethodno upisanim (prvi se nikad ne ispisuje).
Ispisane brojeve odvojite razmacima (program ih smijete ispisivati i za vrijeme učitavanja), a ako traženih brojeva nema, program ne smije ništa ispisati.

Uputa: Program riješite pomoću petlje (iako se može i učitavanjem 8 varijabli). Pazite na dijeljenje s nulom!

Moj kod (kojeg je aplikacija za zadaću prihvatila kao točnog):
[code:1]#include<stdio.h>
int main(void)
{
int a,b,brojac=1;
scanf(" %d ",&a);
do
{
scanf(" %d ",&b);
if(b==0 && a!=0) printf(" %d ",b);
if(b!=0 && a!=0 && b%a==0) printf(" %d ",b);
a=b;
brojac++;
}while(brojac<8);
return 0;
}[/code:1]

I recimo upišem 5 ENTER 10 ENTER i on mi ne izbaci ništa, a trebao bi 10, dok ako upišem 5 ENTER 10 ENTER i onda bilo koji drugi broj, onda mi tek ispiše 10.
Kako se riješiti toga kašnjenja i gdje sam pogriješio u programu?

I još jedno tehničko pitanje:
Je li pravilnije
[code:1]if(b!=0 && a!=0 && b%a==0) printf("%d",b);[/code:1]
ili
[code:1]if (b!=0 && a!=0)
{
if (b%a==0) printf("%d",b);
}[/code:1]

Ili je svejedno?
Pozdrav.
Zadatak:
Napišite program koji učitava 8 cijelih brojeva, te ispisuje svakog koji je djeljiv s prethodno upisanim (prvi se nikad ne ispisuje).
Ispisane brojeve odvojite razmacima (program ih smijete ispisivati i za vrijeme učitavanja), a ako traženih brojeva nema, program ne smije ništa ispisati.

Uputa: Program riješite pomoću petlje (iako se može i učitavanjem 8 varijabli). Pazite na dijeljenje s nulom!

Moj kod (kojeg je aplikacija za zadaću prihvatila kao točnog):
Kod:
#include<stdio.h>
int main(void)
{
    int a,b,brojac=1;
    scanf(" %d ",&a);
    do
    {
        scanf(" %d ",&b);
        if(b==0 && a!=0) printf(" %d ",b);
        if(b!=0 && a!=0 && b%a==0) printf(" %d ",b);
        a=b;
        brojac++;
    }while(brojac<8);
    return 0;
}


I recimo upišem 5 ENTER 10 ENTER i on mi ne izbaci ništa, a trebao bi 10, dok ako upišem 5 ENTER 10 ENTER i onda bilo koji drugi broj, onda mi tek ispiše 10.
Kako se riješiti toga kašnjenja i gdje sam pogriješio u programu?

I još jedno tehničko pitanje:
Je li pravilnije
Kod:
if(b!=0 && a!=0 && b%a==0) printf("%d",b);

ili
Kod:
if (b!=0 && a!=0)
{
    if (b%a==0) printf("%d",b);
}


Ili je svejedno?


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


Pridružen/a: 15. 05. 2010. (18:46:07)
Postovi: (164)16
Sarma: -

PostPostano: 18:19 sub, 12. 11. 2011    Naslov: Re: Prek(r)asno ispisivanje Citirajte i odgovorite

Program te zeza zbog sljedeće linije:

[code:1]scanf(" %d ",&b);[/code:1]

Ako makneš ovaj razmak što se nalazi poslije [i]%d[/i], program će ti raditi. Nije baš svejedno gdje ubacuješ razmake unutar prvog argumenta za [i]scanf[/i] (zapravo mu taj razmak znači da program očekuje dodatno učitavanje), pa tu pripazi malo.
(Možda sam te ja zbunio kad sam ti to jednom spomenuo prije - ispričavam se i ignoriraj to dok ne budeš učio znakove i stringove. :P Osim ako te stvarno zanima na što sam mislio. :P)

Što se tiče drugog pitanja - isto ti je. U prvom primjeru program gleda jesu li sva tri uvjeta zadovoljena pa, ako jesu, prelazi na ispis. U drugom primjeru gleda jesu li prva dva zadovoljena, pa ako jesu, je li i treći ispunjen pa, ako jest, ispisuje. Dakle, isto je. :)
Program te zeza zbog sljedeće linije:

Kod:
scanf(" %d ",&b);


Ako makneš ovaj razmak što se nalazi poslije %d, program će ti raditi. Nije baš svejedno gdje ubacuješ razmake unutar prvog argumenta za scanf (zapravo mu taj razmak znači da program očekuje dodatno učitavanje), pa tu pripazi malo.
(Možda sam te ja zbunio kad sam ti to jednom spomenuo prije - ispričavam se i ignoriraj to dok ne budeš učio znakove i stringove. Razz Osim ako te stvarno zanima na što sam mislio. Razz)

Što se tiče drugog pitanja - isto ti je. U prvom primjeru program gleda jesu li sva tri uvjeta zadovoljena pa, ako jesu, prelazi na ispis. U drugom primjeru gleda jesu li prva dva zadovoljena, pa ako jesu, je li i treći ispunjen pa, ako jest, ispisuje. Dakle, isto je. Smile


[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: 18:41 sub, 12. 11. 2011    Naslov: Re: Prek(r)asno ispisivanje Citirajte i odgovorite

[quote="Phoenix"]Program te zeza zbog sljedeće linije:

[code:1]scanf(" %d ",&b);[/code:1]

Ako makneš ovaj razmak što se nalazi poslije [i]%d[/i], program će ti raditi. Nije baš svejedno gdje ubacuješ razmake unutar prvog argumenta za [i]scanf[/i] (zapravo mu taj razmak znači da program očekuje dodatno učitavanje), pa tu pripazi malo.
(Možda sam te ja zbunio kad sam ti to jednom spomenuo prije - ispričavam se i ignoriraj to dok ne budeš učio znakove i stringove. :P Osim ako te stvarno zanima na što sam mislio. :P)

Što se tiče drugog pitanja - isto ti je. U prvom primjeru program gleda jesu li sva tri uvjeta zadovoljena pa, ako jesu, prelazi na ispis. U drugom primjeru gleda jesu li prva dva zadovoljena, pa ako jesu, je li i treći ispunjen pa, ako jest, ispisuje. Dakle, isto je. :)[/quote]

Hvala kolega ! Ok, onda ću maknuti drugi razmak. I to je to. Mislim da mi je čak i jasno, koliko može biti, ovo što si rekao.
Jučer nisam uspio, a dns sam si uzeo papir i na njega pisao prosto seljački kako kad šta i kad sam skužio, bilo mi je lako napraviti ga do kraja. A vidio si onaj kaos jučer xD
Phoenix (napisa):
Program te zeza zbog sljedeće linije:

Kod:
scanf(" %d ",&b);


Ako makneš ovaj razmak što se nalazi poslije %d, program će ti raditi. Nije baš svejedno gdje ubacuješ razmake unutar prvog argumenta za scanf (zapravo mu taj razmak znači da program očekuje dodatno učitavanje), pa tu pripazi malo.
(Možda sam te ja zbunio kad sam ti to jednom spomenuo prije - ispričavam se i ignoriraj to dok ne budeš učio znakove i stringove. Razz Osim ako te stvarno zanima na što sam mislio. Razz)

Što se tiče drugog pitanja - isto ti je. U prvom primjeru program gleda jesu li sva tri uvjeta zadovoljena pa, ako jesu, prelazi na ispis. U drugom primjeru gleda jesu li prva dva zadovoljena, pa ako jesu, je li i treći ispunjen pa, ako jest, ispisuje. Dakle, isto je. Smile


Hvala kolega ! Ok, onda ću maknuti drugi razmak. I to je to. Mislim da mi je čak i jasno, koliko može biti, ovo što si rekao.
Jučer nisam uspio, a dns sam si uzeo papir i na njega pisao prosto seljački kako kad šta i kad sam skužio, bilo mi je lako napraviti ga do kraja. A vidio si onaj kaos jučer xD


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


Pridružen/a: 15. 05. 2010. (18:46:07)
Postovi: (164)16
Sarma: -

PostPostano: 19:20 sub, 12. 11. 2011    Naslov: Re: Prek(r)asno ispisivanje Citirajte i odgovorite

Ako te zanima nešto više o tome, pogledaj ovu prezentaciju: [url=http://web.math.hr/~singer/P1_1011/11.pdf]LINK[/url] (od 20. do 44. slidea). Ne moraš predetaljno čitati, ionako ćete to učiti; samo baci oko da vidiš kako se sve funkcija [i]scanf[/i] može ponašati. :)
(Iskreno, nisam sasvim siguran oko ovoga razmaka koji je tebi višak, pa ti zato ne znam dobro objasniti. :oops: Ali eto, znam da kvari situaciju, barem nešto. :P)

Tako se i radi - probaj protumačiti kako da program shvati i radi ono što ti želiš pa onda to otipkaj. To se zove smišljanje algoritama - nakon toga je pisanje kodova, ako znaš sintaksu, lagana stvar. :)
Ako te zanima nešto više o tome, pogledaj ovu prezentaciju: LINK (od 20. do 44. slidea). Ne moraš predetaljno čitati, ionako ćete to učiti; samo baci oko da vidiš kako se sve funkcija scanf može ponašati. Smile
(Iskreno, nisam sasvim siguran oko ovoga razmaka koji je tebi višak, pa ti zato ne znam dobro objasniti. Embarassed Ali eto, znam da kvari situaciju, barem nešto. Razz)

Tako se i radi - probaj protumačiti kako da program shvati i radi ono što ti želiš pa onda to otipkaj. To se zove smišljanje algoritama - nakon toga je pisanje kodova, ako znaš sintaksu, lagana stvar. Smile


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


Pridružen/a: 09. 11. 2011. (23:47:51)
Postovi: (2)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 0:37 uto, 15. 11. 2011    Naslov: Citirajte i odgovorite

Imam i ja problem s tom zadacom, a nisam znala gdje da pitam da sam se tu skrpala :oops:

4. Napišite program koji učitava 8 realnih brojeva, te ispisuje umnožak broja koji ima najveću apsolutnu vrijednost s brojem koji ima najmanju apsolutnu vrijednost. Ako dva broja imaju jednaku apsolutnu vrijednost, za većeg/manjeg uzimate onog koji je prije učitan.
Rezultat obavezno ispišite koristeći format %g!

#include <stdio.h>
int main ()
{
double a,b,c,d,e,f,g,h;
double A,B,C,D,E,F,G,H;
double M,m,u;
scanf( "%lg" "%lg" "%lg" "%lg" "%lg" "%lg" "%lg" "%lg", &a,&b,&c,&d,&e,&f,&g,&h);

A= (a>0 ? a : -a);
B= (b>0 ? b : -b);
C= (c>0 ? c : -c);
D= (d>0 ? d : -d);
E= (e>0 ? e : -e);
F= (f>0 ? f : -f);
G= (g>0 ? g : -g);
H= (h>0 ? h : -h);

if (A>=B && A>=C && A>=D && A>=E && A>=G && A>=H) M=a;
else if (B>=C && B>=D && B>=E && B>=G && B>=H ) M=b;
else if (C>=D && C>=E && C>=G && C>=H ) M=c;
else if (D>=E && D>=G && D>=H ) M=d;
else if (E>=G && E>=H ) M=e;
else if (G>=H) M=g;
else M=h;

if (A<=B && A<=C && A<=D && A<=E && A<=G && A<=H) m=a;
else if (B<=C && B<=D && B<=E && B<=G && B<=H ) m=b;
else if (C<=D && C<=E && C<=G && C<=H ) m=c;
else if (D<=E && D<=G && D<=H ) m=d;
else if (E<=G && E<=H ) m=e;
else if (G<=H) m=g;
else m=h;

u= M*m;
printf ("%g", u);
return 0;
}

meni normalno radi, (bar one primjere koje sam ja ukucavala), a zadaca mi ga ne prihvaca :cry:
Imam i ja problem s tom zadacom, a nisam znala gdje da pitam da sam se tu skrpala Embarassed

4. Napišite program koji učitava 8 realnih brojeva, te ispisuje umnožak broja koji ima najveću apsolutnu vrijednost s brojem koji ima najmanju apsolutnu vrijednost. Ako dva broja imaju jednaku apsolutnu vrijednost, za većeg/manjeg uzimate onog koji je prije učitan.
Rezultat obavezno ispišite koristeći format %g!

#include <stdio.h>
int main ()
{
double a,b,c,d,e,f,g,h;
double A,B,C,D,E,F,G,H;
double M,m,u;
scanf( "%lg" "%lg" "%lg" "%lg" "%lg" "%lg" "%lg" "%lg", &a,&b,&c,&d,&e,&f,&g,&h);

A= (a>0 ? a : -a);
B= (b>0 ? b : -b);
C= (c>0 ? c : -c);
D= (d>0 ? d : -d);
E= (e>0 ? e : -e);
F= (f>0 ? f : -f);
G= (g>0 ? g : -g);
H= (h>0 ? h : -h);

if (A>=B && A>=C && A>=D && A>=E && A>=G && A>=H) M=a;
else if (B>=C && B>=D && B>=E && B>=G && B>=H ) M=b;
else if (C>=D && C>=E && C>=G && C>=H ) M=c;
else if (D>=E && D>=G && D>=H ) M=d;
else if (E>=G && E>=H ) M=e;
else if (G>=H) M=g;
else M=h;

if (A<=B && A<=C && A<=D && A<=E && A<=G && A<=H) m=a;
else if (B<=C && B<=D && B<=E && B<=G && B<=H ) m=b;
else if (C<=D && C<=E && C<=G && C<=H ) m=c;
else if (D<=E && D<=G && D<=H ) m=d;
else if (E<=G && E<=H ) m=e;
else if (G<=H) m=g;
else m=h;

u= M*m;
printf ("%g", u);
return 0;
}

meni normalno radi, (bar one primjere koje sam ja ukucavala), a zadaca mi ga ne prihvaca Crying or Very sad


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


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

PostPostano: 0:48 uto, 15. 11. 2011    Naslov: Citirajte i odgovorite

Zadaca ti kaze na kojem primjeru pada.

NHF, ali nemam namjeru analizirati ovaj monstrosity od koda, pogotovo sto nije u code-bloku.

Preporucam da rijesis ponovo, s petljom, jer ovo stvarno nema smisla.

[b]Edit:[/b] Slucajno opazih: pogubila si [tt]f[/tt] i [tt]F[/tt]. I dalje preporucam da to rijesis petljom, jer svrha zadace nije "provuci se", nego "nauciti".
Zadaca ti kaze na kojem primjeru pada.

NHF, ali nemam namjeru analizirati ovaj monstrosity od koda, pogotovo sto nije u code-bloku.

Preporucam da rijesis ponovo, s petljom, jer ovo stvarno nema smisla.

Edit: Slucajno opazih: pogubila si f i F. I dalje preporucam da to rijesis petljom, jer svrha zadace nije "provuci se", nego "nauciti".



_________________
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
dodoria
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 04. 10. 2011. (13:31:15)
Postovi: (E)16
Sarma = la pohva - posuda
-3 = 0 - 3

PostPostano: 1:14 pet, 30. 12. 2011    Naslov: Citirajte i odgovorite

Ovako, budući da ne znam još koristiti program koji omogućuje pisanje matematičkih izraza (stvarno moram to srediti), onda bih molio nekoga da pogleda zadatak 11.3.5. iz skripte Vježbe (prog1-Šego). :/

Kod: #include<stdio.h>
int main(void)
{
double a[20], p, q, c, x;
int i, m, n, j;
printf("m= ");

scanf("%d", &m);

printf("n= ");
scanf("%d", &n);

for(i=0; i<=m+n; ++i)
{
printf("a[%d]= ", i);
scanf("%lg", &a[i]);
}

x=a[0];
p=0;
for(j=n-1; j>=0; --j)
{
p=p*x+a[j+1];
p=p*x;
}

q=0;
for(j=m-1; j>=0; --j)
{
q=q*x+a[j+n+1];
q=q*x;
}

c=p/q;
printf("%g", c);
return 0;
}

Program, naime, za m=3 i n=2 treba ispisat 1.0811, a moj ispisuje 0.88...
Najgore je što je greška tu negdje, a on ništa ne javlja.
Ovako, budući da ne znam još koristiti program koji omogućuje pisanje matematičkih izraza (stvarno moram to srediti), onda bih molio nekoga da pogleda zadatak 11.3.5. iz skripte Vježbe (prog1-Šego). Ehm?

Kod: #include<stdio.h>
int main(void)
{
double a[20], p, q, c, x;
int i, m, n, j;
printf("m= ");

scanf("%d", &m);

printf("n= ");
scanf("%d", &n);

for(i=0; i⇐m+n; ++i)
{
printf("a[%d]= ", i);
scanf("%lg", &a[i]);
}

x=a[0];
p=0;
for(j=n-1; j>=0; –j)
{
p=p*x+a[j+1];
p=p*x;
}

q=0;
for(j=m-1; j>=0; –j)
{
q=q*x+a[j+n+1];
q=q*x;
}

c=p/q;
printf("%g", c);
return 0;
}

Program, naime, za m=3 i n=2 treba ispisat 1.0811, a moj ispisuje 0.88...
Najgore je što je greška tu negdje, a on ništa ne javlja.



_________________
Dokaži.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
jema
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 10:48 pet, 30. 12. 2011    Naslov: Citirajte i odgovorite

moze mi neko lijepo pojasnit varijabilne parametre XD sto je nagore, znam rijesit sve zadatke s funkcijama i sad krenem na nizove i dodjem do zad. 11.2.5. i pogubim se u 'tim varijabilnim parametrima' jer mi jos nije sjelo u glavu sto to tocno znaci XD evo ovako sam ja nekako napisala taj zadatak, al ne radi naravno XD pa ako mi netko preko tog zadatka moze objasnit lijepo te varijabilne parametre da kad procitam te 2 rijeci odmah u glavi znam sta i kako :) hvala liiipo :D
i jos, u ovom zadatku mi za funkciju min i max kaze (konkretno za red 7) invalid operands to binary... pa eto ak i to moze neko objasnit :) opet, hvala :)


#include <stdio.h>

double min(double niz[], int n)
{
int i;
for (i=0; i<n; ++i)
if (niz[i]<min) min=niz[i];

return min;
}

double max(double niz [], int n)
{
int i;
for (i=0; i<n; ++i)
if (niz[i]>max) max=niz[i];

return max;
}

void fmin(double *mini, double niz[], int n)
{
*mini=min(niz,n);
printf("minimum je %lf. \n", *mini);
}

void fmax(double *maxi, double niz[], int n)
{
*maxi=max(niz,n);
printf("maximum je %lf. \n", *maxi);
}

double f(double niz[], int n)
{
int i;
double suma=0.0;

for (i=0; i<n; ++i) suma+=niz[i];

return suma;

fmin(&suma,niz,n);
fmax(&suma,niz,n);

}

int main (void)
{
int n,i;
double niz[100];

printf("Upisi n: ");
scanf("%d", &n);

for (i=0; i<n; ++i)
{
printf("Upisi %d. clan: ",i+1);
scanf("%lf", &niz[i]);
}

printf("suma je %lf. \n", f(niz,n));

return 0;
}
moze mi neko lijepo pojasnit varijabilne parametre XD sto je nagore, znam rijesit sve zadatke s funkcijama i sad krenem na nizove i dodjem do zad. 11.2.5. i pogubim se u 'tim varijabilnim parametrima' jer mi jos nije sjelo u glavu sto to tocno znaci XD evo ovako sam ja nekako napisala taj zadatak, al ne radi naravno XD pa ako mi netko preko tog zadatka moze objasnit lijepo te varijabilne parametre da kad procitam te 2 rijeci odmah u glavi znam sta i kako Smile hvala liiipo Very Happy
i jos, u ovom zadatku mi za funkciju min i max kaze (konkretno za red 7) invalid operands to binary... pa eto ak i to moze neko objasnit Smile opet, hvala Smile


#include <stdio.h>

double min(double niz[], int n)
{
int i;
for (i=0; i<n; ++i)
if (niz[i]<min) min=niz[i];

return min;
}

double max(double niz [], int n)
{
int i;
for (i=0; i<n; ++i)
if (niz[i]>max) max=niz[i];

return max;
}

void fmin(double *mini, double niz[], int n)
{
*mini=min(niz,n);
printf("minimum je %lf. \n", *mini);
}

void fmax(double *maxi, double niz[], int n)
{
*maxi=max(niz,n);
printf("maximum je %lf. \n", *maxi);
}

double f(double niz[], int n)
{
int i;
double suma=0.0;

for (i=0; i<n; ++i) suma+=niz[i];

return suma;

fmin(&suma,niz,n);
fmax(&suma,niz,n);

}

int main (void)
{
int n,i;
double niz[100];

printf("Upisi n: ");
scanf("%d", &n);

for (i=0; i<n; ++i)
{
printf("Upisi %d. clan: ",i+1);
scanf("%lf", &niz[i]);
}

printf("suma je %lf. \n", f(niz,n));

return 0;
}


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


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 18:56 pet, 30. 12. 2011    Naslov: Citirajte i odgovorite

dodoria, evo ti 11.3.5 zad... :)

#include <stdio.h>

int main (void)
{
int m,n,i;
double a[100],x,p,brojnik,nazivnik;

printf("Upisi n: "); scanf("%d", &n);
printf("Upisi m: "); scanf("%d", &m);

for (i=0; i<=m+n; ++i)
{
printf("Upisi a%d: ", i);
scanf("%lf", &a[i]);
}

printf ("\n");

x=a[0];

p=0;
for (i=m-1; i>=0; --i)
p=p*x+a[i+1];
p=p*x;

brojnik=p;

p=0;
for (i=n-1; i>=0; --i)
p=p*x+a[i+m+1];
p*=x;

nazivnik=p;

printf("\n");

printf("p(%lf)= %lf", x, brojnik/nazivnik);

return 0;

}
dodoria, evo ti 11.3.5 zad... Smile

#include <stdio.h>

int main (void)
{
int m,n,i;
double a[100],x,p,brojnik,nazivnik;

printf("Upisi n: "); scanf("%d", &n);
printf("Upisi m: "); scanf("%d", &m);

for (i=0; i⇐m+n; ++i)
{
printf("Upisi a%d: ", i);
scanf("%lf", &a[i]);
}

printf ("\n");

x=a[0];

p=0;
for (i=m-1; i>=0; –i)
p=p*x+a[i+1];
p=p*x;

brojnik=p;

p=0;
for (i=n-1; i>=0; –i)
p=p*x+a[i+m+1];
p*=x;

nazivnik=p;

printf("\n");

printf("p(%lf)= %lf", x, brojnik/nazivnik);

return 0;

}


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


Pridružen/a: 19. 05. 2010. (08:43:59)
Postovi: (1B2)16
Spol: zombi
Sarma = la pohva - posuda
64 = 72 - 8

PostPostano: 19:16 pet, 30. 12. 2011    Naslov: Citirajte i odgovorite

[quote="jema"]moze mi neko lijepo pojasnit varijabilne parametre XD sto je nagore, znam rijesit sve zadatke s funkcijama i sad krenem na nizove i dodjem do zad. 11.2.5. i pogubim se u 'tim varijabilnim parametrima' jer mi jos nije sjelo u glavu sto to tocno znaci XD evo ovako sam ja nekako napisala taj zadatak, al ne radi naravno XD pa ako mi netko preko tog zadatka moze objasnit lijepo te varijabilne parametre da kad procitam te 2 rijeci odmah u glavi znam sta i kako :) hvala liiipo :D
i jos, u ovom zadatku mi za funkciju min i max kaze (konkretno za red 7) invalid operands to binary... pa eto ak i to moze neko objasnit :) opet, hvala :)


#include <stdio.h>

double min(double niz[], int n)
{
int i;
for (i=0; i<n; ++i)
if (niz[i]<min) min=niz[i];

return min;
}

double max(double niz [], int n)
{
int i;
for (i=0; i<n; ++i)
if (niz[i]>max) max=niz[i];

return max;
}

void fmin(double *mini, double niz[], int n)
{
*mini=min(niz,n);
printf("minimum je %lf. \n", *mini);
}

void fmax(double *maxi, double niz[], int n)
{
*maxi=max(niz,n);
printf("maximum je %lf. \n", *maxi);
}

double f(double niz[], int n)
{
int i;
double suma=0.0;

for (i=0; i<n; ++i) suma+=niz[i];

return suma;

fmin(&suma,niz,n);
fmax(&suma,niz,n);

}

int main (void)
{
int n,i;
double niz[100];

printf("Upisi n: ");
scanf("%d", &n);

for (i=0; i<n; ++i)
{
printf("Upisi %d. clan: ",i+1);
scanf("%lf", &niz[i]);
}

printf("suma je %lf. \n", f(niz,n));

return 0;
}[/quote]
Prije svega pogledaj si malo koliki ti je min kad udjes u funkciju min...?
Nemas niti int min, a niti inicijalizaciju, a u for petlji radis usporedbu s njima...
U funkciji f imas return suma, i nakon toga dva poziva do kojih nikad nece doci...

I sad kad sam pogledao cijeli program...pitanje:
Pozivas funkciju u kojoj racunas sumu cijelog niza, te tu sumu saljes u fmin i fmax...Prvo je promjenis u minimum, pa zatim u maximum i vratis je nazad...? Nest tu nije bas uredu, ali bez teksta zadatka tesko je odgonetnuti sto...
jema (napisa):
moze mi neko lijepo pojasnit varijabilne parametre XD sto je nagore, znam rijesit sve zadatke s funkcijama i sad krenem na nizove i dodjem do zad. 11.2.5. i pogubim se u 'tim varijabilnim parametrima' jer mi jos nije sjelo u glavu sto to tocno znaci XD evo ovako sam ja nekako napisala taj zadatak, al ne radi naravno XD pa ako mi netko preko tog zadatka moze objasnit lijepo te varijabilne parametre da kad procitam te 2 rijeci odmah u glavi znam sta i kako Smile hvala liiipo Very Happy
i jos, u ovom zadatku mi za funkciju min i max kaze (konkretno za red 7) invalid operands to binary... pa eto ak i to moze neko objasnit Smile opet, hvala Smile


#include <stdio.h>

double min(double niz[], int n)
{
int i;
for (i=0; i<n; ++i)
if (niz[i]<min) min=niz[i];

return min;
}

double max(double niz [], int n)
{
int i;
for (i=0; i<n; ++i)
if (niz[i]>max) max=niz[i];

return max;
}

void fmin(double *mini, double niz[], int n)
{
*mini=min(niz,n);
printf("minimum je %lf. \n", *mini);
}

void fmax(double *maxi, double niz[], int n)
{
*maxi=max(niz,n);
printf("maximum je %lf. \n", *maxi);
}

double f(double niz[], int n)
{
int i;
double suma=0.0;

for (i=0; i<n; ++i) suma+=niz[i];

return suma;

fmin(&suma,niz,n);
fmax(&suma,niz,n);

}

int main (void)
{
int n,i;
double niz[100];

printf("Upisi n: ");
scanf("%d", &n);

for (i=0; i<n; ++i)
{
printf("Upisi %d. clan: ",i+1);
scanf("%lf", &niz[i]);
}

printf("suma je %lf. \n", f(niz,n));

return 0;
}

Prije svega pogledaj si malo koliki ti je min kad udjes u funkciju min...?
Nemas niti int min, a niti inicijalizaciju, a u for petlji radis usporedbu s njima...
U funkciji f imas return suma, i nakon toga dva poziva do kojih nikad nece doci...

I sad kad sam pogledao cijeli program...pitanje:
Pozivas funkciju u kojoj racunas sumu cijelog niza, te tu sumu saljes u fmin i fmax...Prvo je promjenis u minimum, pa zatim u maximum i vratis je nazad...? Nest tu nije bas uredu, ali bez teksta zadatka tesko je odgonetnuti sto...


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


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 16:56 pon, 2. 1. 2012    Naslov: Citirajte i odgovorite

Krivo si ti mene razumio XD ne trazim ja 'kritiziranje' programa...znam da je on 'cudan'...meni treba teorija za varijabilne parametre u zadacima XD pa sam eto to stavila, jer kad se ovaj zadatak skuzi, onda ce sjest svaki gdje se spomene var.parametri... "za funkciju min i max kaze (konkretno za red 7) invalid operands to binary..." to ak mi jedino mozes objasnit (ili bilo tko)...a i ako znas var.par XD napisala sam koji je zad...iz skripte v.sege :)
Krivo si ti mene razumio XD ne trazim ja 'kritiziranje' programa...znam da je on 'cudan'...meni treba teorija za varijabilne parametre u zadacima XD pa sam eto to stavila, jer kad se ovaj zadatak skuzi, onda ce sjest svaki gdje se spomene var.parametri... "za funkciju min i max kaze (konkretno za red 7) invalid operands to binary..." to ak mi jedino mozes objasnit (ili bilo tko)...a i ako znas var.par XD napisala sam koji je zad...iz skripte v.sege Smile


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


Pridružen/a: 12. 10. 2011. (15:03:41)
Postovi: (10D)16
Spol: muško
Sarma = la pohva - posuda
68 = 72 - 4

PostPostano: 17:31 pon, 2. 1. 2012    Naslov: Citirajte i odgovorite

[code:1]double min(double niz[], int n)
{
int i;
for (i=0; i<n; ++i)
if (niz[i]<min) min=niz[i];

return min;
} [/code:1]

Malo razmisli sto si ti tu napisala.... ti imas [b]funkciju[/b] [tt]min[/tt], pa njoj [b]pridruzujes vrijednost[/b] i nakon toga vracas funkciju umjesto vrijednosti tipa double... (ukratko, ja sam zbunjen s ovime :crazyeyes: ), isto vrijedi i za funkciju [tt]max[/tt]
Kod:
double min(double niz[], int n)
{
int i;
for (i=0; i<n; ++i)
if (niz[i]<min) min=niz[i];

return min;
}


Malo razmisli sto si ti tu napisala.... ti imas funkciju min, pa njoj pridruzujes vrijednost i nakon toga vracas funkciju umjesto vrijednosti tipa double... (ukratko, ja sam zbunjen s ovime #Crazy ), isto vrijedi i za funkciju max
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
jema
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 21:50 pon, 2. 1. 2012    Naslov: Citirajte i odgovorite

jest, upravu si ;) kuzim...e sad ako mi jos tako lijepo mozes objasnit varijab.parametre, njihovu svrhu i tako to XD :) hvala ti :)

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

evo gflegar...lijepo si mi pomogao...sad sam malo sredila program, i vrati lijepo sumu i minimum, ali maximum steka :/ pa ako jos to mozes pogledat....i mislim da sad lijepo znam te var.parametre :) hvaaaaaaalaaa puuuuuuuuuno :D

#include <stdio.h>

double minii(double niz[], int n)
{
int i;double min;
for (i=0; i<n; ++i)
if (niz[i]<min) min=niz[i];

return min;
}

double maxii(double niz [], int n)
{
int i;double max;
for (i=0; i<n; ++i)
if (niz[i]>max) max=niz[i];

return max;
}

void fmin(double niz[], int n)
{
double *mini;

*mini=minii(niz,n);
printf("minimum je %lf. \n", *mini);
}

void fmax(double niz[], int n)
{
double *maxi;

*maxi=maxii(niz,n);
printf("maximum je %lf. \n", *maxi);
}

double f(double niz[], int n)
{
int i;
double suma=0.0;

for (i=0; i<n; ++i)
suma+=niz[i];

fmin(niz,n);
fmax(niz,n);

return suma;
}

int main (void)
{
int n,i;
double niz[100];

printf("Upisi n: ");
scanf("%d", &n);

for (i=0; i<n; ++i)
{
printf("Upisi %d. clan: ",i+1);
scanf("%lf", &niz[i]);
}

printf("suma je %lf. \n", f(niz,n));

return 0;
}

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

evo opet.......popravih ja sama problem.... :D sad radi ko svicarski sat hehee :))))) hvala punoooooooooooo :D sad mi je dusa na mjestu :D
jest, upravu si Wink kuzim...e sad ako mi jos tako lijepo mozes objasnit varijab.parametre, njihovu svrhu i tako to XD Smile hvala ti Smile

Added after 15 minutes:

evo gflegar...lijepo si mi pomogao...sad sam malo sredila program, i vrati lijepo sumu i minimum, ali maximum steka Ehm? pa ako jos to mozes pogledat....i mislim da sad lijepo znam te var.parametre Smile hvaaaaaaalaaa puuuuuuuuuno Very Happy

#include <stdio.h>

double minii(double niz[], int n)
{
int i;double min;
for (i=0; i<n; ++i)
if (niz[i]<min) min=niz[i];

return min;
}

double maxii(double niz [], int n)
{
int i;double max;
for (i=0; i<n; ++i)
if (niz[i]>max) max=niz[i];

return max;
}

void fmin(double niz[], int n)
{
double *mini;

*mini=minii(niz,n);
printf("minimum je %lf. \n", *mini);
}

void fmax(double niz[], int n)
{
double *maxi;

*maxi=maxii(niz,n);
printf("maximum je %lf. \n", *maxi);
}

double f(double niz[], int n)
{
int i;
double suma=0.0;

for (i=0; i<n; ++i)
suma+=niz[i];

fmin(niz,n);
fmax(niz,n);

return suma;
}

int main (void)
{
int n,i;
double niz[100];

printf("Upisi n: ");
scanf("%d", &n);

for (i=0; i<n; ++i)
{
printf("Upisi %d. clan: ",i+1);
scanf("%lf", &niz[i]);
}

printf("suma je %lf. \n", f(niz,n));

return 0;
}

Added after 6 minutes:

evo opet.......popravih ja sama problem.... Very Happy sad radi ko svicarski sat hehee Smile)))) hvala punoooooooooooo Very Happy sad mi je dusa na mjestu Very Happy


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


Pridružen/a: 12. 10. 2011. (15:03:41)
Postovi: (10D)16
Spol: muško
Sarma = la pohva - posuda
68 = 72 - 4

PostPostano: 23:34 pon, 2. 1. 2012    Naslov: Citirajte i odgovorite

Samo da te upozorim na jednu gresku u programu.
[code:1]void fmin(double niz[], int n)
{
double *mini;

*mini=minii(niz,n);
printf("minimum je %lf. \n", *mini);
} [/code:1]

Ti tu deklariras pokazivac na double [tt]mini[/tt], ali ga ne inicijaliziras ni na sto. Tj, on tebi pokazuje na neko random mjesto u memoriji cija se adresa slucajno nasla kao vrijednost na mjestu gdje je alociran [tt]mini[/tt]. Dakle, to mjesto najvjerojatnije nije alocirano u tvojem programu, sto znaci da ce na linuxu to vrlo vjerojatno vratiti gresku kod pokretanja programa, dok windows nece vratii gresku ali postoji mogucnost da neki drugi (ili taj isti) program promijeni vrijednost na toj memorijskoj lokaciji i program ce vratiti pogresnu vrijednost.
Sve u svemu, ovo je greska zbog koje bi se moglo izgubiti nekoliko bodova na kolokviju (osim ako asistenti nisu jako darezljivi).
Moj savjet ti je da uopce ne deklariras nikakve pointere kad ti netrebaju. Stavi [tt]mini[/tt] kao najobicniju varijablu tipa double. (isto vrijedi i za [tt]maxi[/tt] u funkciji [tt]fmax[/tt])
Samo da te upozorim na jednu gresku u programu.
Kod:
void fmin(double niz[], int n)
{
double *mini;

*mini=minii(niz,n);
printf("minimum je %lf. \n", *mini);
}


Ti tu deklariras pokazivac na double mini, ali ga ne inicijaliziras ni na sto. Tj, on tebi pokazuje na neko random mjesto u memoriji cija se adresa slucajno nasla kao vrijednost na mjestu gdje je alociran mini. Dakle, to mjesto najvjerojatnije nije alocirano u tvojem programu, sto znaci da ce na linuxu to vrlo vjerojatno vratiti gresku kod pokretanja programa, dok windows nece vratii gresku ali postoji mogucnost da neki drugi (ili taj isti) program promijeni vrijednost na toj memorijskoj lokaciji i program ce vratiti pogresnu vrijednost.
Sve u svemu, ovo je greska zbog koje bi se moglo izgubiti nekoliko bodova na kolokviju (osim ako asistenti nisu jako darezljivi).
Moj savjet ti je da uopce ne deklariras nikakve pointere kad ti netrebaju. Stavi mini kao najobicniju varijablu tipa double. (isto vrijedi i za maxi u funkciji fmax)
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
jema
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 29. 09. 2011. (15:56:35)
Postovi: (52)16
Sarma = la pohva - posuda
= 2 - 2

PostPostano: 23:41 pon, 2. 1. 2012    Naslov: Citirajte i odgovorite

aha...e hvala ti punoo...evo popravila :D hvalaa jos jednom :) :D
aha...e hvala ti punoo...evo popravila Very Happy hvalaa jos jednom Smile Very Happy


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


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

PostPostano: 0:10 uto, 3. 1. 2012    Naslov: Citirajte i odgovorite

Zadnja opaska gflegara je pricica neposredno prije Napomene 10.2.3 iz moje skripte, inace dio poglavlja 10.2 koje detaljno objasnjava varijabilne argumente, sto mi nekako ukazuje na povrsnost ucenja. Mozda da pazljivije procitas sto tamo pise, prije nego trazis da ti netko objasni to isto ("teorija za varijabilne parametre")?

Ako ti ne pase moj stil pisanja, objasnjeno je i u predavanju 10, pocevsi slideovi 41-52.
Zadnja opaska gflegara je pricica neposredno prije Napomene 10.2.3 iz moje skripte, inace dio poglavlja 10.2 koje detaljno objasnjava varijabilne argumente, sto mi nekako ukazuje na povrsnost ucenja. Mozda da pazljivije procitas sto tamo pise, prije nego trazis da ti netko objasni to isto ("teorija za varijabilne parametre")?

Ako ti ne pase moj stil pisanja, objasnjeno je i u predavanju 10, pocevsi slideovi 41-52.



_________________
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
Namdev
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 11. 2011. (19:23:40)
Postovi: (29)16
Spol: zombi
Sarma = la pohva - posuda
= 5 - 1

PostPostano: 13:33 uto, 3. 1. 2012    Naslov: Citirajte i odgovorite

@dodoria

Moj 11.3.5. zadatak koji izbacuje točno rješenje iz skripte. U svrhu vježbe kad nam je ovako pristojno zadan primjer ja ga zapišem u kod tako da ga ne moram iznova učitavati, jer je puno važnije da mi ključan dio koda izračuna vrijednost od toga da se vidi kako ja znam učitati neke varijable. :)

Ti si u svojem kodu deklarirala niz a[20], što je pretpostavljam bilo proizvoljno, ali zadatka kaže da je m + n < 100, te da moramo učitati m + n + 1 realnih brojeva, što je najviše 100 članova niza. Ne utječe na rješenje primjera, ali mislim da na takve stvari gledaju na kolokvijima.

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

double fu(double *a, int m, int n)
{
double x = a[0], p1 = 0, p2 = 0;
int i;

for(i = m + n; i > 0; i--)
{
if(i <= m) p1 = p1 * x + a[i];
else p2 = p2 * x + a[i];
}
return p1/p2;
}
int main(void)
{
int m = 3, n = 2;
double a[100] = {2,3,5,7,11,13};

printf(" %g", fu(a,m,n));

return 0;
}
[/code:1]

Tek sam počeo vježbati ove zadatke, pa bi molio nekog dobre volje da mi ukaže ako mi je kod pogrešan, tj. ako sam "slučajno" pogodio ovo rješenje. Unaprijed zahvaljujem.
@dodoria

Moj 11.3.5. zadatak koji izbacuje točno rješenje iz skripte. U svrhu vježbe kad nam je ovako pristojno zadan primjer ja ga zapišem u kod tako da ga ne moram iznova učitavati, jer je puno važnije da mi ključan dio koda izračuna vrijednost od toga da se vidi kako ja znam učitati neke varijable. Smile

Ti si u svojem kodu deklarirala niz a[20], što je pretpostavljam bilo proizvoljno, ali zadatka kaže da je m + n < 100, te da moramo učitati m + n + 1 realnih brojeva, što je najviše 100 članova niza. Ne utječe na rješenje primjera, ali mislim da na takve stvari gledaju na kolokvijima.

Kod:
#include <stdio.h>

double fu(double *a, int m, int n)
{
    double x = a[0], p1 = 0, p2 = 0;
    int i;

    for(i = m + n; i > 0; i--)
    {
        if(i <= m) p1 = p1 * x + a[i];
        else p2 = p2 * x + a[i];
    }
    return p1/p2;
}
int main(void)
{
    int m = 3, n = 2;
    double a[100] = {2,3,5,7,11,13};

    printf(" %g", fu(a,m,n));

    return 0;
}


Tek sam počeo vježbati ove zadatke, pa bi molio nekog dobre volje da mi ukaže ako mi je kod pogrešan, tj. ako sam "slučajno" pogodio ovo rješenje. Unaprijed zahvaljujem.


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


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

PostPostano: 13:50 uto, 3. 1. 2012    Naslov: Citirajte i odgovorite

[quote="Namdev"]...mislim da na takve stvari gledaju na kolokvijima.[/quote]

Naravno da gledamo. Ako se tu stavi premalo, program ne rjesava sve probleme koje treba rjesavati (ref. definicijal algoritma).

[quote="Namdev"]Tek sam počeo vježbati ove zadatke, pa bi molio nekog dobre volje da mi ukaže ako mi je kod pogrešan, tj. ako sam "slučajno" pogodio ovo rješenje.[/quote]

Do na cinjenicu da tvoj program ne ucitava brojeve, cini mi se ok.
Namdev (napisa):
...mislim da na takve stvari gledaju na kolokvijima.


Naravno da gledamo. Ako se tu stavi premalo, program ne rjesava sve probleme koje treba rjesavati (ref. definicijal algoritma).

Namdev (napisa):
Tek sam počeo vježbati ove zadatke, pa bi molio nekog dobre volje da mi ukaže ako mi je kod pogrešan, tj. ako sam "slučajno" pogodio ovo rješenje.


Do na cinjenicu da tvoj program ne ucitava brojeve, cini mi se ok.



_________________
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.
Stranica 1 / 1.

 
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