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 ... 6, 7, 8 ... 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
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 1:14 čet, 12. 1. 2012    Naslov: Citirajte i odgovorite

:OT: Ovo stvarno nema veze sa Prog1, ali nek se nađe.

[quote="cocco"]SIGSEGV?[/quote]
Signal koji proces dobije od operativnog sustava u slučaju da prčka po memoriji po kojoj ne bi smio. Detaljnije: [url]http://en.wikipedia.org/wiki/SIGSEGV[/url].
Off-topic Ovo stvarno nema veze sa Prog1, ali nek se nađe.

cocco (napisa):
SIGSEGV?

Signal koji proces dobije od operativnog sustava u slučaju da prčka po memoriji po kojoj ne bi smio. Detaljnije: http://en.wikipedia.org/wiki/SIGSEGV.



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
elasimic
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 05. 04. 2011. (12:10:07)
Postovi: (A)16
Sarma = la pohva - posuda
-2 = 1 - 3

PostPostano: 18:55 čet, 12. 1. 2012    Naslov: Citirajte i odgovorite

Jel mi može netko reći zašto mi ne priznaje aplikacija za zadaće ovaj program? Naime program radi ali aplikacija mi javlja da ne valja za input 1 i 896! hvala!!
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 9 imaju samo znamenke djeljive sa 4. 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!

[code:1]#include<stdio.h>
int main (void)
{
int a, b, k, z, r, broj=0, t;
scanf("%d %d", &a, &b);
if(a>b)
{
t=a;
a=b;
b=t;
}
for(k=a;k<=b;k++)
{
r=k;
while (r>0)
{
z=r%9;
if(z==0) break;
if(z%4==0)
{
r/=9;
}
else break;
if(r==0)
{
printf("%d ", k);
broj=1;
}
else continue;
}


}
if(broj==0) printf("Nema takvih brojeva.");
return 0;
}
[/code:1]
Jel mi može netko reći zašto mi ne priznaje aplikacija za zadaće ovaj program? Naime program radi ali aplikacija mi javlja da ne valja za input 1 i 896! hvala!!
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 9 imaju samo znamenke djeljive sa 4. 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!

Kod:
#include<stdio.h>
int main (void)
{
    int a, b, k, z, r, broj=0, t;
    scanf("%d %d", &a, &b);
    if(a>b)
    {
        t=a;
        a=b;
        b=t;
    }
    for(k=a;k<=b;k++)
    {
        r=k;
        while (r>0)
        {
            z=r%9;
            if(z==0) break;
            if(z%4==0)
            {
                r/=9;
            }
            else break;
            if(r==0)
            {
                printf("%d ", k);
                broj=1;
            }
            else continue;
        }


    }
    if(broj==0) printf("Nema takvih brojeva.");
    return 0;
}


[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: 19:09 čet, 12. 1. 2012    Naslov: Citirajte i odgovorite

[tt]if(z==0) break;[/tt] Cemu ovo, pa zar 0 nije djeljiva s 4?
[tt]else continue;[/tt] I ovo mozes komotno izbaciti (iako nije greska), jedini efekt ovoga je da se izvrsavanje nastavlja na kraju petlje (prije [tt]}[/tt]), a ti vec u tom trenutku jesi na kraju petlje.
if(z==0) break; Cemu ovo, pa zar 0 nije djeljiva s 4?
else continue; I ovo mozes komotno izbaciti (iako nije greska), jedini efekt ovoga je da se izvrsavanje nastavlja na kraju petlje (prije }), a ti vec u tom trenutku jesi na kraju petlje.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
cocco
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2010. (22:06:02)
Postovi: (4D)16
Sarma = la pohva - posuda
= 8 - 0

PostPostano: 21:30 čet, 12. 1. 2012    Naslov: Citirajte i odgovorite

jel moze meni pomoc oko ovog zadatka :Napišite program koji učitava prirodni broj n<71, te niz od n cijelih brojeva. Program treba u originalnom poretku ispisati sve elemente x[i] niza takve da je ostatak pri dijeljenju apsolutne vrijednosti x[i] s 16 jednak ostatku koji pri istom takvom dijeljenju daje najmanji od učitanih brojeva. Ispisane brojeve odvojite razmakom.
Moj kod ovak izgleda,ali nesto ne valja :O

