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

Pridružen/a: 28. 10. 2009. (17:56:24) Postovi: (34)16
|
Postano: 16:01 uto, 24. 11. 2009 Naslov: |
|
|
moze li mi netko pomoc s ovim,4.zadatak,problem mi je sto treba ispisati samo par (220,284) a meni ispise i (284,220) kako da to izbacim ?
[code:1]#include <stdio.h>
#include <stdlib.h>
int main(void) {
int m,n,i,a,suma,j,t,k,sumb,b;
printf("unesite broj m : ");
scanf("%d", &m);
printf("unesite broj n : ");
scanf("%d", &n);
if(n<m) { t=m;
m=n;
n=t;
}
for(i=m; i<n; i++) {
suma=0;
sumb=0;
a=i;
for(j=1;j<a;j++) {if (a%j==0) suma+=j;}
if (suma<=n && suma>m) b=suma;
for (j=1; j<b; j++) {if (b%j==0) sumb+=j;}
if(sumb/a==1 && sumb%a==0) printf("%d i %d su prijateljski brojevi\n ", a, b);
}
system("pause");
return 0;
}[/code:1]
moze li mi netko pomoc s ovim,4.zadatak,problem mi je sto treba ispisati samo par (220,284) a meni ispise i (284,220) kako da to izbacim ?
Kod: | #include <stdio.h>
#include <stdlib.h>
int main(void) {
int m,n,i,a,suma,j,t,k,sumb,b;
printf("unesite broj m : ");
scanf("%d", &m);
printf("unesite broj n : ");
scanf("%d", &n);
if(n<m) { t=m;
m=n;
n=t;
}
for(i=m; i<n; i++) {
suma=0;
sumb=0;
a=i;
for(j=1;j<a;j++) {if (a%j==0) suma+=j;}
if (suma<=n && suma>m) b=suma;
for (j=1; j<b; j++) {if (b%j==0) sumb+=j;}
if(sumb/a==1 && sumb%a==0) printf("%d i %d su prijateljski brojevi\n ", a, b);
}
system("pause");
return 0;
} |
|
|
[Vrh] |
|
.anchy. Forumaš(ica)

Pridružen/a: 14. 11. 2007. (20:03:46) Postovi: (1BC)16
Lokacija: Zgb
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 21:08 uto, 24. 11. 2009 Naslov: |
|
|
[quote=".anchy."]to su dva RAZLIČITA uređena para ;)[/quote]
Tocno tako. Elementarna matematika:
{220,284} i {284,220} su jednaki [b]skupovi[/b], ali
(220,284) i (284,220) su razliciti [b]uredjeni parovi[/b].
.anchy. (napisa): | to su dva RAZLIČITA uređena para  |
Tocno tako. Elementarna matematika:
{220,284} i {284,220} su jednaki skupovi, ali
(220,284) i (284,220) su razliciti uredjeni parovi.
_________________ 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] |
|
miam Forumaš(ica)

Pridružen/a: 03. 11. 2009. (11:19:45) Postovi: (70)16
Spol: 
|
Postano: 21:47 uto, 24. 11. 2009 Naslov: |
|
|
moze li mi netko reci zasto mi ovaj zadatak ne radi samo za neke odredjene brojeve, npr za 345.654?
[code:1]
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
double x,y,u;
int a,b,s1=0,s2=0;
scanf("%lg", &x);
u=x-(int)x;
a=(int)(x-u);
printf("%d\n%g\n", a, u);
printf("%g\n", u);
u *=10000;
printf("%g\n", u);
b=(int)u;
printf("%d\n", b);
while ( b%10 == 0) b /=10;
printf("%d\n%d\n", a, b);
while(b>0)
{
s1=10*s1+b%10;
b/=10;
}
u=s1;
while(a>0)
{
s2=10*s2+a%10;;
a/=10;
}
y=s2;
while(y>1) y/=10;
printf("\n%lg\n",u+y);
system("pause");
return 0;
}
[/code:1]
[size=9][color=#999999]Added after 59 seconds:[/color][/size]
iii, ima li netko rjesenje 32 zadatka, ali bez koristenja polja..?
moze li mi netko reci zasto mi ovaj zadatak ne radi samo za neke odredjene brojeve, npr za 345.654?
Kod: |
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
double x,y,u;
int a,b,s1=0,s2=0;
scanf("%lg", &x);
u=x-(int)x;
a=(int)(x-u);
printf("%d\n%g\n", a, u);
printf("%g\n", u);
u *=10000;
printf("%g\n", u);
b=(int)u;
printf("%d\n", b);
while ( b%10 == 0) b /=10;
printf("%d\n%d\n", a, b);
while(b>0)
{
s1=10*s1+b%10;
b/=10;
}
u=s1;
while(a>0)
{
s2=10*s2+a%10;;
a/=10;
}
y=s2;
while(y>1) y/=10;
printf("\n%lg\n",u+y);
system("pause");
return 0;
}
|
Added after 59 seconds:
iii, ima li netko rjesenje 32 zadatka, ali bez koristenja polja..?
_________________ <3
|
|
[Vrh] |
|
Buga. Forumaš(ica)


