Poslao: 15 Mar 2012 00:34
|
offline
- whisper

- Građanin
- Pridružio: 08 Avg 2011
- Poruke: 59
|
Posto sam pocetnik ne znam kako da uradim sledece. Hteo bih da napravim kada pogresim koliko godina imam (false) da me opet vrati na pocetak. npr Citat:Koliko imam godina?
>15
imam malo vise, pokusaj ponovo.
koliko imam godina?
#include <stdio.h>
int main()
{
int godina,pocetak;
godina=17;
pocetak:
printf("koliko ja imam godina?\n");
scanf("%d",&godina);
if (godina==17) {
printf("pogodio si!\n");
}
if (godina>17){
printf("imam manje, pokusaj ponovo\n");
goto pocetak;
}
if(godina<17)
{
printf("imam vise, pokusaj ponovo\n");
goto pocetak;
}
return 0;
}
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 15 Mar 2012 08:42
|
offline
- Pridružio: 25 Maj 2005
- Poruke: 1482
- Gde živiš: Gracanica, Kosovo
|
Koristi neku varijantu "while" petlje, npr:
int n;
while (scanf("%d", &n)){
if(n==17){
printf("Pogodio si!\n", n);
return 0;
}
else printf("Greszka, ponovo");
}
|
|
|
|
Poslao: 15 Mar 2012 08:48
|
offline
- N1k0l4

- Prijatelj foruma
- Pridružio: 06 Sep 2005
- Poruke: 3800
- Gde živiš: Beograd
|
goto je davno izbacen. Odnosno, ta paradigma 'spageti progrmairanje' je izbacena i zastarela
koristi ovu ideju:
Imas indikator , promenljivu pogodio = 0;
while(pogodio == 0)
{
// tvoje naredbe
//kad pogodi broj stavis sta treba i plus napises
pogodio=1;
}
edit:
pretece me soxxx
|
|
|
|
Poslao: 15 Mar 2012 23:02
|
offline
- whisper

- Građanin
- Pridružio: 08 Avg 2011
- Poruke: 59
|
#include <stdio.h>
int main(){
int god;
if (god==17){
printf("pogodio si!\n");
}
while (scanf("%d", &god)){
if(god==17){
printf("Pogodio si!\n", god);
return 0;
}
else printf("Greska, ponovo");
}
return 0;
}
izbaci
Citat:
godine.c: In function ‘main’:
godine.c:9:11: error: too many arguments for format [-Werror=format-extra-args]
cc1: all warnings being treated as errors
|
|
|
|
Poslao: 15 Mar 2012 23:19
|
offline
- N1k0l4

- Prijatelj foruma
- Pridružio: 06 Sep 2005
- Poruke: 3800
- Gde živiš: Beograd
|
printf("Pogodio si!\n", god);
zaboravio si %d da stavis u ispis
drugo
int god;
if (god==17){
proveravas neinicijalizovanu vrednost. Ko zna sta se tu nalazi.. a mozda bas i broj 17
dakle, stavi npr
int god=0;
|
|
|
|
Poslao: 16 Mar 2012 00:49
|
offline
- whisper

- Građanin
- Pridružio: 08 Avg 2011
- Poruke: 59
|
#include <stdio.h>
int main(){
int number;
int valid = 0;
while( valid == 0 ) {
printf("Enter a number between 1 and 10 ");
scanf("%d", &number);
if( number < 1 ) {
printf("Number is below 1. Try again\n");
valid = 0;
}
else if( number > 10 ) {
printf("Number is above 10. Try again\n");
valid = 0;
}
else
valid = 1;
printf("The number is %d\n", number );
}
return 0;
}
evo nasao sam nesto sto je slicno mom programu... e sad kad sam bio upisao "clear" u terminalu poceo je da mi spamuje "Number is above 10.Try again" "Number is below 1. Try again" moguce zato sto nisam ispisao uslov da mogu samo brojevi da se upisuju samo ... jel mozes da mi kazes sta sad da radim?
|
|
|
|
Poslao: 16 Mar 2012 09:54
|
offline
- N1k0l4

- Prijatelj foruma
- Pridružio: 06 Sep 2005
- Poruke: 3800
- Gde živiš: Beograd
|
Zasto nisi samo ubacio izmene na svoj kod. Sta ce ti taj sto si skinuo.
Na greskama se uci.
I gde upisujes clear, kad treba da uneses broj? Pitanje je kako on to reprezentuje i sta vidi u tom delu memorije. Moguce da ga vidi kao neki broj pa zato dobijas to sto dobijes.
|
|
|
|
Poslao: 16 Mar 2012 10:22
|
offline
- Pridružio: 25 Maj 2005
- Poruke: 1482
- Gde živiš: Gracanica, Kosovo
|
Evo ti primer koji radi, nadam se da razumes kod, ako ne pitaj. Dole smo definisali broj godina pomocu #define, tako da ako ubuduce menjas broj godina treba samo da izmenis tu #define liniju, a ne na tri mesta u kodu gde proveravas unos. Kada je upit tacan (broj==BROJ_GODINA) izlazimo iz petlje i programa sa return 0;. U druga dva slucaja kada je broj manji ili veci samo ispisujemo da broj nije tacan, i dalje se opet vracamo na while petlju.
#include <stdio.h>
#define BROJ_GODINA 17
int main(int argc, char *argv[]){
int broj = 0;
while (scanf("%d", &broj)){
if(broj==BROJ_GODINA){
printf("Tacno! Imam: %d godina!\n", broj);
return 0;
}
else if(broj>BROJ_GODINA){
printf("Greska, imam manje od %d godina! Probaj ponovo.\n", broj);
}
else if(broj<BROJ_GODINA){
printf("Greska, imam vise od %d godina! Probaj ponovo.\n", broj);
}
}
}
Sad nam napisi verziju koda koji radi ispravno koristeci metod koji ti je N1k0l4 naveo.
|
|
|
|
Poslao: 16 Mar 2012 17:07
|
offline
- whisper

- Građanin
- Pridružio: 08 Avg 2011
- Poruke: 59
|
proba.c:5:14: error: unused parameter ‘argc’ [-Werror=unused-parameter]
proba.c:5:26: error: unused parameter ‘argv’ [-Werror=unused-parameter]
da dodam : nisam ne windowsu, vec na linux, pa jos kad sam ucio c na kraju sam koristio kod "getch();" a kad to upisem prikazuje gresku onda upisem "return 0;" i radi
@N1k0l4 spamovalo je kad sam mahinalno upisao clear kod upita "Enter a number between 1 and 10"
|
|
|
|
Poslao: 16 Mar 2012 23:27
|
offline
- Pridružio: 25 Maj 2005
- Poruke: 1482
- Gde živiš: Gracanica, Kosovo
|
Verovatno kompajliras sa gcc opcijom '-Wextra' koji sadrzi '-Wunused-parameter' koji prijavljuje da se argc i argv ne koriste. argc je broj argumenata koji se zadaju programu, a argv je niz koji sadrzi te argumente - totalno nevazno sada u tvom primeru. NJih sam kucao po navici, slobodno mozes da ih izostavis (prazan main()).
Potrudi se da razumes zasto se nekad neke funkcije stavljaju u kod, nemoj samo da ih kopiras i koristis zato sto si video na netu da ih neko drugi koristi (kao npr. getch()).
|
|
|
|