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

Pridružen/a: 23. 10. 2010. (10:46:13) Postovi: (4E)16
|
|
[Vrh] |
|
sailor m Forumaš(ica)

Pridružen/a: 23. 10. 2010. (10:46:13) Postovi: (4E)16
|
Postano: 13:30 ned, 21. 11. 2010 Naslov: |
|
|
može pomoć oko ovog.
javlja mi se greška:lvalue required as left operand of assignment.
greška se javlja za case(2) red.
ne znam kaj da napravim.
to je 6.zad.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int d, m, g, n;
printf("Upisi dan, mjesec i godinu(1950.-2050.):\n");
scanf("%d %d %d", &d,&m,&g);
if((d>31 || d<1) || (m<1 || m>12) || (g<1950 || g>2050) || (d>29 && m==2) ||
(d==29 && m==2 && g%4!=0) || (d==31 && (m==4 || m==6 || m==9 || m==11)) ||
(d==30 && (m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)))
{
printf("Greska!\n");
system("pause");
exit(-1);
}
printf("Upisi prirodni broj n:\n");
scanf("%d", &n);
d+=n;
while((d>31 && (m==1 || m==3 || m==5 || m==7 || m==8 || m==10)) || (d>31 && m==12) ||
(d>30 && (m==4 || m ==6 || m==9 || m==11)) || (d>29 && m==2) ||
(d>28 && m==2 && g%4!=0)) {
switch(m) {
case(1):
case(3):
case(5):
case(7):
case(8):
case(10):d-=31;
++m;
break;
case(4):
case(6):
case(9):
case(11):
d-=31;
++m;
break;
case(2): g%4 ? d-=28 : d-=29;
++m;
break;
case(12):d-=31;
m==1;
++g;
}
}
printf("%d dan(a) poslije: %d.%d.%d.", n, d, m, g);
system("pause");
return 0;
}
može pomoć oko ovog.
javlja mi se greška:lvalue required as left operand of assignment.
greška se javlja za case(2) red.
ne znam kaj da napravim.
to je 6.zad.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int d, m, g, n;
printf("Upisi dan, mjesec i godinu(1950.-2050.):\n");
scanf("%d %d %d", &d,&m,&g);
if((d>31 || d<1) || (m<1 || m>12) || (g<1950 || g>2050) || (d>29 && m==2) ||
(d==29 && m==2 && g%4!=0) || (d==31 && (m==4 || m==6 || m==9 || m==11)) ||
(d==30 && (m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)))
{
printf("Greska!\n");
system("pause");
exit(-1);
}
printf("Upisi prirodni broj n:\n");
scanf("%d", &n);
d+=n;
while((d>31 && (m==1 || m==3 || m==5 || m==7 || m==8 || m==10)) || (d>31 && m==12) ||
(d>30 && (m==4 || m ==6 || m==9 || m==11)) || (d>29 && m==2) ||
(d>28 && m==2 && g%4!=0)) {
switch(m) {
case(1):
case(3):
case(5):
case(7):
case( :
case(10):d-=31;
++m;
break;
case(4):
case(6):
case(9):
case(11):
d-=31;
++m;
break;
case(2): g%4 ? d-=28 : d-=29;
++m;
break;
case(12):d-=31;
m==1;
++g;
}
}
printf("%d dan(a) poslije: %d.%d.%d.", n, d, m, g);
system("pause");
return 0;
}
Description: |
|
 Download |
Filename: |
zad6.c |
Filesize: |
1.52 KB |
Downloaded: |
119 Time(s) |
|
|
[Vrh] |
|
Tomislav Forumaš(ica)