Pridružen/a: 20. 02. 2008. (22:04:58) Postovi: (18E)16
Spol: 
|
|
[Vrh] |
|
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
Postano: 0:05 sri, 25. 11. 2009 Naslov: |
|
|
[quote="vsego"][quote=".anchy."]to su dva RAZLIČITA uređena para ;)[/quote]
Tocno tako. Elementarna matematika:
{220,284} i {284,220} su jednaki [b]skupovi[/b], ali
(220,284) i (284,220) su razliciti [b]uredjeni parovi[/b].[/quote]
e, al, kao sto mi je neko napomenuo ne bas davno, tamo pise parovi, a ne uredeni parovi :lol:
sorry al nisam se mogao suzdrzat 8)
[quote="vsego"][quote="Gino"][quote="vsego"][quote="Gino"]i s obzirom da "ispisuje sve parove", dal je krivo ako ispise
a = 220, b = 284
a = 284, b = 220[/quote]
Pa, kad se trazi da se ispise "sve nesto", misli se "svakog jednom". :)[/quote]
pa da al tamo pise da treba ispisat a = 220, b = 284
al (220,284) je jedno a drugo je (284,220)[/quote]
Pise "parovi", a ne "uredjeni parovi". :)
Umjesto lingvistickih igrica, evo ti bolja mozgalica: rijesi zadatak s prijateljskim brojevima tako da slozenost bude strogo manja od kvadratne. :D[/quote]
uglavnom, cijela stvar je poprilicno nebitna...
modifikacija je trivijalna
vsego (napisa): | .anchy. (napisa): | to su dva RAZLIČITA uređena para  |
Tocno tako. Elementarna matematika:
{220,284} i {284,220} su jednaki skupovi, ali
(220,284) i (284,220) su razliciti uredjeni parovi. |
e, al, kao sto mi je neko napomenuo ne bas davno, tamo pise parovi, a ne uredeni parovi
sorry al nisam se mogao suzdrzat
vsego (napisa): | Gino (napisa): | vsego (napisa): | Gino (napisa): | i s obzirom da "ispisuje sve parove", dal je krivo ako ispise
a = 220, b = 284
a = 284, b = 220 |
Pa, kad se trazi da se ispise "sve nesto", misli se "svakog jednom".  |
pa da al tamo pise da treba ispisat a = 220, b = 284
al (220,284) je jedno a drugo je (284,220) |
Pise "parovi", a ne "uredjeni parovi".
Umjesto lingvistickih igrica, evo ti bolja mozgalica: rijesi zadatak s prijateljskim brojevima tako da slozenost bude strogo manja od kvadratne.  |
uglavnom, cijela stvar je poprilicno nebitna...
modifikacija je trivijalna
_________________ Mario Berljafa
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 5:11 sri, 25. 11. 2009 Naslov: |
|
|
@Gino: Eh, ne znam ja zadatke na pamet. Ako pise "parovi", onda svakog jednom (ignorirajuci uredjaj). Mozemo reci "dvoclani multiskupovi", ali to bi pouzdano zbunilo vise ljudi nego ovako.
@ananas: Samo se pobrini da je uvijek [tt]a < b[/tt] i imas jedinstvenost. To je cesti stos kad trebas jedinstvenost. Naravno, poseban je slucaj kad su [tt]a[/tt] i [tt]b[/tt] jednaki (osim ako i to zadatak iskljucuje kao mogucnost).
Stvar je, naravno, laksa ako se rijesi linearnom slozenoscu, umjesto ove tvoje kvadratne, jer onda nema brige o "specijalnom" slucaju.
@Buga: Subota, 5.12., i/ili tjedan iza toga; iduci tjedan ce se znati termini i bit ce upisivanje u liste (ne ide prije, jer do petka necemo znati koliko termina treba).
@Gino: Eh, ne znam ja zadatke na pamet. Ako pise "parovi", onda svakog jednom (ignorirajuci uredjaj). Mozemo reci "dvoclani multiskupovi", ali to bi pouzdano zbunilo vise ljudi nego ovako.
@ananas: Samo se pobrini da je uvijek a < b i imas jedinstvenost. To je cesti stos kad trebas jedinstvenost. Naravno, poseban je slucaj kad su a i b jednaki (osim ako i to zadatak iskljucuje kao mogucnost).
Stvar je, naravno, laksa ako se rijesi linearnom slozenoscu, umjesto ove tvoje kvadratne, jer onda nema brige o "specijalnom" slucaju.
@Buga: Subota, 5.12., i/ili tjedan iza toga; iduci tjedan ce se znati termini i bit ce upisivanje u liste (ne ide prije, jer do petka necemo znati koliko termina treba).
_________________ 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] |
|
Cobs Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15) Postovi: (206)16
Spol: 
Lokacija: Geto
|
Postano: 10:18 sri, 25. 11. 2009 Naslov: |
|
|
[quote="miam"]moze li mi netko reci zasto mi ovaj zadatak ne radi samo za neke odredjene brojeve, npr za 345.654?
[code:1]
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
double x,y,u;
int a,b,s1=0,s2=0;
scanf("%lg", &x);
u=x-(int)x;
a=(int)(x-u);
printf("%d\n%g\n", a, u);
printf("%g\n", u);
u *=10000;
printf("%g\n", u);
b=(int)u;
printf("%d\n", b);
while ( b%10 == 0) b /=10;
printf("%d\n%d\n", a, b);
while(b>0)
{
s1=10*s1+b%10;
b/=10;
}
u=s1;
while(a>0)
{
s2=10*s2+a%10;;
a/=10;
}
y=s2;
while(y>1) y/=10;
printf("\n%lg\n",u+y);
system("pause");
return 0;
}
[/code:1]
[/quote]
mislim da sam rjesavao taja zadtak...
( to je jedan od onih... kad treba realan broj napisati naopacke ili zamijeniti decimalni i cjeli dio... )
ne radi za neke brojeve jer kada mnozis onaj decimalni dio npr:
imas 0.23 pa ga ti pomnozis sa 10000 on ga ne pretvori uvijek u 2300 ( barem je meni stalno baco te male greske u izracunu ) nego mi je izracuno: 2299 i onda naravno ne bi dobil ono kaj sam htio...
( napomena: ja sam ga mnozio u par koraka sa 10, a ne odmah sa 10000 tak da bi i tu postojala razlika, al svejedno pogledaj u kaj ti ga pretvara u nekom djelu koda.... )
miam (napisa): | moze li mi netko reci zasto mi ovaj zadatak ne radi samo za neke odredjene brojeve, npr za 345.654?
Kod: |
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
double x,y,u;
int a,b,s1=0,s2=0;
scanf("%lg", &x);
u=x-(int)x;
a=(int)(x-u);
printf("%d\n%g\n", a, u);
printf("%g\n", u);
u *=10000;
printf("%g\n", u);
b=(int)u;
printf("%d\n", b);
while ( b%10 == 0) b /=10;
printf("%d\n%d\n", a, b);
while(b>0)
{
s1=10*s1+b%10;
b/=10;
}
u=s1;
while(a>0)
{
s2=10*s2+a%10;;
a/=10;
}
y=s2;
while(y>1) y/=10;
printf("\n%lg\n",u+y);
system("pause");
return 0;
}
|
|
mislim da sam rjesavao taja zadtak...
( to je jedan od onih... kad treba realan broj napisati naopacke ili zamijeniti decimalni i cjeli dio... )
ne radi za neke brojeve jer kada mnozis onaj decimalni dio npr:
imas 0.23 pa ga ti pomnozis sa 10000 on ga ne pretvori uvijek u 2300 ( barem je meni stalno baco te male greske u izracunu ) nego mi je izracuno: 2299 i onda naravno ne bi dobil ono kaj sam htio...
( napomena: ja sam ga mnozio u par koraka sa 10, a ne odmah sa 10000 tak da bi i tu postojala razlika, al svejedno pogledaj u kaj ti ga pretvara u nekom djelu koda.... )
|
|
[Vrh] |
|
Vanja_ Forumaš(ica)

