Bio sam lijen pa sam ostavio za zadnji dan jedan zadatak. Slao sam riješenje nekoliko puta ali ne uspijevam si pronaći grešku...
zadatak glasi:
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 5, 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.
a moje riješenje:
#include<stdio.h>
int main(){
int postoji=0,max,c,i,n,niz[135];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&niz[i]);
if (niz[i]%5==0)
{
max=niz[i];
postoji++;
}
}
if (postoji>0)
{
for(i=0;i<n;i++)
{
if (niz[i]%5==0 && niz[i]>max) max=niz[i];
if (niz[i]<0) niz[i]=-niz[i];
while (niz[i]>9) niz[i]/=10;
}
for(i=0;i<n;i++)
{
c=max;
while (c>0)
{
if(niz[i]==c%10)printf("%d ",i);
c/=10;
}
}
}
return 0;
}
dakle prvo provjerim da li postoji neki broj djeljiv s 5 i postavim zadnji kao max, nakon toga pronađem maksimalni.
ako netko ima viška vremena molio bih da pokuša pronaći grešku...
još nešto što je zanimljivo, pogledao sam test primjer na kojem je ovo rješenje palo. u tom primjeru n je 130, ali je zadano samo 117 ili 118 brojeva
hvala
[size=9][color=#999999]Added after 9 minutes:[/color][/size]
[quote="aciganj"] u tom primjeru n je 130, ali je zadano samo 117 ili 118 brojeva
[/quote]
prebrzo sam ovo zaključio, ipak je svih 130:)
Bio sam lijen pa sam ostavio za zadnji dan jedan zadatak. Slao sam riješenje nekoliko puta ali ne uspijevam si pronaći grešku...
zadatak glasi:
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 5, 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.
a moje riješenje:
#include<stdio.h>
int main(){
int postoji=0,max,c,i,n,niz[135];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&niz[i]);
if (niz[i]%5==0)
{
max=niz[i];
postoji++;
}
}
if (postoji>0)
{
for(i=0;i<n;i++)
{
if (niz[i]%5==0 && niz[i]>max) max=niz[i];
if (niz[i]<0) niz[i]=-niz[i];
while (niz[i]>9) niz[i]/=10;
}
for(i=0;i<n;i++)
{
c=max;
while (c>0)
{
if(niz[i]==c%10)printf("%d ",i);
c/=10;
}
}
}
return 0;
}
dakle prvo provjerim da li postoji neki broj djeljiv s 5 i postavim zadnji kao max, nakon toga pronađem maksimalni.
ako netko ima viška vremena molio bih da pokuša pronaći grešku...
još nešto što je zanimljivo, pogledao sam test primjer na kojem je ovo rješenje palo. u tom primjeru n je 130, ali je zadano samo 117 ili 118 brojeva
hvala
Added after 9 minutes:
aciganj (napisa): | u tom primjeru n je 130, ali je zadano samo 117 ili 118 brojeva
|
prebrzo sam ovo zaključio, ipak je svih 130:)
|