Pridružen/a: 04. 10. 2010. (20:18:25) Postovi: (181)16
Spol: 
|
Postano: 14:57 ned, 21. 11. 2010 Naslov: |
|
|
Neznam gdje ti je greska, ali ovo je rjesenje koje je Gino dao.. mislim da ce ti biti bolje da vidis ovakav pristup :).
#include <stdio.h>
#include <stdlib.h>
int dobar( int d, int m, int g ){
if( g < 1950 || g > 2050) return 0;
if( m < 1 || m > 12 ) return 0;
if( d < 1 || d > 31) return 0;
if( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 ) return 0;
if( m == 2 && d > 29 ) return 0;
if( g%4 != 0 && m == 2 && d == 29 ) return 0;
return 1;
}
int main(){
int d, m, g, n;
int i;
scanf( "%d%d%d%d", &d, &m, &g, &n );
if( !dobar( d, m, g ) ) {printf( "Greska!\n" ); return 0;}
for( i = 0 ; i < n ; ++i ){
d += 1;
if( d == 32 ){
d =1;
m += 1;
if( m == 13){ m = 1; g += 1;}
}
else if( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 )
{ d = 1; m += 1; }
else if( m == 2 && ((g%4 == 0 && d == 30) || (g%4 != 0 && d == 29)) ){
d = 1;
m = 3;
}
}
printf( "%d.%d.%d.", d, m, g );
system( "pause" );
return 0;
}
Neznam gdje ti je greska, ali ovo je rjesenje koje je Gino dao.. mislim da ce ti biti bolje da vidis ovakav pristup .
#include <stdio.h>
#include <stdlib.h>
int dobar( int d, int m, int g ){
if( g < 1950 || g > 2050) return 0;
if( m < 1 || m > 12 ) return 0;
if( d < 1 || d > 31) return 0;
if( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 ) return 0;
if( m == 2 && d > 29 ) return 0;
if( g%4 != 0 && m == 2 && d == 29 ) return 0;
return 1;
}
int main(){
int d, m, g, n;
int i;
scanf( "%d%d%d%d", &d, &m, &g, &n );
if( !dobar( d, m, g ) ) {printf( "Greska!\n" ); return 0;}
for( i = 0 ; i < n ; ++i ){
d += 1;
if( d == 32 ){
d =1;
m += 1;
if( m == 13){ m = 1; g += 1;}
}
else if( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 )
{ d = 1; m += 1; }
else if( m == 2 && ((g%4 == 0 && d == 30) || (g%4 != 0 && d == 29)) ){
d = 1;
m = 3;
}
}
printf( "%d.%d.%d.", d, m, g );
system( "pause" );
return 0;
}
|
|
[Vrh] |
|
sailor m Forumaš(ica)

Pridružen/a: 23. 10. 2010. (10:46:13) Postovi: (4E)16
|
|
[Vrh] |
|
Lanek_ Forumaš(ica)

