Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
°bubble° Forumaš(ica)
Pridružen/a: 31. 10. 2011. (12:03:20) Postovi: (25)16
Spol:
|
Postano: 17:57 uto, 13. 12. 2011 Naslov: |
|
|
Napišite program koji učitava cijeli broj n, te ispisuje sumu svih prostih djelitelja (uvažavajući kratnost) svih cijelih brojeva različitih od nule koji se nalaze između n i 26 (uključivo).
[code:1]#include <stdio.h>
int prost_faktor (int n){
int sum=0,i;
if (n<0) n=-n;
for (i=2;i<=n;i++){
if (n%i==0){sum=sum+i;
while (n%i==0) n=n/i;}}
return sum;}
int main (void){
int n,c,i,sum=0,a=26;
scanf ("%d",&n);
if (n>a) {c=n;n=a;a=c;}
for (i=n;i<=a;i++){
if (i!=0) sum=sum+prost_faktor(i);}
printf("%d",sum);
return 0;}[/code:1]
pise da je netocno za input 70. cak sam si stavila printf na svakom koraku da vidim sto se dogadja ali stvarno ne mogu naci pogresku :(
Napišite program koji učitava cijeli broj n, te ispisuje sumu svih prostih djelitelja (uvažavajući kratnost) svih cijelih brojeva različitih od nule koji se nalaze između n i 26 (uključivo).
Kod: | #include <stdio.h>
int prost_faktor (int n){
int sum=0,i;
if (n<0) n=-n;
for (i=2;i<=n;i++){
if (n%i==0){sum=sum+i;
while (n%i==0) n=n/i;}}
return sum;}
int main (void){
int n,c,i,sum=0,a=26;
scanf ("%d",&n);
if (n>a) {c=n;n=a;a=c;}
for (i=n;i<=a;i++){
if (i!=0) sum=sum+prost_faktor(i);}
printf("%d",sum);
return 0;} |
pise da je netocno za input 70. cak sam si stavila printf na svakom koraku da vidim sto se dogadja ali stvarno ne mogu naci pogresku
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
homoviator Forumaš(ica)
Pridružen/a: 31. 01. 2011. (18:42:32) Postovi: (3A)16
|
Postano: 20:53 čet, 15. 12. 2011 Naslov: |
|
|
Napišite program koji učitava cijeli broj n, te ispisuje sumu svih prostih djelitelja (ignorirajući kratnost) svih cijelih brojeva različitih od nule koji se nalaze između n i 35 (uključivo).
[
#include <stdio.h>
int zbroj(int n)
{
int i,suma,k;
if( n==0) return 0;
if(n<0) n=-n;
k=n;
i=2;
suma=0;
while(n>1 && i<k)
{
if(n%i==0) suma=suma+i;
while(n%i==0)
{
n/=i;
}
i++;
}
return suma;
}
int main(void)
{
int n,i,k,t,s=0;
scanf("%d",&n);
if(n<=35)
{
for(k=n;k<=35;k++) {
s=s+zbroj(k);
}
}
if(n>35)
{
for(k=35;k<=n;k++)
{
s=s+zbroj(k);
}
}
printf("%d",s);
return 0;
}
]
Može pomoć? Program je pao za (-72). Ako možete iščitati i reći mi točno gdje griješim.... hvala...[/code]
Napišite program koji učitava cijeli broj n, te ispisuje sumu svih prostih djelitelja (ignorirajući kratnost) svih cijelih brojeva različitih od nule koji se nalaze između n i 35 (uključivo).
[
#include <stdio.h>
int zbroj(int n)
{
int i,suma,k;
if( n==0) return 0;
if(n<0) n=-n;
k=n;
i=2;
suma=0;
while(n>1 && i<k)
{
if(n%i==0) suma=suma+i;
while(n%i==0)
{
n/=i;
}
i++;
}
return suma;
}
int main(void)
{
int n,i,k,t,s=0;
scanf("%d",&n);
if(n⇐35)
{
for(k=n;k⇐35;k++) {
s=s+zbroj(k);
}
}
if(n>35)
{
for(k=35;k⇐n;k++)
{
s=s+zbroj(k);
}
}
printf("%d",s);
return 0;
}
]
Može pomoć? Program je pao za (-72). Ako možete iščitati i reći mi točno gdje griješim.... hvala...[/code]
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
homoviator Forumaš(ica)
Pridružen/a: 31. 01. 2011. (18:42:32) Postovi: (3A)16
|
|
[Vrh] |
|
boksi Forumaš(ica)
Pridružen/a: 02. 09. 2011. (16:37:55) Postovi: (44)16
Spol:
|
Postano: 12:31 ned, 18. 12. 2011 Naslov: |
|
|
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 18 jednak ostatku koji pri istom takvom dijeljenju daje najmanji od učitanih brojeva. Ispisane brojeve odvojite razmakom.
moje rješenje je
[code:1]
#include<stdio.h>
int abs(int n)
{
if(n<0) n=-n;
return n%18;
}
int main(void)
{
int x[70];
int n, i, min;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &x[i]);
min=x[0];
for(i=1; i<n; i++)
if(x[i]<min) min=x[i];
min=min%18;
for(i=0; i<n; i++)
if((abs(x[i]))==min)printf("%d ", x[i]);
return 0;
}
što je krivo? :?
[/code:1]
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 18 jednak ostatku koji pri istom takvom dijeljenju daje najmanji od učitanih brojeva. Ispisane brojeve odvojite razmakom.
moje rješenje je
Kod: |
#include<stdio.h>
int abs(int n)
{
if(n<0) n=-n;
return n%18;
}
int main(void)
{
int x[70];
int n, i, min;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &x[i]);
min=x[0];
for(i=1; i<n; i++)
if(x[i]<min) min=x[i];
min=min%18;
for(i=0; i<n; i++)
if((abs(x[i]))==min)printf("%d ", x[i]);
return 0;
}
što je krivo? :?
|
|
|
[Vrh] |
|
gflegar Forumaš(ica)
Pridružen/a: 12. 10. 2011. (15:03:41) Postovi: (10D)16
Spol:
|
Postano: 13:00 ned, 18. 12. 2011 Naslov: |
|
|
[quote="boksi"]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 18 jednak ostatku koji pri [b]istom takvom dijeljenju daje najmanji od učitanih brojeva[/b]. Ispisane brojeve odvojite razmakom.
moje rješenje je
[code:1]
#include<stdio.h>
int abs(int n)
{
if(n<0) n=-n;
return n%18;
}
int main(void)
{
int x[70];
int n, i, min;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &x[i]);
min=x[0];
for(i=1; i<n; i++)
if(x[i]<min) min=x[i];
min=min%18;
for(i=0; i<n; i++)
if((abs(x[i]))==min)printf("%d ", x[i]);
return 0;
}
što je krivo? :?
[/code:1][/quote]
Citanje zadatka :D
EDIT:
I obicno nije dobra praksa da funkcija koja radi 2 stvari (u ovom slucaju vraca ostatak pri dijeljenju apsolutne vrijednost broja s 18 ) dobi ime samo po jednoj. Kad imas vise funkcija zaboravis sto ti koja radi ako to na neki nacin ne napises u imenu funkcije.
boksi (napisa): | 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 18 jednak ostatku koji pri istom takvom dijeljenju daje najmanji od učitanih brojeva. Ispisane brojeve odvojite razmakom.
moje rješenje je
Kod: |
#include<stdio.h>
int abs(int n)
{
if(n<0) n=-n;
return n%18;
}
int main(void)
{
int x[70];
int n, i, min;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &x[i]);
min=x[0];
for(i=1; i<n; i++)
if(x[i]<min) min=x[i];
min=min%18;
for(i=0; i<n; i++)
if((abs(x[i]))==min)printf("%d ", x[i]);
return 0;
}
što je krivo? :?
|
|
Citanje zadatka
EDIT:
I obicno nije dobra praksa da funkcija koja radi 2 stvari (u ovom slucaju vraca ostatak pri dijeljenju apsolutne vrijednost broja s 18 ) dobi ime samo po jednoj. Kad imas vise funkcija zaboravis sto ti koja radi ako to na neki nacin ne napises u imenu funkcije.
|
|
[Vrh] |
|
boksi Forumaš(ica)
Pridružen/a: 02. 09. 2011. (16:37:55) Postovi: (44)16
Spol:
|
|
[Vrh] |
|
frutabella Forumaš(ica)
Pridružen/a: 09. 10. 2010. (16:35:36) Postovi: (24E)16
|
Postano: 2:05 pon, 19. 12. 2011 Naslov: |
|
|
[code:1]
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int n,i,sum,j,k;
scanf ("%d",&n);
sum=0;
if (n<-7)
{
for (i=n;i<=-7;i++)
{
k=-i;
for (j=2;j<=k;j++)
{
if (k%j==0)
{
sum+=j;
k/=j;
}
}
}
}
else
for (i=-7;i<=n;i++)
{
if (i<0) k=-i;
else
k=i;
if (i==0) continue;
for (j=2;j<=k;j++)
{
if (k%j==0)
{
sum+=j;
k/=j;
}
}
}
printf ("%d", sum);
return 0;
}[/code:1]
Ne znam zasto mi za -10 ne prođe kroz petlju kako treba, na svakom koraku ispisem sto radi, i dobro radi, za -10, -9, a onda na -8 nesto previse prebroji, ali ne znam zasto... :oops:
Znam da zbraja + 4 bezveze, sto po mom ne bi trebao, jer je i za 9 pribrojio samo jednu 3, a ne dvije.
Za -3 radi ispravno.
Ne znam kako da ispravim. Hvala unaprijed na pomoci.
Kod: |
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int n,i,sum,j,k;
scanf ("%d",&n);
sum=0;
if (n<-7)
{
for (i=n;i<=-7;i++)
{
k=-i;
for (j=2;j<=k;j++)
{
if (k%j==0)
{
sum+=j;
k/=j;
}
}
}
}
else
for (i=-7;i<=n;i++)
{
if (i<0) k=-i;
else
k=i;
if (i==0) continue;
for (j=2;j<=k;j++)
{
if (k%j==0)
{
sum+=j;
k/=j;
}
}
}
printf ("%d", sum);
return 0;
} |
Ne znam zasto mi za -10 ne prođe kroz petlju kako treba, na svakom koraku ispisem sto radi, i dobro radi, za -10, -9, a onda na -8 nesto previse prebroji, ali ne znam zasto...
Znam da zbraja + 4 bezveze, sto po mom ne bi trebao, jer je i za 9 pribrojio samo jednu 3, a ne dvije.
Za -3 radi ispravno.
Ne znam kako da ispravim. Hvala unaprijed na pomoci.
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 3:16 pon, 19. 12. 2011 Naslov: |
|
|
Ubuduce stavi i text zadatka.
Koliko vidim, tebi zbrajanje prostih djelitelja ne valja. Treba neka unutrasnja petlja, u [tt]if[/tt] ili umjesto njega, ovisno o textu zadatka. Pogledaj taj algoritam u mojoj skripti i usporedi s ovim sto si napisala, pa ce ti biti jasnije.
Konkretno, za 8 ti u proste faktore racuna 2 i 4, sto je ocito krivo (i odatle +4 vishka :)).
Ubuduce stavi i text zadatka.
Koliko vidim, tebi zbrajanje prostih djelitelja ne valja. Treba neka unutrasnja petlja, u if ili umjesto njega, ovisno o textu zadatka. Pogledaj taj algoritam u mojoj skripti i usporedi s ovim sto si napisala, pa ce ti biti jasnije.
Konkretno, za 8 ti u proste faktore racuna 2 i 4, sto je ocito krivo (i odatle +4 vishka ).
_________________ 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] |
|
R2-D2 Forumaš(ica)
Pridružen/a: 11. 10. 2011. (20:32:10) Postovi: (2F)16
|
Postano: 20:57 pet, 23. 12. 2011 Naslov: |
|
|
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 19, 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.
Ne znam što nije dobro s ovim programom, a zadaća ga ne prihvaća.
[code:1]
#include<stdio.h>
void prvaznam(int niz[], int n, int max)
{
int znam, max2, znam2, niz2[131], i;
for(i=0;i<n;++i)
{ if(niz[i]<0) niz[i]=-niz[i];
while(niz[i]>0)
{ znam=niz[i]%10;
niz[i]=niz[i]/10;}
if(max<0) max=-max;
max2=max;
while(max2>0)
{ znam2=max2%10;
if(znam2==znam) {printf("%d ", i); break;}
max2=max2/10;
}}
return;}
int devetnaest(int niz[],int n)
{
int max, i;
for(i=0;i<n;++i)
{ if (niz[i]%19==0) { max=niz[i]; break;}
}
for(i=0;i<n;++i)
{if(niz[i]%19==0 && niz[i]>max) max=niz[i];}
return max;}
int main(void)
{
int niz[131], n, i, max;
scanf("%d", &n);
for(i=0;i<n;++i)
{ scanf("%d", &niz[i]);}
max=devetnaest(niz, n);
prvaznam(niz,n, max);
return 0;
}[/code:1]
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 19, 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.
Ne znam što nije dobro s ovim programom, a zadaća ga ne prihvaća.
Kod: |
#include<stdio.h>
void prvaznam(int niz[], int n, int max)
{
int znam, max2, znam2, niz2[131], i;
for(i=0;i<n;++i)
{ if(niz[i]<0) niz[i]=-niz[i];
while(niz[i]>0)
{ znam=niz[i]%10;
niz[i]=niz[i]/10;}
if(max<0) max=-max;
max2=max;
while(max2>0)
{ znam2=max2%10;
if(znam2==znam) {printf("%d ", i); break;}
max2=max2/10;
}}
return;}
int devetnaest(int niz[],int n)
{
int max, i;
for(i=0;i<n;++i)
{ if (niz[i]%19==0) { max=niz[i]; break;}
}
for(i=0;i<n;++i)
{if(niz[i]%19==0 && niz[i]>max) max=niz[i];}
return max;}
int main(void)
{
int niz[131], n, i, max;
scanf("%d", &n);
for(i=0;i<n;++i)
{ scanf("%d", &niz[i]);}
max=devetnaest(niz, n);
prvaznam(niz,n, max);
return 0;
} |
|
|
[Vrh] |
|
Gino Forumaš(ica)
Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
|
[Vrh] |
|
R2-D2 Forumaš(ica)
Pridružen/a: 11. 10. 2011. (20:32:10) Postovi: (2F)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
Shaman Forumaš(ica)
Pridružen/a: 24. 09. 2011. (22:21:43) Postovi: (76)16
Spol:
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
Shaman Forumaš(ica)
Pridružen/a: 24. 09. 2011. (22:21:43) Postovi: (76)16
Spol:
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
Shaman Forumaš(ica)
Pridružen/a: 24. 09. 2011. (22:21:43) Postovi: (76)16
Spol:
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
|