Pridružen/a: 21. 11. 2009. (14:38:39) Postovi: (2C)16
|
|
[Vrh] |
|
Pkora Forumaš(ica)

Pridružen/a: 17. 11. 2009. (17:14:03) Postovi: (21)16
Spol: 
Lokacija: Tangenta
|
Postano: 13:03 sri, 25. 11. 2009 Naslov: |
|
|
[quote="Cobs"][quote="miam"]moze li mi netko reci zasto mi ovaj zadatak ne radi samo za neke odredjene brojeve, npr za 345.654?
[code:1]
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
double x,y,u;
int a,b,s1=0,s2=0;
scanf("%lg", &x);
u=x-(int)x;
a=(int)(x-u);
printf("%d\n%g\n", a, u);
printf("%g\n", u);
u *=10000;
printf("%g\n", u);
b=(int)u;
printf("%d\n", b);
while ( b%10 == 0) b /=10;
printf("%d\n%d\n", a, b);
while(b>0)
{
s1=10*s1+b%10;
b/=10;
}
u=s1;
while(a>0)
{
s2=10*s2+a%10;;
a/=10;
}
y=s2;
while(y>1) y/=10;
printf("\n%lg\n",u+y);
system("pause");
return 0;
}
[/code:1]
[/quote]
mislim da sam rjesavao taja zadtak...
( to je jedan od onih... kad treba realan broj napisati naopacke ili zamijeniti decimalni i cjeli dio... )
ne radi za neke brojeve jer kada mnozis onaj decimalni dio npr:
imas 0.23 pa ga ti pomnozis sa 10000 on ga ne pretvori uvijek u 2300 ( barem je meni stalno baco te male greske u izracunu ) nego mi je izracuno: 2299 i onda naravno ne bi dobil ono kaj sam htio...
( napomena: ja sam ga mnozio u par koraka sa 10, a ne odmah sa 10000 tak da bi i tu postojala razlika, al svejedno pogledaj u kaj ti ga pretvara u nekom djelu koda.... )[/quote]
Zato jer iz double pretvarate u intove,
% - mod funkcija za realne brojeve je [b]fmod[/b]
[code:1]printf ("Ostatak dijeljenja 5.5/2 is %g\n", fmod (5.5,2) );[/code:1]
za razdvajanje brojeva na decimalni i cijeli imaš [b]modf[/b]
[code:1]double broj,decimalni_dio,cijeli_dio;
decimalni_dio = modf (broj , &cijeli_dio);[/code:1]
Obje se nalaze u math.h biblioteci pa ih možete koristiti, no nisu potrebne za rješnje zadatka, nisam bacio previše oko na tvoje rješenje jer je preglomazno, naprosto previše petljaš, doslovno, sa tim petljama, probaj ponovo sa drugim pristupom...
[size=9][color=#999999]Added after 2 minutes:[/color][/size]
[quote="Vanja_"]pitanje za vsegu: da li smijemo sada na prvom prakticnom rjesavati zadatake pomocu nizova (npr 3)??[/quote]
Ako znaš, smiješ, to je rečeno par puta, no ne vidim zašto?
mislim da rješenje tog zadatka imaš među prvim stranicama...
Cobs (napisa): | miam (napisa): | moze li mi netko reci zasto mi ovaj zadatak ne radi samo za neke odredjene brojeve, npr za 345.654?
Kod: |
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
double x,y,u;
int a,b,s1=0,s2=0;
scanf("%lg", &x);
u=x-(int)x;
a=(int)(x-u);
printf("%d\n%g\n", a, u);
printf("%g\n", u);
u *=10000;
printf("%g\n", u);
b=(int)u;
printf("%d\n", b);
while ( b%10 == 0) b /=10;
printf("%d\n%d\n", a, b);
while(b>0)
{
s1=10*s1+b%10;
b/=10;
}
u=s1;
while(a>0)
{
s2=10*s2+a%10;;
a/=10;
}
y=s2;
while(y>1) y/=10;
printf("\n%lg\n",u+y);
system("pause");
return 0;
}
|
|
mislim da sam rjesavao taja zadtak...
( to je jedan od onih... kad treba realan broj napisati naopacke ili zamijeniti decimalni i cjeli dio... )
ne radi za neke brojeve jer kada mnozis onaj decimalni dio npr:
imas 0.23 pa ga ti pomnozis sa 10000 on ga ne pretvori uvijek u 2300 ( barem je meni stalno baco te male greske u izracunu ) nego mi je izracuno: 2299 i onda naravno ne bi dobil ono kaj sam htio...
( napomena: ja sam ga mnozio u par koraka sa 10, a ne odmah sa 10000 tak da bi i tu postojala razlika, al svejedno pogledaj u kaj ti ga pretvara u nekom djelu koda.... ) |
Zato jer iz double pretvarate u intove,
% - mod funkcija za realne brojeve je fmod
Kod: | printf ("Ostatak dijeljenja 5.5/2 is %g\n", fmod (5.5,2) ); |
za razdvajanje brojeva na decimalni i cijeli imaš modf
Kod: | double broj,decimalni_dio,cijeli_dio;
decimalni_dio = modf (broj , &cijeli_dio); |
Obje se nalaze u math.h biblioteci pa ih možete koristiti, no nisu potrebne za rješnje zadatka, nisam bacio previše oko na tvoje rješenje jer je preglomazno, naprosto previše petljaš, doslovno, sa tim petljama, probaj ponovo sa drugim pristupom...
Added after 2 minutes:
Vanja_ (napisa): | pitanje za vsegu: da li smijemo sada na prvom prakticnom rjesavati zadatake pomocu nizova (npr 3)?? |
Ako znaš, smiješ, to je rečeno par puta, no ne vidim zašto?
mislim da rješenje tog zadatka imaš među prvim stranicama...
|
|
[Vrh] |
|
miam Forumaš(ica)