Pridružen/a: 22. 10. 2010. (18:51:42) Postovi: (31)16
|
Postano: 16:15 ned, 21. 11. 2010 Naslov: |
|
|
[quote="Tomislav"]Neznam gdje ti je greska, ali ovo je rjesenje koje je Gino dao.. mislim da ce ti biti bolje da vidis ovakav pristup :).
#include <stdio.h>
#include <stdlib.h>
int dobar( int d, int m, int g ){
if( g < 1950 || g > 2050) return 0;
if( m < 1 || m > 12 ) return 0;
if( d < 1 || d > 31) return 0;
if( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 ) return 0;
if( m == 2 && d > 29 ) return 0;
if( g%4 != 0 && m == 2 && d == 29 ) return 0;
return 1;
}
int main(){
int d, m, g, n;
int i;
scanf( "%d%d%d%d", &d, &m, &g, &n );
if( !dobar( d, m, g ) ) {printf( "Greska!\n" ); return 0;}
for( i = 0 ; i < n ; ++i ){
d += 1;
if( d == 32 ){
d =1;
m += 1;
if( m == 13){ m = 1; g += 1;}
}
else if( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 )
{ d = 1; m += 1; }
else if( m == 2 && ((g%4 == 0 && d == 30) || (g%4 != 0 && d == 29)) ){
d = 1;
m = 3;
}
}
printf( "%d.%d.%d.", d, m, g );
system( "pause" );
return 0;
}[/quote]
ovak imam par pitanja sto se tice ovog koda.
ugl, ovo return 1 me muci
kada stavim u funkciju return 0 umjesto return 1 i maknem negaciju s funkcije da li je to isto dobar kod?
evo u attachmentu je ispavljeno
Tomislav (napisa): | Neznam gdje ti je greska, ali ovo je rjesenje koje je Gino dao.. mislim da ce ti biti bolje da vidis ovakav pristup .
#include <stdio.h>
#include <stdlib.h>
int dobar( int d, int m, int g ){
if( g < 1950 || g > 2050) return 0;
if( m < 1 || m > 12 ) return 0;
if( d < 1 || d > 31) return 0;
if( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 ) return 0;
if( m == 2 && d > 29 ) return 0;
if( g%4 != 0 && m == 2 && d == 29 ) return 0;
return 1;
}
int main(){
int d, m, g, n;
int i;
scanf( "%d%d%d%d", &d, &m, &g, &n );
if( !dobar( d, m, g ) ) {printf( "Greska!\n" ); return 0;}
for( i = 0 ; i < n ; ++i ){
d += 1;
if( d == 32 ){
d =1;
m += 1;
if( m == 13){ m = 1; g += 1;}
}
else if( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 )
{ d = 1; m += 1; }
else if( m == 2 && ((g%4 == 0 && d == 30) || (g%4 != 0 && d == 29)) ){
d = 1;
m = 3;
}
}
printf( "%d.%d.%d.", d, m, g );
system( "pause" );
return 0;
} |
ovak imam par pitanja sto se tice ovog koda.
ugl, ovo return 1 me muci
kada stavim u funkciju return 0 umjesto return 1 i maknem negaciju s funkcije da li je to isto dobar kod?
evo u attachmentu je ispavljeno
Description: |
|
 Download |
Filename: |
zadatak6.c |
Filesize: |
1.56 KB |
Downloaded: |
106 Time(s) |
|
|
[Vrh] |
|
Phoenix Forumaš(ica)


