Forumi
Home Pravila i pomoć Članovi Kalendar Današnji postovi


Povratak   PC Ekspert Forum > Računala > Software > Web dizajn, programiranje i ostalo
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 06.10.2009., 01:52   #1
Hao
Ž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!
Hao je offline   Reply With Quote
Staro 07.10.2009., 20:20   #2
Hao
Ž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!
Hao je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 08.10.2009., 09:36   #3
Dancho
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;
}
Dancho je offline   Reply With Quote
Staro 11.10.2009., 15:20   #4
Hao
Ž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!
Hao je offline   Reply With Quote
Staro 11.10.2009., 17:09   #5
munst0r
Premium
Moj komp
 
munst0r's Avatar
 
Datum registracije: Mar 2004
Lokacija: Bjelovar/Zagreb
Postovi: 357
Citiraj:
Autor Hao Pregled postova
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).
Ovaj 1 je isto uvjet, ali je on uvijek istinit. Dakle, time smo dobili beskonacnu petlju. Tj. bila bi beskonacna da unutar nje nema onog breaka, koji ce ju u odredjenom trenutku prekinuti.
Ti mozes umjesto while(1) napisati while(x != 2) i izbaciti onaj break iz else if bloka.

Citiraj:
Autor Hao Pregled postova
unsigned int, jel to znači bez predznaka, i zašto to ovdje paše bolje od običnog int?
Da, unsigned je bez predznaka. Recimo da je dobra praksa koristiti unsigned varijable dok znas da nikada neces u njih pohranjivati negativne brojeve, ali u tvom slucaju je to potpuno nebitno. Slobodno koristis obican (signed) int.


Citiraj:
Autor Hao Pregled postova
što znači return 0?
koja je razlika između int main() i običnog main()
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.

Citiraj:
Autor Hao Pregled postova
zašto da ne koristim goto naredbu?
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.
munst0r je offline   Reply With Quote
Staro 11.10.2009., 20:34   #6
Hao
Željan znanja
 
Datum registracije: Sep 2009
Lokacija: Slavonski Brod
Postovi: 10
hvala obojici!
__________________
Nisu rekli da će biti lako, rekli su da će vrijediti!
Hao je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Odgovori



Pravila postanja
Vi ne možete otvarati nove teme
Vi ne možete pisati odgovore
Vi ne možete uploadati priloge
Vi ne možete uređivati svoje poruke

BB code je Uključeno
Smajlići su Uključeno
[IMG] kod je Uključeno
HTML je Isključeno

Idi na