[code:1]#include<stdio.h>
int main(void)
{
int x[70],i,min,ost,n;

scanf("%d",&n);
scanf("%d",&x[0]);
min=x[0];
for(i=1;i<n;i++)
{
scanf("%d",&x[i]);
if(x[i]<0) x[i]=-x[i];
if(x[i]<min) min=x[i];
}
ost=min%16;
for(i=0;i<n;i++)
{
if(x[i]%16==ost) printf("%d,",x[i]);
}
return 0;
}[/code:1]
jel moze meni pomoc oko ovog zadatka :Napišite program koji učitava prirodni broj n<71, te niz od n cijelih brojeva. Program treba u originalnom poretku ispisati sve elemente x[i] niza takve da je ostatak pri dijeljenju apsolutne vrijednosti x[i] s 16 jednak ostatku koji pri istom takvom dijeljenju daje najmanji od učitanih brojeva. Ispisane brojeve odvojite razmakom.
Moj kod ovak izgleda,ali nesto ne valja :O

Kod:
#include<stdio.h>
int main(void)
{
    int x[70],i,min,ost,n;

    scanf("%d",&n);
    scanf("%d",&x[0]);
    min=x[0];
    for(i=1;i<n;i++)
    {
        scanf("%d",&x[i]);
        if(x[i]<0) x[i]=-x[i];
        if(x[i]<min) min=x[i];
    }
    ost=min%16;
    for(i=0;i<n;i++)
    {
        if(x[i]%16==ost) printf("%d,",x[i]);
    }
    return 0;
}


[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: 22:10 čet, 12. 1. 2012    Naslov: Citirajte i odgovorite

[tt]if(x[i]<0) x[i]=-x[i];[/tt] zbog ovoga ti ne radi, jer ti na kraju ispisujes apsolutne vrijednosti elemenata.
if(x[i]<0) x[i]=-x[i]; zbog ovoga ti ne radi, jer ti na kraju ispisujes apsolutne vrijednosti elemenata.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
cocco
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2010. (22:06:02)
Postovi: (4D)16
Sarma = la pohva - posuda
= 8 - 0

PostPostano: 22:16 čet, 12. 1. 2012    Naslov: Citirajte i odgovorite

ahaaa hvala :)) a jel mogu ovo s ispisom ostaviti tak? tj. ovo sa zarezom?
ahaaa hvala Smile) a jel mogu ovo s ispisom ostaviti tak? tj. ovo sa zarezom?