Pridružen/a: 15. 05. 2010. (18:46:07) Postovi: (164)16
Sarma: -
|
Postano: 16:43 ned, 21. 11. 2010 Naslov: |
|
|
@sailor m: Probaj s ovim:
[code:1]d = g%4 ? d-28 : d-29;[/code:1]
Neka ti drugi i treći izraz ne budu naredbe, već vrijednosti. Ako treba, pridruži to varijabli d, kao u ovom primjeru. :D
Inače, u kodu imaš još jedan maleni lapsuz. Što se tiče case(12), stavi:
[code:1]m=1;[/code:1]
Mislim da program sada radi. :)
(Inače, još jedna stvar: traži se unos datuma i broja n. Ako unesemo pogrešan datum, uopće ne unosimo n zbog najave greške. Uglavnom je poželjno da se unese i n pa tek onda najavi grešku, osim ako ne piše drugačije. :))
@Lanek_: Nije dobar kod jer će funkcija stalno vraćati nulu i nikada neće najaviti grešku u datumu.
Trebaš napraviti funkciju takvu da vraća jednu vrijednost ako datum valja, a drugu ako je datum pogrešan. U Ginovom kodu vraća vrijednost 0 ako je datum pogrešan, a 1 ako je točan.
Ako se već želiš riješiti negacije, onda zamijeni sve "return 0" i "return 1". Odnosno:
[code:1]int dobar( int d, int m, int g ){
if( g < 1950 || g > 2050) return 1;
if( m < 1 || m > 12 ) return 1;
if( d < 1 || d > 31) return 1;
if( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 ) return 1;
if( m == 2 && d > 28 ) return 1;
if( g%4 != 0 && m == 2 && d == 29 ) return 1;
return 0;
}[/code:1]
"return x" znači da, kada pozoveš funkciju "dobar" u main-u, ona će imati vrijednost x, a x može biti bilo što. Samo treba provjeriti koja je vrijednost funkcije dobar(d, m, g) da bi znali je li datum valjan ili nevaljan.
U našem slučaju vraća vrijednosti 0 i 1. Samo treba provjeriti kada vraća koju vrijednost pa ćemo znati jesmo li učitali dobar datum.
@sailor m: Probaj s ovim:
Kod: | d = g%4 ? d-28 : d-29; |
Neka ti drugi i treći izraz ne budu naredbe, već vrijednosti. Ako treba, pridruži to varijabli d, kao u ovom primjeru.
Inače, u kodu imaš još jedan maleni lapsuz. Što se tiče case(12), stavi:
Mislim da program sada radi.
(Inače, još jedna stvar: traži se unos datuma i broja n. Ako unesemo pogrešan datum, uopće ne unosimo n zbog najave greške. Uglavnom je poželjno da se unese i n pa tek onda najavi grešku, osim ako ne piše drugačije. )
@Lanek_: Nije dobar kod jer će funkcija stalno vraćati nulu i nikada neće najaviti grešku u datumu.
Trebaš napraviti funkciju takvu da vraća jednu vrijednost ako datum valja, a drugu ako je datum pogrešan. U Ginovom kodu vraća vrijednost 0 ako je datum pogrešan, a 1 ako je točan.
Ako se već želiš riješiti negacije, onda zamijeni sve "return 0" i "return 1". Odnosno:
Kod: | int dobar( int d, int m, int g ){
if( g < 1950 || g > 2050) return 1;
if( m < 1 || m > 12 ) return 1;
if( d < 1 || d > 31) return 1;
if( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31 ) return 1;
if( m == 2 && d > 28 ) return 1;
if( g%4 != 0 && m == 2 && d == 29 ) return 1;
return 0;
} |
"return x" znači da, kada pozoveš funkciju "dobar" u main-u, ona će imati vrijednost x, a x može biti bilo što. Samo treba provjeriti koja je vrijednost funkcije dobar(d, m, g) da bi znali je li datum valjan ili nevaljan.
U našem slučaju vraća vrijednosti 0 i 1. Samo treba provjeriti kada vraća koju vrijednost pa ćemo znati jesmo li učitali dobar datum.
|
|
[Vrh] |
|
Linadus Forumaš(ica)

Pridružen/a: 07. 09. 2010. (12:57:28) Postovi: (2C)16
|
|
[Vrh] |
|
Lanek_ Forumaš(ica)

Pridružen/a: 22. 10. 2010. (18:51:42) Postovi: (31)16
|
|
[Vrh] |
|
Linadus Forumaš(ica)

Pridružen/a: 07. 09. 2010. (12:57:28) Postovi: (2C)16
|
|
[Vrh] |
|
Lanek_ Forumaš(ica)

Pridružen/a: 22. 10. 2010. (18:51:42) Postovi: (31)16
|
|
[Vrh] |
|
Phoenix Forumaš(ica)


