Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
napolitanka Forumaš(ica)

Pridružen/a: 11. 10. 2014. (07:50:24) Postovi: (A)16
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
napolitanka Forumaš(ica)

Pridružen/a: 11. 10. 2014. (07:50:24) Postovi: (A)16
|
|
[Vrh] |
|
napolitanka Forumaš(ica)

Pridružen/a: 11. 10. 2014. (07:50:24) Postovi: (A)16
|
Postano: 12:44 ned, 14. 12. 2014 Naslov: |
|
|
Može još jedno pitanje (isti zadatak), piše mi da mi je program netočan za input -38, ali ja ne znam što mi je točno krivo pa ako mi netko može pomoći?
[code:1]#include <stdio.h>
int sumad (int n)
{
int i,test,suma=0,x;
x=n;
if(x==0) test=0;
else test=1;
do {
for (i=2;i<=x;i++)
{
if(x%i==0)
{
suma+=i;
test*=i;
x/=i;
break;
}
}
} while(test!=n);
return suma;
}
int abso(int x)
{
if (x<0) x*=-1;
return x;
}
int main(void)
{
int n;
scanf("%d",&n);
if (n<1)
{
while (n<=1)
{
if (n==0) {n++; continue;}
printf("%d\n",sumad( abso(n) ) );
n++;
}
}
else
{
while (n>=1)
{
printf("%d ",sumad(n));
n--;
}
}
return 0;
}
[/code:1]
Može još jedno pitanje (isti zadatak), piše mi da mi je program netočan za input -38, ali ja ne znam što mi je točno krivo pa ako mi netko može pomoći?
Kod: | #include <stdio.h>
int sumad (int n)
{
int i,test,suma=0,x;
x=n;
if(x==0) test=0;
else test=1;
do {
for (i=2;i<=x;i++)
{
if(x%i==0)
{
suma+=i;
test*=i;
x/=i;
break;
}
}
} while(test!=n);
return suma;
}
int abso(int x)
{
if (x<0) x*=-1;
return x;
}
int main(void)
{
int n;
scanf("%d",&n);
if (n<1)
{
while (n<=1)
{
if (n==0) {n++; continue;}
printf("%d\n",sumad( abso(n) ) );
n++;
}
}
else
{
while (n>=1)
{
printf("%d ",sumad(n));
n--;
}
}
return 0;
}
|
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol: 
Lokacija: /sbin/init
|
Postano: 13:44 ned, 14. 12. 2014 Naslov: |
|
|
U zadatku pise "ispisuje sumu" (ne "sume"), dakle jednu jedinu sumu. Tebi ce se [tt]printf[/tt] ispisati za skoro svaki broj izmedju 1 i [tt]n[/tt].
Usput, petlja u [tt]sumad[/tt] je jako lose napisana. Ako ispadne da je, recimo, 17 prosti faktor u [tt]n[/tt], ti prekidas petlju i opet provjeravas za sve [tt]i[/tt] od 2 nadalje. I tako za svaki prosti faktor, onoliko puta kolika mu je kratnost.
Pogledaj u vjezbama kako se vade prosti faktori broja. To je solidno koristan algoritam.
U zadatku pise "ispisuje sumu" (ne "sume"), dakle jednu jedinu sumu. Tebi ce se printf ispisati za skoro svaki broj izmedju 1 i n.
Usput, petlja u sumad je jako lose napisana. Ako ispadne da je, recimo, 17 prosti faktor u n, ti prekidas petlju i opet provjeravas za sve i od 2 nadalje. I tako za svaki prosti faktor, onoliko puta kolika mu je kratnost.
Pogledaj u vjezbama kako se vade prosti faktori broja. To je solidno koristan algoritam.
_________________ 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. 
|
|
[Vrh] |
|
napolitanka Forumaš(ica)

Pridružen/a: 11. 10. 2014. (07:50:24) Postovi: (A)16
|
|
[Vrh] |
|
|