|
![]() |
#1 |
Željan znanja
Datum registracije: Sep 2009
Lokacija: Slavonski Brod
Postovi: 10
|
switch i system("pause")
upišem decimalni broj kao x i beskonačna petlja, kako riješiti problem? stavim float x; javlja grešku kod switch, znam i zašto. kada stavim system("pause"); poslije svega unutar glavnog bloka naredbi, taman prije zadnje } javlja grešku, a i kada stavim poslije printfa u case-u 2, prije breakea. Zašto mi neće system("pause"); ??? mislim da mi je tu grešku javljao i prije u nekim programima koje sam sad radio. EDIT: negdje sam bio naletio da je netko rekao da bi se system("pause") trebao što manje upotrebljavati. zašto? Code:
#include<stdio.h> main() { int x; pocetak: printf("Upisi 1 ili 2 i stisni enter: "); scanf("%d",&x);; switch(x) { case 1: printf("Katarina, odabrala si krivi broj! :P\n"); goto pocetak; break; case 2: printf("Katarina VOLIM TE! ! ! ! ! <3"); break; default: printf("Katarina rekao sam 1 ili 2, sad bi ona %d =_=\n",x); goto pocetak; break; } }
__________________
Nisu rekli da će biti lako, rekli su da će vrijediti! |
![]() |
![]() |
![]() |
#2 |
Željan znanja
Datum registracije: Sep 2009
Lokacija: Slavonski Brod
Postovi: 10
|
ajde sad, toliki ljude sam vidio da se bahate i prave pametni te se razmeću svojim znanjem kao da su postigli nešto nemoguće za postići, naučiti programirati, a sada kada tražim pomoć tajac.
__________________
Nisu rekli da će biti lako, rekli su da će vrijediti! |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
#3 |
Registered User
Datum registracije: Jun 2007
Lokacija: cro
Postovi: 42
|
@Hao 1.polako momak,mozda oni clanovi foruma koji znaju programirati nisu vidjeli tvoj post... 2.da bi koristio system funkciju moras ukljuciti stdlib.h header posto je ona tamo deklarirana 3.evo ovo bi trebalo raditi ( btw goto naredba je ![]() Code:
#include <stdio.h> int main() { unsigned int x=0; do { printf("Upisi 1 ili 2 i stisni enter:"); scanf("%u",&x); if( x==1 ) printf("Katarina, odabrala si krivi broj! :P\n"); else if( x==2 ) { printf("Katarina VOLIM TE! ! ! ! ! <3\n"); break; } else printf("Katarina rekao sam 1 ili 2, sad bi ona %u =_=\n",x); }while(1); return 0; } |
![]() |
![]() |
![]() |
#4 |
Željan znanja
Datum registracije: Sep 2009
Lokacija: Slavonski Brod
Postovi: 10
|
ok a sada da analiziram šta tvoj program radi. ja ne mogu tako nešto napisati jer nikada nismo radili s unsigned int, return 0 niti while(1) možeš li molim te objasniti šta to znači? radio sam sa dowhile petljom ali uvijek tipa while(uvjet). unsigned int, jel to znači bez predznaka, i zašto to ovdje paše bolje od običnog int? ovaj break razumijem, on prekida cijelu tu dowhile petlju. što znači return 0? koja je razlika između int main() i običnog main() zašto da ne koristim goto naredbu?
__________________
Nisu rekli da će biti lako, rekli su da će vrijediti! |
![]() |
![]() |
![]() |
#5 | ||
Premium
Datum registracije: Mar 2004
Lokacija: Bjelovar/Zagreb
Postovi: 357
|
Citiraj:
Ti mozes umjesto while(1) napisati while(x != 2) i izbaciti onaj break iz else if bloka. Citiraj:
Opet, i jedno i drugo ce raditi jednako, ali je bolja praksa napisati int main() nego samo main(). Naime, svaki program bi, neposredno prije gasenja, trebao vratiti operativnom sustavu nekakvu povratnu informaciju o tome da li se ugasio uspjesno, ili je mozda doslo do neke greske. Ako napises samo main(), to znaci da glavna funkcija pri svom zavrsetku nece vratiti nista, dok ce int main() vratiti neki broj. return 0 upravo radi to, vraca nulu operativnom sustavu neposredno prije nego tvoj program zavrsi s izvodjenjem, a nula se obicno koristi kao podatak da je program uredno zavrsio sa svojim radom. Goto naredbe su odavno izbacene iz upotrebe u svim visim programskim jezicima i treba ih potpuno izbjegavati. One narusavaju linearnost izvodjenja programskog koda, otezavaju prevodjenje programa u strojni kod te cine sam izvorni kod nepreglednim, neorganiziranim te su cesti uzrok greskama. |
||
![]() |
![]() |
![]() |
#6 |
Željan znanja
Datum registracije: Sep 2009
Lokacija: Slavonski Brod
Postovi: 10
|
hvala obojici!
__________________
Nisu rekli da će biti lako, rekli su da će vrijediti! |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
|
|