Pridružen/a: 15. 05. 2010. (18:46:07) Postovi: (164)16
Sarma: -
|
Postano: 18:05 ned, 21. 11. 2010 Naslov: |
|
|
1. Ne. Program funkcionira tako da se varijabla d (broj dana) poveća za 1 i, ako je mjesec "prekoračen" (tj. ako je datum veći od broja dana u nekom mjesecu), onda "prelazi" u novi mjesec.
U slučaju s drugim mjesecom, to radi ako je godina prijestupna, a dan 30. u mjesecu, odnosno ako godina nije prijestupna, a dan 29. u mjesecu.
To što si ti napisala bi preskakalo zadnji dan u veljači.
Prouči i ostale if-ove u tom dijelu programa pa će ti biti jasnije. :)
2. To nije krivo. 2008. godina je prijestupna.
1. Ne. Program funkcionira tako da se varijabla d (broj dana) poveća za 1 i, ako je mjesec "prekoračen" (tj. ako je datum veći od broja dana u nekom mjesecu), onda "prelazi" u novi mjesec.
U slučaju s drugim mjesecom, to radi ako je godina prijestupna, a dan 30. u mjesecu, odnosno ako godina nije prijestupna, a dan 29. u mjesecu.
To što si ti napisala bi preskakalo zadnji dan u veljači.
Prouči i ostale if-ove u tom dijelu programa pa će ti biti jasnije.
2. To nije krivo. 2008. godina je prijestupna.
|
|
[Vrh] |
|
Lanek_ Forumaš(ica)

Pridružen/a: 22. 10. 2010. (18:51:42) Postovi: (31)16
|
|
[Vrh] |
|
A-tom Forumaš(ica)

Pridružen/a: 18. 05. 2010. (22:18:01) Postovi: (AB)16
Spol: 
|
Postano: 18:28 ned, 21. 11. 2010 Naslov: |
|
|
Moze li pomoc oko Fibonaccia? Gdje je greska? Ispravno alfu ispisuje ya tocan niz dok za nefibonaccija ispisuje neku random vrijednost alfe.
[code:1]
#include<stdio.h>
int main()
{
int n, a, alfa, b, i, x, c, d, provjera=1, temp;
scanf("%d %d %d", &n,&a,&b);
if(n>=2)
{
scanf("%d", &c);
alfa=(c-b)/a;
for(i=0; i<(n-3); i++)
{
scanf("%d", &d);
x= i + alfa*b;
temp=c;
c=d;
b=temp;
if(x!=d)
provjera=0;
}
if(provjera=1)
{
printf("Niz je fibonaccijevski.\n");
printf("alfa= %d", alfa);
}
else
printf("Niz nije fibonaccijevski");
}
return 0;
}[/code:1]
Moze li pomoc oko Fibonaccia? Gdje je greska? Ispravno alfu ispisuje ya tocan niz dok za nefibonaccija ispisuje neku random vrijednost alfe.
Kod: |
#include<stdio.h>
int main()
{
int n, a, alfa, b, i, x, c, d, provjera=1, temp;
scanf("%d %d %d", &n,&a,&b);
if(n>=2)
{
scanf("%d", &c);
alfa=(c-b)/a;
for(i=0; i<(n-3); i++)
{
scanf("%d", &d);
x= i + alfa*b;
temp=c;
c=d;
b=temp;
if(x!=d)
provjera=0;
}
if(provjera=1)
{
printf("Niz je fibonaccijevski.\n");
printf("alfa= %d", alfa);
}
else
printf("Niz nije fibonaccijevski");
}
return 0;
} |
|
|
[Vrh] |
|
vsego Site Admin


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

Pridružen/a: 18. 05. 2010. (22:18:01) Postovi: (AB)16
Spol: 
|
|
[Vrh] |
|
pbakic Forumaš(ica)

Pridružen/a: 05. 10. 2009. (17:48:30) Postovi: (143)16
Spol: 
|
|
[Vrh] |
|
Dofalol Forumaš(ica)

Pridružen/a: 24. 10. 2010. (21:25:31) Postovi: (15)16
Spol: 
|
|
[Vrh] |
|
Flame Forumaš(ica)

Pridružen/a: 12. 08. 2009. (02:14:39) Postovi: (53)16
Spol: 
|
|
[Vrh] |
|
Dofalol Forumaš(ica)

Pridružen/a: 24. 10. 2010. (21:25:31) Postovi: (15)16
Spol: 
|
|
[Vrh] |
|
ceps Forumaš(ica)

Pridružen/a: 08. 10. 2010. (13:03:07) Postovi: (13A)16
|
|
[Vrh] |
|
|