[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: 22:20 čet, 12. 1. 2012    Naslov: Citirajte i odgovorite

Aha, ovo sam previdio uopce, ne, pise ti da ih odvojis razmakom.
Aha, ovo sam previdio uopce, ne, pise ti da ih odvojis razmakom.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
cocco
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2010. (22:06:02)
Postovi: (4D)16
Sarma = la pohva - posuda
= 8 - 0

PostPostano: 22:35 čet, 12. 1. 2012    Naslov: Citirajte i odgovorite

a vidi stvarno,to sam pobrkala s nekim drugim zadatkom onda :S
a vidi stvarno,to sam pobrkala s nekim drugim zadatkom onda :S


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


Pridružen/a: 21. 01. 2010. (22:06:02)
Postovi: (4D)16
Sarma = la pohva - posuda
= 8 - 0

PostPostano: 15:22 pet, 13. 1. 2012    Naslov: Citirajte i odgovorite

arghhhh i dalje imam problema oko istog zadatka :(
Napišite program koji učitava prirodni broj n<71, te niz od n cijelih brojeva. Program treba u originalnom poretku ispisati sve elemente x[i] niza takve da je ostatak pri dijeljenju apsolutne vrijednosti x[i] s 16 jednak ostatku koji pri istom takvom dijeljenju daje najmanji od učitanih brojeva. Ispisane brojeve odvojite razmakom.

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

void f(int x[],int n,int *min){

int i;
for(i=1;i<n;i++) {
if (x[i]<*min) *min=x[i];}}


void f2(int x[],int ost,int n) {
int a,i;
for(i=0;i<n;i++)
{if(x[i]<0) a=-x[i];
else a=x[i];
if(a%16==ost) printf(" %d",x[i]);}}

int main(void)
{
int x[70],i,min,ost,n;

scanf("%d",&n);
scanf("%d",&x[0]);
min=x[0];
for(i=1;i<n;i++)
scanf("%d",&x[i]);

f(x,n,&min);
ost=min%16;
f2(x,ost,n);

return 0;
}
[/code:1]

trebala sam min zamijeniti s -min ako je min<0 zar ne? -.-
arghhhh i dalje imam problema oko istog zadatka Sad
Napišite program koji učitava prirodni broj n<71, te niz od n cijelih brojeva. Program treba u originalnom poretku ispisati sve elemente x[i] niza takve da je ostatak pri dijeljenju apsolutne vrijednosti x[i] s 16 jednak ostatku koji pri istom takvom dijeljenju daje najmanji od učitanih brojeva. Ispisane brojeve odvojite razmakom.

Kod:
#include<stdio.h>

void f(int x[],int n,int *min){

    int i;
    for(i=1;i<n;i++) {
    if (x[i]<*min) *min=x[i];}}


void f2(int x[],int ost,int n)  {
    int a,i;
    for(i=0;i<n;i++)
    {if(x[i]<0) a=-x[i];
    else       a=x[i];
    if(a%16==ost) printf(" %d",x[i]);}}

int main(void)
{
    int x[70],i,min,ost,n;

    scanf("%d",&n);
    scanf("%d",&x[0]);
    min=x[0];
    for(i=1;i<n;i++)
        scanf("%d",&x[i]);

    f(x,n,&min);
    ost=min%16;
    f2(x,ost,n);

    return 0;
}


trebala sam min zamijeniti s -min ako je min<0 zar ne? -.-


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


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

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

Da, jer pise "isto takvo dijeljenje", dakle "dijeljenje apsolutne vrijednosti sa 16".
Da, jer pise "isto takvo dijeljenje", dakle "dijeljenje apsolutne vrijednosti sa 16".



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


Pridružen/a: 09. 01. 2012. (22:46:33)
Postovi: (63)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 5 - 1

PostPostano: 18:35 sub, 14. 1. 2012    Naslov: Citirajte i odgovorite

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 15, 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>

int pz(int n)
{
int zn, i=1;

if(n<0) n=-n;
if(n==0) return 0;

if(n==i) return 1;

while(n>i) i=i*10;

i=i/10;

zn=n/i;

return zn;

}

int main()

{
int x[130], y[25], k, j=0, max, n, i, indeks, brojac=0;

scanf("%d", &n);

for(i=0;i<n;i++)
scanf("%d", &x[i]);

for(i=0;i<n;i++)
if(x[i]%15==0)
{max=x[i];
indeks=i;
brojac+=1;}
if(brojac==0) return 0;

for(i=0;i<n;i++)
{
if(x[i]%15==0)
{ if(x[i]>max)
{max=x[i];
indeks=i;}
}
}

if(max<0) max=-max;

while(max>0)
{
y[j]=max%10;
max=max/10;
j++;
}

for(i=0;i<n;i++){
for(k=0;k<=j;k++)
{
if((pz(x[i])==y[k])&& i!=indeks)
{
printf("%d ", i);
break;

}
}}


return 0;
}
[/code:1]

Provjera zad: 4 (netočno za input: 130 -55 84 34 51 4 27 -39 37 -95 -85 -54 33
-16 34 -93 74 65 -46 18 -65 80 62 56 -86 -80 -87 -90 -48 28 -8 -28 73 -25 -95 24
80 33 85 16 38 -100 62 -30 -16 -4 -22 -43 -40 32 76 -5 12 37 -49 27 58 -36 38
-91 93 -71 -19 65 5 -13 -12 -15 -81 -27 -100 58 -27 63 -72 58 -42 7 -86 19 -61
91 -86 51 27 -35 -22 -15 30 -85 -6 22 -55 76 -14 50 -38 75 -66 -18 -52 -65 -60
21 98 -31 -22 -45 76 -7 75 -86 -17 89 65 -90 -46 -57 -5 84 -42 90 5 3 65 92 -47
-73 67 -12 9)
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 15, 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>

int pz(int n)
{
    int zn, i=1;

    if(n<0) n=-n;
    if(n==0) return 0;

    if(n==i) return 1;

    while(n>i)  i=i*10;

    i=i/10;

    zn=n/i;

    return zn;

}

int main()

{
    int x[130], y[25], k, j=0, max, n, i, indeks, brojac=0;

    scanf("%d", &n);

    for(i=0;i<n;i++)
    scanf("%d", &x[i]);

    for(i=0;i<n;i++)
    if(x[i]%15==0)
        {max=x[i];
        indeks=i;
        brojac+=1;}
    if(brojac==0)   return 0;

    for(i=0;i<n;i++)
    {
        if(x[i]%15==0)
        {   if(x[i]>max)
            {max=x[i];
            indeks=i;}
        }
    }

    if(max<0)   max=-max;

    while(max>0)
    {
        y[j]=max%10;
        max=max/10;
        j++;
    }

    for(i=0;i<n;i++){
    for(k=0;k<=j;k++)
    {
        if((pz(x[i])==y[k])&& i!=indeks)
           {
               printf("%d ", i);
               break;

           }
    }}


    return 0;
}


Provjera zad: 4 (netočno za input: 130 -55 84 34 51 4 27 -39 37 -95 -85 -54 33
-16 34 -93 74 65 -46 18 -65 80 62 56 -86 -80 -87 -90 -48 28 -8 -28 73 -25 -95 24
80 33 85 16 38 -100 62 -30 -16 -4 -22 -43 -40 32 76 -5 12 37 -49 27 58 -36 38
-91 93 -71 -19 65 5 -13 -12 -15 -81 -27 -100 58 -27 63 -72 58 -42 7 -86 19 -61
91 -86 51 27 -35 -22 -15 30 -85 -6 22 -55 76 -14 50 -38 75 -66 -18 -52 -65 -60
21 98 -31 -22 -45 76 -7 75 -86 -17 89 65 -90 -46 -57 -5 84 -42 90 5 3 65 92 -47
-73 67 -12 9)


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


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

PostPostano: 18:58 sub, 14. 1. 2012    Naslov: Citirajte i odgovorite

Zasto namjerno izostavljas maximum kad on uvijek zadovoljava trazeni uvijet, a nigdje ne pise da ga treba posebno tretirati?

Usputnoca: ako ti niz [tt]y[/tt] sluzi da ubrzas stvar, onda bi bilo prakticno i da [tt]pz(x[i])[/tt] spremis u neku varijablu prije unutrasnje petlje.

Preporucam funkciju [tt]pz[/tt] drugacije napisati, jer ti ova krivo radi za sve [tt]int[/tt]-ove vece od milijardu. Naime, za njih ti [tt]i[/tt]raste na 10 milijardi, sto je vise nego stane u [tt]int[/tt].

Bolji nacin za naci prvu znamenku:
[code:1]while (n > 9) n /= 10; /* dok n ima barem dvije znamenke, dijeli ga s 10 */[/code:1]
Na kraju samo vratis ono sto ti ostane u [tt]n[/tt]. Nikakvi dodatni [tt]if[/tt]-ovi i dijeljenja prije i poslije petlje (osim onog [tt]if[/tt] za negativne [tt]n[/tt]).
Zasto namjerno izostavljas maximum kad on uvijek zadovoljava trazeni uvijet, a nigdje ne pise da ga treba posebno tretirati?

Usputnoca: ako ti niz y sluzi da ubrzas stvar, onda bi bilo prakticno i da pz(x[i]) spremis u neku varijablu prije unutrasnje petlje.

Preporucam funkciju pz drugacije napisati, jer ti ova krivo radi za sve int-ove vece od milijardu. Naime, za njih ti iraste na 10 milijardi, sto je vise nego stane u int.

Bolji nacin za naci prvu znamenku:
Kod:
while (n > 9) n /= 10; /* dok n ima barem dvije znamenke, dijeli ga s 10 */

Na kraju samo vratis ono sto ti ostane u n. Nikakvi dodatni if-ovi i dijeljenja prije i poslije petlje (osim onog if za negativne n).



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


Pridružen/a: 09. 01. 2012. (22:46:33)
Postovi: (63)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
= 5 - 1

PostPostano: 21:20 sub, 14. 1. 2012    Naslov: Citirajte i odgovorite

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

int pz(int n)
{
if(n<0) n=-n;
while (n > 9) n /= 10;

return n;

}

int main()

{
int x[130], y[25], k, j=0, max, n, i, brojac=0;

scanf("%d", &n);

for(i=0;i<n;i++)
scanf("%d", &x[i]);

for(i=0;i<n;i++)
if(x[i]%15==0)
{max=x[i];
brojac+=1;}
if(brojac==0) return 0;

for(i=0;i<n;i++)
{
if(x[i]%15==0)
{ if(x[i]>max)
{max=x[i];
}
}
}

if(max<0) max=-max;

while(max>0)
{
y[j]=max%10;
max=max/10;
j++;
}

for(i=0;i<n;i++){
for(k=0;k<=j;k++)
{
if(pz(x[i])==y[k])
{
printf("%d ", i);
break;

}
}}


return 0;
}
[/code:1]

..prepravih..ne valja..
Kod:
#include<stdio.h>

int pz(int n)
{
    if(n<0) n=-n;
    while (n > 9) n /= 10;

    return n;

}

int main()

{
    int x[130], y[25], k, j=0, max, n, i, brojac=0;

    scanf("%d", &n);

    for(i=0;i<n;i++)
    scanf("%d", &x[i]);

    for(i=0;i<n;i++)
    if(x[i]%15==0)
        {max=x[i];
        brojac+=1;}
    if(brojac==0)   return 0;

    for(i=0;i<n;i++)
    {
        if(x[i]%15==0)
        {   if(x[i]>max)
            {max=x[i];
            }
        }
    }

    if(max<0)   max=-max;

    while(max>0)
    {
        y[j]=max%10;
        max=max/10;
        j++;
    }

    for(i=0;i<n;i++){
    for(k=0;k<=j;k++)
    {
        if(pz(x[i])==y[k])
           {
               printf("%d ", i);
               break;

           }
    }}


    return 0;
}


..prepravih..ne valja..


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


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

PostPostano: 21:37 sub, 14. 1. 2012    Naslov: Citirajte i odgovorite

[tt]for(k=0;k[color=red]<=[/color]j;k++)[/tt] :arrow: [tt]y[j][/tt] nema definiranu vrijednost, pa je unutra nekakvo smece. Ovisno o tome sto je unutra, mozda to izaziva gresku, pogotovo ako u ucitanim brojevima imas nulu (tu je najveca sansa za gresku).
for(k=0;kj;k++) Arrow y[j] nema definiranu vrijednost, pa je unutra nekakvo smece. Ovisno o tome sto je unutra, mozda to izaziva gresku, pogotovo ako u ucitanim brojevima imas nulu (tu je najveca sansa za gresku).



_________________
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: 18:59 uto, 17. 1. 2012    Naslov: Citirajte i odgovorite

[i]@marsupial[/i]

Probaj izbaciti ovaj drugi niz iz programa i radije napisi dodatnu funkciju [b]fun2[/b] koja ti provjerava ako je neki[b] int a[/b] (u ovo slucaju prva znamenka nekog clana koju dobijes) jedna od znamenka od [b]int b[/b] (maksimuma). Pritom pripazi na negativne vrijednosti!

U main mozes onda u drugoj for-petlji spremati prvi clan u neku varijablu [b]ohoho[/b] i provjeriti ako ti je [b]fun2(ohoho, max) [/b] 0 (pod uvjetom da ti funkcija vraca 0 ako nema takvih znamenki a vraca nesto sto nije nula ako ih ima). Ako [b]fun2(ohoho, max)[/b] nije 0 onda ispises indeks.

Pripazi da ti svaka funkcija vraca ono sto bi trebala i trebalo bi biti uredu.
@marsupial

Probaj izbaciti ovaj drugi niz iz programa i radije napisi dodatnu funkciju fun2 koja ti provjerava ako je neki int a (u ovo slucaju prva znamenka nekog clana koju dobijes) jedna od znamenka od int b (maksimuma). Pritom pripazi na negativne vrijednosti!

U main mozes onda u drugoj for-petlji spremati prvi clan u neku varijablu ohoho i provjeriti ako ti je fun2(ohoho, max) 0 (pod uvjetom da ti funkcija vraca 0 ako nema takvih znamenki a vraca nesto sto nije nula ako ih ima). Ako fun2(ohoho, max) nije 0 onda ispises indeks.

Pripazi da ti svaka funkcija vraca ono sto bi trebala i trebalo bi biti uredu.


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


Pridružen/a: 24. 09. 2011. (22:21:43)
Postovi: (76)16
Spol: muško
Sarma = la pohva - posuda
= 9 - 4

PostPostano: 9:45 sri, 18. 1. 2012    Naslov: Citirajte i odgovorite

kako se iz nekog razloga nemogu ulogirati da vidim na kojem primjeru mi je pao program jel mi moze netko pomoc sa zadatkom:

Napišite program koji učitava prirodni broj n≤17, te niz od n cijelih brojeva. Program treba ispisati sumu zadnjih 9 neparnih elemenata niza.
Ako neparnih brojeva ima manje od 9, ispišite sumu svih neparnih. Ako neparnih brojeva uopće nema u nizu, ispišite 0.


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

int main(void){
int n,i,a[18],sum=0,p=0,j;

scanf("%d", &n);
for(i=0; i<n; ++i)
scanf("%d", &a[i]);

for(i=0; i<n; ++i)
if(a[i]%2 != 0)
++p;

if(p<=9)
for(i=0; i<n; ++i)
if(a[i] % 2 != 0)
sum+=a[i];
if(p>9){
for(i=0; i<n; ++i){
if(a[i] % 2 != 0)
--p;
if(p == 9)
break;
}
for(j=i; j<n; ++j)
if(a[j] % 2 != 0)
sum+=a[i];
}
printf("%d", sum);
return 0;
}
[/code:1]
kako se iz nekog razloga nemogu ulogirati da vidim na kojem primjeru mi je pao program jel mi moze netko pomoc sa zadatkom:

Napišite program koji učitava prirodni broj n≤17, te niz od n cijelih brojeva. Program treba ispisati sumu zadnjih 9 neparnih elemenata niza.
Ako neparnih brojeva ima manje od 9, ispišite sumu svih neparnih. Ako neparnih brojeva uopće nema u nizu, ispišite 0.


Kod:

#include <stdio.h>

    int main(void){
        int n,i,a[18],sum=0,p=0,j;

        scanf("%d", &n);
        for(i=0; i<n; ++i)
            scanf("%d", &a[i]);

        for(i=0; i<n; ++i)
            if(a[i]%2 != 0)
                ++p;

        if(p<=9)
            for(i=0; i<n; ++i)
                if(a[i] % 2 != 0)
                    sum+=a[i];
        if(p>9){
            for(i=0; i<n; ++i){
                if(a[i] % 2 != 0)
                    --p;
                if(p == 9)
                    break;
            }
            for(j=i; j<n; ++j)
                if(a[j] % 2 != 0)
                    sum+=a[i];
        }
        printf("%d", sum);
        return 0;
    }



_________________
it was merely a setback
[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: 10:35 sri, 18. 1. 2012    Naslov: Citirajte i odgovorite

@Shaman

Probaj nakon sto ucitas clanove niza napisati drugu for-petlju, ali od [b]n - 1[/b] do nula (tj. u suprutnome smjeru) i provjeras ako ti je clan neparan i ako ti je [b]brojac[/b] manji od 9.

[code:1]int brojac = 0;
....
for(i = n - 1; i >= 0; i--)
{
if(a[i]%2 && brojac < 9)
{
suma += a[i];
brojac++
}
}
[/code:1]
@Shaman

Probaj nakon sto ucitas clanove niza napisati drugu for-petlju, ali od n - 1 do nula (tj. u suprutnome smjeru) i provjeras ako ti je clan neparan i ako ti je brojac manji od 9.

Kod:
int brojac = 0;
....
for(i = n - 1; i >= 0; i--)
{
    if(a[i]%2 && brojac < 9)
    {
     suma += a[i];
     brojac++
    }
}


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


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

PostPostano: 11:19 sri, 18. 1. 2012    Naslov: Citirajte i odgovorite

Simpaticna ideja, no malo krivo realizirana. Zamisli da imas 10 neparnih brojeva, dakle ispadne ti da je [tt]p = 10[/tt]. Sada gledamo ovaj dio koda:
[code:1] if(p>9){
for(i=0; i<n; ++i){
if(a[i] % 2 != 0)
--p;
if(p == 9)
break;
}
for(j=i; j<n; ++j)
if(a[j] % 2 != 0)
sum+=a[i];
}[/code:1]
Prva petlja trci do prvog neparnog broja. Kad dodje do njega, onda je [tt]a[i][/tt] neparno (to je taj prvi neparni broj) i [tt]p[/tt] se smanji za 1. Zatim se petlja prekida jer je [tt]p == 9[/tt]. Koje ce brojeve pozbrajati druga petlja?

Inace, pristup koji Namdev sugerira je, IMO, bolji, no preporucam sitnu izmjenu:

[code:1]...
for(i = n - 1; i >= 0; i--) {
if (a[i]%2) {
suma += a[i];
brojac++;
if (brojac >= 9) break;
}
}[/code:1]

Naime, uvjet s [tt]brojac[/tt]-em treba provjeravati samo kad se on mijenja, a ne u svakom koraku petlje.
Simpaticna ideja, no malo krivo realizirana. Zamisli da imas 10 neparnih brojeva, dakle ispadne ti da je p = 10. Sada gledamo ovaj dio koda:
Kod:
        if(p>9){
            for(i=0; i<n; ++i){
                if(a[i] % 2 != 0)
                    --p;
                if(p == 9)
                    break;
            }
            for(j=i; j<n; ++j)
                if(a[j] % 2 != 0)
                    sum+=a[i];
        }

Prva petlja trci do prvog neparnog broja. Kad dodje do njega, onda je a[i] neparno (to je taj prvi neparni broj) i p se smanji za 1. Zatim se petlja prekida jer je p == 9. Koje ce brojeve pozbrajati druga petlja?

Inace, pristup koji Namdev sugerira je, IMO, bolji, no preporucam sitnu izmjenu:

Kod:
...
for(i = n - 1; i >= 0; i--) {
  if (a[i]%2) {
    suma += a[i];
    brojac++;
    if (brojac >= 9) break;
  }
}


Naime, uvjet s brojac-em treba provjeravati samo kad se on mijenja, a ne u svakom koraku petlje.



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


Pridružen/a: 24. 09. 2011. (22:21:43)
Postovi: (76)16
Spol: muško
Sarma = la pohva - posuda
= 9 - 4

PostPostano: 11:25 sri, 18. 1. 2012    Naslov: Citirajte i odgovorite

slazem se sa obojicom, hvala vam.
slazem se sa obojicom, hvala vam.



_________________
it was merely a setback
[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: 12:05 sri, 18. 1. 2012    Naslov: Citirajte i odgovorite

[quote="vsego"]
Naime, uvjet s [tt]brojac[/tt]-em treba provjeravati samo kad se on mijenja, a ne u svakom koraku petlje.[/quote]

Da, inace ima puno "praznog hoda". Hvala Vam, imat cu to na umu.
vsego (napisa):

Naime, uvjet s brojac-em treba provjeravati samo kad se on mijenja, a ne u svakom koraku petlje.


Da, inace ima puno "praznog hoda". Hvala Vam, imat cu to na umu.


[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 ... 6, 7, 8 ... 11, 12, 13  Sljedeće
Stranica 7 / 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