Pridružen/a: 03. 11. 2009. (11:19:45) Postovi: (70)16
Spol: 
|
|
[Vrh] |
|
Vanja_ Forumaš(ica)

Pridružen/a: 21. 11. 2009. (14:38:39) Postovi: (2C)16
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
Vanja_ Forumaš(ica)

Pridružen/a: 21. 11. 2009. (14:38:39) Postovi: (2C)16
|
|
[Vrh] |
|
miam Forumaš(ica)

Pridružen/a: 03. 11. 2009. (11:19:45) Postovi: (70)16
Spol: 
|
Postano: 20:00 sri, 25. 11. 2009 Naslov: |
|
|
moze li mi netko reci gdje je greska ovdje..pliiiiz
[code:1]
#include <stdio.h>
#include <stdlib.h>
int main() {
int d1, m1, g1, d2, m2, g2, n=1;
printf("unesite datum:\n");
scanf("%d%d%d", &d1, &m1, &g1);
printf("unesite drugi datum:\n");
scanf("%d%d%d", &d2, &m2, &g2);
if ((m1==2 && (g1%4==0) && d1>29) || (m1==2 && (g1%4!=0) && d1>28) ||
((m1==4 || m1==6 || m1==9 || m1==11) && d1>30) ||
(g1>2050 || g1<1950 || m1<1 || m1>12 || d1<1 || d1>31)) {
printf("greska.\n");
return 0;
}
if ((m2==2 && (g2%4==0) && d2>29) || (m2==2 && (g2%4!=0) && d2>28) ||
((m2==4 || m2==6 || m2==9 || m2==11) && d2>30) ||
(g2>2050 || g2<1950 || m2<1 || m2>12 || d2<1 || d2>31)) {
printf("greska.\n");
return 0;
}
if (g1<g2 || (g1==g2 && m1<m2) || (g1==g2 && m1==m2 && d1<d2)) {
int temp;
temp=g1;
g2=g1;
g1=temp;
temp=m1;
m2=m1;
m1=temp;
temp=d1;
d2=d1;
d1=temp;
}
while(d1!=d2 || m1!=m2 || g1!=g2) {
n++;
if((m1==2 && (m1%4==0) && d1<29) || (m1==2 && (g1%4!=0) && d1<28))
d1++;
else if((m1==1 || m1==3 || m1==5 || m1==7 || m1==8 || m1==10 || m1==12) && d1<31)
d1++;
else if((m1==4 || m1==6 || m1==9 || m1==11) && d1<30)
d1++;
else if((m1==2 && (m1%4==0) && d1==29) || (m1==2 && (g1%4!=0) && d1==28)||
((m1==1 || m1==3 || m1==5 || m1==7 || m1==8 || m1==10 || m1==12) && d1==31) ||
((m1==4 || m1==6 || m1==9 || m1==11) && d1==30)) {
d1==1;
if(m1==12) {
m1==1;
g1++;
}
else m1++;
}
}
printf("%d", n);
system("pause");
return 0;
}
[/code:1]
[size=9][color=#999999]Added after 21 seconds:[/color][/size]
to je 25 zadatak :)
moze li mi netko reci gdje je greska ovdje..pliiiiz
Kod: |
#include <stdio.h>
#include <stdlib.h>
int main() {
int d1, m1, g1, d2, m2, g2, n=1;
printf("unesite datum:\n");
scanf("%d%d%d", &d1, &m1, &g1);
printf("unesite drugi datum:\n");
scanf("%d%d%d", &d2, &m2, &g2);
if ((m1==2 && (g1%4==0) && d1>29) || (m1==2 && (g1%4!=0) && d1>28) ||
((m1==4 || m1==6 || m1==9 || m1==11) && d1>30) ||
(g1>2050 || g1<1950 || m1<1 || m1>12 || d1<1 || d1>31)) {
printf("greska.\n");
return 0;
}
if ((m2==2 && (g2%4==0) && d2>29) || (m2==2 && (g2%4!=0) && d2>28) ||
((m2==4 || m2==6 || m2==9 || m2==11) && d2>30) ||
(g2>2050 || g2<1950 || m2<1 || m2>12 || d2<1 || d2>31)) {
printf("greska.\n");
return 0;
}
if (g1<g2 || (g1==g2 && m1<m2) || (g1==g2 && m1==m2 && d1<d2)) {
int temp;
temp=g1;
g2=g1;
g1=temp;
temp=m1;
m2=m1;
m1=temp;
temp=d1;
d2=d1;
d1=temp;
}
while(d1!=d2 || m1!=m2 || g1!=g2) {
n++;
if((m1==2 && (m1%4==0) && d1<29) || (m1==2 && (g1%4!=0) && d1<28))
d1++;
else if((m1==1 || m1==3 || m1==5 || m1==7 || m1==8 || m1==10 || m1==12) && d1<31)
d1++;
else if((m1==4 || m1==6 || m1==9 || m1==11) && d1<30)
d1++;
else if((m1==2 && (m1%4==0) && d1==29) || (m1==2 && (g1%4!=0) && d1==28)||
((m1==1 || m1==3 || m1==5 || m1==7 || m1==8 || m1==10 || m1==12) && d1==31) ||
((m1==4 || m1==6 || m1==9 || m1==11) && d1==30)) {
d1==1;
if(m1==12) {
m1==1;
g1++;
}
else m1++;
}
}
printf("%d", n);
system("pause");
return 0;
}
|
Added after 21 seconds:
to je 25 zadatak
_________________ <3
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 20:42 sri, 25. 11. 2009 Naslov: |
|
|
[quote="Vanja_"]od ocaja sam skoro bacio komp kroz prozor...[/quote]
Pa nije komp pisao program... :twisted: Opcenito, ako se program rusi, problem je gotovo uvijek s memorijom; dok ne naucite dinamicku alokaciju (drugi semestar), jedino gdje koristite pointere su ovi u [tt]scanf()[/tt] i uskoro varijabilni argumenti funkcija, pa si te stvari prve provjerite.
@miam:
1. Kriva ti je usporedba:
[tt]if (g1<g2 || (g1==g2 && m1<m2) || (g1==g2 && m1==m2 && d1<d2))[/tt]
jer kaze "ako je prvi datum prije drugog onda ih zamijeni", a kasnije povecavas prvi (dakle kasniji) datum. Zamijeni [tt]<[/tt] i [tt]>[/tt].
2. Zamjena ti ne valja. Uvrsti samo [tt]d1 = 17[/tt] i [tt]d2 = 19[/tt] i izvedi zamjenu samo ta dva broja onako kako si napisala:
[code:1]temp = d1;
d2 = d1;
d1 = temp;[/code:1]
Vazno je da to sama izvedes, da vidis sto se desi, pa ti zato necu napisati kako treba biti! Nije tesko, ali potrudi se sama; koristit ce ti.
3. Sam inkrement datuma ti ne valja jer imas
[code:1]if (uvjet1)
else if (uvjet2)
...
else if (uvjetn){...}[/code:1]
Ako niti jedan od uvjeta u [tt]if()[/tt]-ovima nije zadovoljen (a to se moze desiti jer ti nisu svi uvjeti dobri; nisam trazio koji tocno fusha), onda se inkrement nikad nece napraviti, pa dobijes beskonacnu petlju.
Odmah iza [tt]while (d1 != d2 || m1 != m2 || g1 != g2) {[/tt] dodaj
[tt]printf("%d: %d.%d.%d. - %d.%d.%d.\n", n, d1, m1, g1, d2, m2, g2);[/tt]
pa ces brzo naci koji datum ne povecava, a na osnovu toga vidis koji uvjet ne valja.
Vanja_ (napisa): | od ocaja sam skoro bacio komp kroz prozor... |
Pa nije komp pisao program... Opcenito, ako se program rusi, problem je gotovo uvijek s memorijom; dok ne naucite dinamicku alokaciju (drugi semestar), jedino gdje koristite pointere su ovi u scanf() i uskoro varijabilni argumenti funkcija, pa si te stvari prve provjerite.
@miam:
1. Kriva ti je usporedba:
if (g1<g2 || (g1==g2 && m1<m2) || (g1==g2 && m1==m2 && d1<d2))
jer kaze "ako je prvi datum prije drugog onda ih zamijeni", a kasnije povecavas prvi (dakle kasniji) datum. Zamijeni < i >.
2. Zamjena ti ne valja. Uvrsti samo d1 = 17 i d2 = 19 i izvedi zamjenu samo ta dva broja onako kako si napisala:
Kod: | temp = d1;
d2 = d1;
d1 = temp; |
Vazno je da to sama izvedes, da vidis sto se desi, pa ti zato necu napisati kako treba biti! Nije tesko, ali potrudi se sama; koristit ce ti.
3. Sam inkrement datuma ti ne valja jer imas
Kod: | if (uvjet1)
else if (uvjet2)
...
else if (uvjetn){...} |
Ako niti jedan od uvjeta u if()-ovima nije zadovoljen (a to se moze desiti jer ti nisu svi uvjeti dobri; nisam trazio koji tocno fusha), onda se inkrement nikad nece napraviti, pa dobijes beskonacnu petlju.
Odmah iza while (d1 != d2 || m1 != m2 || g1 != g2) { dodaj
printf("%d: %d.%d.%d. - %d.%d.%d.\n", n, d1, m1, g1, d2, m2, g2);
pa ces brzo naci koji datum ne povecava, a na osnovu toga vidis koji uvjet ne valja.
_________________ 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] |
|
miam Forumaš(ica)

Pridružen/a: 03. 11. 2009. (11:19:45) Postovi: (70)16
Spol: 
|
Postano: 21:05 sri, 25. 11. 2009 Naslov: |
|
|
mozete li mi molim Vas reci valja li sad:
[code:1]
#include <stdio.h>
#include <stdlib.h>
int main() {
int d1, m1, g1, d2, m2, g2, n=1;
printf("unesite datum:\n");
scanf("%d%d%d", &d1, &m1, &g1);
printf("unesite drugi datum:\n");
scanf("%d%d%d", &d2, &m2, &g2);
if ((m1==2 && (g1%4==0) && d1>29) || (m1==2 && (g1%4!=0) && d1>28) ||
((m1==4 || m1==6 || m1==9 || m1==11) && d1>30) ||
(g1>2050 || g1<1950 || m1<1 || m1>12 || d1<1 || d1>31)) {
printf("greska.\n");
return 0;
}
if ((m2==2 && (g2%4==0) && d2>29) || (m2==2 && (g2%4!=0) && d2>28) ||
((m2==4 || m2==6 || m2==9 || m2==11) && d2>30) ||
(g2>2050 || g2<1950 || m2<1 || m2>12 || d2<1 || d2>31)) {
printf("greska.\n");
return 0;
}
if (g1>g2 || (g1==g2 && m1>m2) || (g1==g2 && m1==m2 && d1>d2)) {
int temp;
temp=g2;
g2=g1;
g1=temp;
temp=m2;
m2=m1;
m1=temp;
temp=d2;
d2=d1;
d1=temp;
}
while(d1!=d2 || m1!=m2 || g1!=g2) {
printf("%d: %d.%d.%d. - %d.%d.%d.\n", n, d1, m1, g1, d2, m2, g2);
n++;
if((m1==2 && (m1%4==0) && d1<29) || (m1==2 && (g1%4!=0) && d1<28))
d1++;
else if((m1==1 || m1==3 || m1==5 || m1==7 || m1==8 || m1==10 || m1==12) && d1<31)
d1++;
else if((m1==4 || m1==6 || m1==9 || m1==11) && d1<30)
d1++;
else if((m1==2 && (m1%4==0) && d1==29) || (m1==2 && (g1%4!=0) && d1==28)||
((m1==1 || m1==3 || m1==5 || m1==7 || m1==8 || m1==10 || m1==12) && d1==31) ||
((m1==4 || m1==6 || m1==9 || m1==11) && d1==30)) {
d1==1;
if(m1==12) {
m1==1;
g1++;
}
else m1++;
}
}
printf("%d\n", n);
system("pause");
return 0;
}
[/code:1]
naravno, ne treba ono printf, poslije while-a..i, promijenila sam onu zamjenu datuma i ono < i >..a za ovo 3. sta ste napisali, cini mi se da sad radi..??
[size=9][color=#999999]Added after 34 seconds:[/color][/size]
i hvala Vam puno :)
mozete li mi molim Vas reci valja li sad:
Kod: |
#include <stdio.h>
#include <stdlib.h>
int main() {
int d1, m1, g1, d2, m2, g2, n=1;
printf("unesite datum:\n");
scanf("%d%d%d", &d1, &m1, &g1);
printf("unesite drugi datum:\n");
scanf("%d%d%d", &d2, &m2, &g2);
if ((m1==2 && (g1%4==0) && d1>29) || (m1==2 && (g1%4!=0) && d1>28) ||
((m1==4 || m1==6 || m1==9 || m1==11) && d1>30) ||
(g1>2050 || g1<1950 || m1<1 || m1>12 || d1<1 || d1>31)) {
printf("greska.\n");
return 0;
}
if ((m2==2 && (g2%4==0) && d2>29) || (m2==2 && (g2%4!=0) && d2>28) ||
((m2==4 || m2==6 || m2==9 || m2==11) && d2>30) ||
(g2>2050 || g2<1950 || m2<1 || m2>12 || d2<1 || d2>31)) {
printf("greska.\n");
return 0;
}
if (g1>g2 || (g1==g2 && m1>m2) || (g1==g2 && m1==m2 && d1>d2)) {
int temp;
temp=g2;
g2=g1;
g1=temp;
temp=m2;
m2=m1;
m1=temp;
temp=d2;
d2=d1;
d1=temp;
}
while(d1!=d2 || m1!=m2 || g1!=g2) {
printf("%d: %d.%d.%d. - %d.%d.%d.\n", n, d1, m1, g1, d2, m2, g2);
n++;
if((m1==2 && (m1%4==0) && d1<29) || (m1==2 && (g1%4!=0) && d1<28))
d1++;
else if((m1==1 || m1==3 || m1==5 || m1==7 || m1==8 || m1==10 || m1==12) && d1<31)
d1++;
else if((m1==4 || m1==6 || m1==9 || m1==11) && d1<30)
d1++;
else if((m1==2 && (m1%4==0) && d1==29) || (m1==2 && (g1%4!=0) && d1==28)||
((m1==1 || m1==3 || m1==5 || m1==7 || m1==8 || m1==10 || m1==12) && d1==31) ||
((m1==4 || m1==6 || m1==9 || m1==11) && d1==30)) {
d1==1;
if(m1==12) {
m1==1;
g1++;
}
else m1++;
}
}
printf("%d\n", n);
system("pause");
return 0;
}
|
naravno, ne treba ono printf, poslije while-a..i, promijenila sam onu zamjenu datuma i ono < i >..a za ovo 3. sta ste napisali, cini mi se da sad radi..??
Added after 34 seconds:
i hvala Vam puno
_________________ <3
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 21:11 sri, 25. 11. 2009 Naslov: |
|
|
To sto radi za jedan ulaz, ne znaci da radi za sve. Probaj za
[tt]1 2 1991 2 1 1991[/tt]
Meni se zavrti u beskonacnoj petlji kad dodje do 31.1.1991. Zasto, ne znam... nisam trazio... to je bio prvi datum s kojim sam isprobavao.
Naravno, bez dodatnog [tt]printf()[/tt]-a ne bih (sa)znao da se zavrti u beskonacnost na datumu 31.1.1991. Dakle, dok se sredjuje program, korisno je (osim ako znas koristiti debugger, no meni su dodatni ispisi cesto pregledniji).
To sto radi za jedan ulaz, ne znaci da radi za sve. Probaj za
1 2 1991 2 1 1991
Meni se zavrti u beskonacnoj petlji kad dodje do 31.1.1991. Zasto, ne znam... nisam trazio... to je bio prvi datum s kojim sam isprobavao.
Naravno, bez dodatnog printf()-a ne bih (sa)znao da se zavrti u beskonacnost na datumu 31.1.1991. Dakle, dok se sredjuje program, korisno je (osim ako znas koristiti debugger, no meni su dodatni ispisi cesto pregledniji).
_________________ 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] |
|
miam Forumaš(ica)

Pridružen/a: 03. 11. 2009. (11:19:45) Postovi: (70)16
Spol: 
|
|
[Vrh] |
|
dark mathematician Forumaš(ica)


Pridružen/a: 17. 11. 2009. (22:05:18) Postovi: (19)16
Spol: 
|
|
[Vrh] |
|
|