C++ if while

ShadowNinjaMan

Primećen član
Poruka
549
Dobar dan juche sam krenuo da uchim C++ i danas naravno izbio problem ne mogu da nadjem kako.Msm pretpostavljam al ne znam kako to da ispravim :otkacio: :otkacio:

Evo kako program izgleda.Radi se kao o nekoj prodavnici koja prodaje cipele sako i sat

int x;
....
....
cout << " Upisite broj sta zelite da kupite(1,2,3)";
cin >> x;
if(x==1)
{
cout << "Kupili ste sako!";
...
...(sada kao ispisuje istoriju o tom sakou)
}
if(x==2)
{
cout << "Kupili ste cipele!";
...
...
}
if(x==3)
{
cout << " Kupili ste sat!";
...
...
}
else
{
cout << "Pogresno ste uneli broj!Molim startujte program ponovo.";
}



E sada on pokrene program sve dobro,ali kada ukucam broj 1 ili 2 izbaci mi kupili ste sako ili cipele ali izbaci mi i funkciju else Pogresno ste uneli broj!Molim startujte program ponovo dok sa brojem 3 to nije slucaj.Da li neko zna zasto???
 
Nece ni dalje ...

Sada ispadne kada ukucam 1 2 puta ispadne Molim startujte program ponovo kada ukucam 2 1 ispadne Molim startujte program ponovo dok sa 3 nishta ne ispadne :D

Ovo je toliko zalosno da mi je smeshno.......!!! :D :D

ne kapiram gde je problem..?
 
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
int x;

cout << "Dobrodosli u Online prodavnicu!\n";
cout << "Sponzor Online prodavnice je xxx Corporation!\n\n";
cout << "Izvolite katalog.Pogledajte shta biste hteli da kupite:\n";
cout << "1.Cipele - 300$ \n2.Sako 400$ \n3.Sat - 1.250.000$\n\n";
cout << "Upisite broj onog shta biste hteli da kupite:";

//Sta bi hteo da kupim

cin >> x;

if(x==1)
{
cout << "Izabrali ste xxx cipele!To ce vas kostati 300$.\n";
cout << "xxx cipele su nastale pocetkom 21 veka\n kada je mladi poznati biznismen xxx\n";
cout << "Ulozio preko 50.000.000$ u dobrotvorne svrhe u \ndrzhavu Etiopiju.Vlasti Etiopije su mu poklonile\n";
cout << "Staru fabriku cipela kojoj je on udahnuo \nzivot i postale su najpoznatije cipele na svetu!\n\n\n";
}

else
cout << "uneli ste pogresan broj.Molim startujte program ponovo!";

if(x==2)

{
cout << "Izabrali ste sako marke xxx!To ce vas kostati 400$.\n";
cout << "Sako marke xxx je nastao pocetkom 21 veka\n kada je mladi poznati biznismen xxx\n ";
cout << "Ulozio u Severnu Koreju 100.000.000$ i tako spasio milione ljudskih zivota!\n";
cout << "Narod da bi mu se oduzio poklonili su mu fabriku \nSakoa i danas je Severna Koreja najpoznatija po svojim dobrim sakoima\n\n\n";
}

else
cout << "uneli ste pogresan broj.Molim startujte program ponovo!";


if(x==3)

{
cout << "Izabrali ste sat marke xxx!To ce vas kostati 1.250.000$\n";
cout << "Sat marke xxx se proizvodi u\n Srbiji(Tu je xxx rodjen)\n";
cout << "Godisnje se izvozi oko 200\n takvih satova.Krase ga dijamanti a \nkazaljke su napravljenje od kamenja sa Saturna.\n";
cout << "xxx je godine 2014 poklonio 7 ovakvih satova Rusiji \nzbog duge saradnje izmedju pravoslavnih braca!\n\n\n";
}

else
cout << "uneli ste pogresan broj.Molim startujte program ponovo!";


system("PAUSE");
return EXIT_SUCCESS;
}
 
Kod:
#include "windows.h"

typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;

DWORD aReadANDWritten;
DWORD aToWrite;
COORD curCoord;
void * aOut;
void * aIn;
void * ha1;

void voutconsole (BYTE *);
BYTE vinconsole (void);

#define VOUT( a, b ) aToWrite = ##b; voutconsole (##a)

void InitializeConsole (void)
{
    ha1 = CreateConsoleScreenBuffer (GENERIC_WRITE + GENERIC_READ, NULL, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
    aIn = GetStdHandle (STD_INPUT_HANDLE);
    aOut = ha1;
    SetConsoleMode (aIn, 0);
    curCoord.X = 1;
    curCoord.Y = 2;
    SetConsoleActiveScreenBuffer (ha1);
    SetConsoleCursorPosition (aOut, curCoord);
}

BYTE vinconsole (void)
{
    BYTE retval;
    bool blnKey = false;
    INPUT_RECORD aconvenientInput = INPUT_RECORD();
    BYTE * aInput = (BYTE*)&aconvenientInput.Event.KeyEvent.uChar.AsciiChar;

    while (!blnKey)
    {
        ReadConsoleInput (aIn, &aconvenientInput, 1, &aReadANDWritten);
        if (aconvenientInput.EventType == KEY_EVENT && aconvenientInput.Event.KeyEvent.bKeyDown == TRUE)
        {
            switch (*aInput)
            {
            case 49:
            case 50:
            case 51:
                retval = *aInput - 48;
                blnKey = true;
                break;
            default:
                break;
            }
        }
    }
    return retval;

}

void SetColors (WORD value)
{
	SetConsoleTextAttribute (aOut, value);
}

void MoveCursor (WORD x, WORD y)
{
	curCoord.X = x;
	curCoord.Y = y;
	SetConsoleCursorPosition (aOut, curCoord);
}

void vinc (void)
{
    bool blnKey = false;
    INPUT_RECORD aconvenientInput = INPUT_RECORD();
    BYTE * aInput = (BYTE*)&aconvenientInput.Event.KeyEvent.uChar.AsciiChar;

    while (!blnKey)
    {
        ReadConsoleInput (aIn, &aconvenientInput, 1, &aReadANDWritten);
        if (aconvenientInput.EventType == KEY_EVENT && aconvenientInput.Event.KeyEvent.bKeyDown == TRUE)
        {
			blnKey = true;
		}
    }
}

void voutconsole (BYTE * vText)
{
    curCoord.X += (SHORT) aToWrite;
    WriteFile (aOut, vText, aToWrite, &aReadANDWritten, NULL);
}


#define VIN vinconsole ()

void main (void)
{
	BYTE Res;
	BYTE * __0 = (BYTE * )"sako!  ";
	BYTE * __1 = (BYTE * )"cipele!";
	BYTE * __2 = (BYTE * )"sat!   ";
	BYTE * _0_ = (BYTE * )"<1>";
	BYTE * _1_ = (BYTE * )"<2>";
	BYTE * _2_ = (BYTE * )"<3>";

	BYTE * _0 = (BYTE * )"Kupio si sako!  ";
	BYTE * _1 = (BYTE * )"Kupio si cipele!";
	BYTE * _2 = (BYTE * )"Kupio si sat!  ";
	InitializeConsole ();

	SetColors (FOREGROUND_RED + FOREGROUND_GREEN + FOREGROUND_BLUE + FOREGROUND_INTENSITY);

	MoveCursor (1, 1);
	VOUT (__0, 7);
	MoveCursor (1, 2);
	VOUT (__1, 7);
	MoveCursor (1, 3);
	VOUT (__2, 7);

	SetColors (FOREGROUND_GREEN + FOREGROUND_INTENSITY);

	MoveCursor (9, 1);
	VOUT (_0_, 3);
	MoveCursor (9, 2);
	VOUT (_1_, 3);
	MoveCursor (9, 3);
	VOUT (_2_, 3);

	Res = VIN;

	SetColors (0);

	MoveCursor (1, 1);
	VOUT (_1, 11);
	MoveCursor (1, 2);
	VOUT (_1, 11);
	MoveCursor (1, 3);
	VOUT (_1, 11);

	MoveCursor (1, 1);
	SetColors (FOREGROUND_RED + FOREGROUND_GREEN + FOREGROUND_BLUE);

	switch (Res)
	{
	case 1:
		VOUT (_0, 16);
		break;
	case 2:
		VOUT (_1, 16);
		break;
	case 3:
		VOUT (_2, 16);
		break;
	}

	vinc ();
}

sa sve bojama. :)
download

Vlada me savetovao da ti kazem da ne pises ch, ch i w i slicna slova. U pravu je covek, batali to...
 
Poslednja izmena:
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
int x;

cout << "Dobrodosli u Online prodavnicu!\n";
cout << "Sponzor Online prodavnice je xxx Corporation!\n\n";
cout << "Izvolite katalog.Pogledajte shta biste hteli da kupite:\n";
cout << "1.Cipele - 300$ \n2.Sako 400$ \n3.Sat - 1.250.000$\n\n";
cout << "Upisite broj onog shta biste hteli da kupite:";

//Sta bi hteo da kupim

cin >> x;

if(x==1)
{
cout << "Izabrali ste xxx cipele!To ce vas kostati 300$.\n";
cout << "xxx cipele su nastale pocetkom 21 veka\n kada je mladi poznati biznismen xxx\n";
cout << "Ulozio preko 50.000.000$ u dobrotvorne svrhe u \ndrzhavu Etiopiju.Vlasti Etiopije su mu poklonile\n";
cout << "Staru fabriku cipela kojoj je on udahnuo \nzivot i postale su najpoznatije cipele na svetu!\n\n\n";
}

else
cout << "uneli ste pogresan broj.Molim startujte program ponovo!";

if(x==2)

{
cout << "Izabrali ste sako marke xxx!To ce vas kostati 400$.\n";
cout << "Sako marke xxx je nastao pocetkom 21 veka\n kada je mladi poznati biznismen xxx\n ";
cout << "Ulozio u Severnu Koreju 100.000.000$ i tako spasio milione ljudskih zivota!\n";
cout << "Narod da bi mu se oduzio poklonili su mu fabriku \nSakoa i danas je Severna Koreja najpoznatija po svojim dobrim sakoima\n\n\n";
}

else
cout << "uneli ste pogresan broj.Molim startujte program ponovo!";


if(x==3)

{
cout << "Izabrali ste sat marke xxx!To ce vas kostati 1.250.000$\n";
cout << "Sat marke xxx se proizvodi u\n Srbiji(Tu je xxx rodjen)\n";
cout << "Godisnje se izvozi oko 200\n takvih satova.Krase ga dijamanti a \nkazaljke su napravljenje od kamenja sa Saturna.\n";
cout << "xxx je godine 2014 poklonio 7 ovakvih satova Rusiji \nzbog duge saradnje izmedju pravoslavnih braca!\n\n\n";
}

else
cout << "uneli ste pogresan broj.Molim startujte program ponovo!";


system("PAUSE");
return EXIT_SUCCESS;
}

Sinak, jesi li ikad cuo za switch petlju ;) Ali dobro za gluplje skuplje
 
vinc ti je skracenica za
vinconsole ();

typedef mozes slobodno da obrises i sve ce da ti radi.

case ti je skracenica da ne pisem mnogo if-ova;
al slobodno izmeni i napisi ovako:
Kod:
	if (Res == 1)
	{
		VOUT (_0, 16);
	}
	else if (Res == 2)
	{
		VOUT (_1, 16);
	}
	else //Mozes i else if (Res == 3) al nema potrebe jer je sigurno 3. // ti je komentar u jednoj liniji
	{
		VOUT (_2, 16);
	}
 
Poslednja izmena:
ako je samo jedan izraz ispod if onda mozes i bez { ... } zagrada za blokove.
Kod:
	if (Res == 1)
		VOUT (_0, 16);
	else if (Res == 2)
		VOUT (_1, 16);
	else //Mozes i else if (Res == 3) al nema potrebe jer je sigurno 3. // ti je komentar u jednoj liniji
		VOUT (_2, 16);
 
#define nesto nesto drugo

i onda koristis samo nesto u kodu umesto nesto_drugo

recimo

char GlobalDescriptorTable;
#define GDT GlobalDescriptorTable
GDT = 13; //Isto sto i: GlobalDescriptorTable = 13
 
E SAD, ako ces da uradis ovo:
#define C_R char

nemoze. Odnosno moze, ali nedje ce da te zezne.

jer kad definises neki tip kao skracenicu ili drugo ime umesto #define kao za identifikatore, ovde koristis typedef, i obavezno ima ; na kraju

typedef char C_R; //OK
C_R c = 1;
isto sto i
char c = 1;
 
Sve filozofi.

LM... evo ti ispravka onoga sto si napisao gore:

Kod:
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
	int x;

	cout << "Dobrodosli u Online prodavnicu!\n";
	cout << "Sponzor Online prodavnice je xxx Corporation!\n\n";
	cout << "Izvolite katalog.Pogledajte shta biste hteli da kupite:\n";
	cout << "1.Cipele - 300$ \n2.Sako 400$ \n3.Sat - 1.250.000$\n\n";
	cout << "Upisite broj onog shta biste hteli da kupite:";

	cin >> x;

	if(x==1)
	{
		cout << "Izabrali ste xxx cipele!To ce vas kostati 300$.\n";
		cout << "xxx cipele su nastale pocetkom 21 veka\n kada je mladi poznati biznismen xxx\n";
		cout << "Ulozio preko 50.000.000$ u dobrotvorne svrhe u \ndrzhavu Etiopiju.Vlasti Etiopije su mu poklonile\n";
		cout << "Staru fabriku cipela kojoj je on udahnuo \nzivot i postale su najpoznatije cipele na svetu!\n\n\n";
	}

	else if(x==2)
	{
		cout << "Izabrali ste sako marke xxx!To ce vas kostati 400$.\n";
		cout << "Sako marke xxx je nastao pocetkom 21 veka\n kada je mladi poznati biznismen xxx\n ";
		cout << "Ulozio u Severnu Koreju 100.000.000$ i tako spasio milione ljudskih zivota!\n";
		cout << "Narod da bi mu se oduzio poklonili su mu fabriku \nSakoa i danas je Severna Koreja najpoznatija po svojim dobrim sakoima\n\n\n";
	}

	else if(x==3)
	{
		cout << "Izabrali ste sat marke xxx!To ce vas kostati 1.250.000$\n";
		cout << "Sat marke xxx se proizvodi u\n Srbiji(Tu je xxx rodjen)\n";
		cout << "Godisnje se izvozi oko 200\n takvih satova.Krase ga dijamanti a \nkazaljke su napravljenje od kamenja sa Saturna.\n";
		cout << "xxx je godine 2014 poklonio 7 ovakvih satova Rusiji \nzbog duge saradnje izmedju pravoslavnih braca!\n\n\n";
	}

	else
	{
		cout << "uneli ste pogresan broj.Molim startujte program ponovo!";
	}

	system("PAUSE");
	return EXIT_SUCCESS;
}

Reci ako ti stogod nije jasno kako funkcionise i ako treba tumacenje mehanike.
 
Sve filozofi.

LM... evo ti ispravka onoga sto si napisao gore:

Kod:
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
	int x;

	cout << "Dobrodosli u Online prodavnicu!\n";
	cout << "Sponzor Online prodavnice je xxx Corporation!\n\n";
	cout << "Izvolite katalog.Pogledajte shta biste hteli da kupite:\n";
	cout << "1.Cipele - 300$ \n2.Sako 400$ \n3.Sat - 1.250.000$\n\n";
	cout << "Upisite broj onog shta biste hteli da kupite:";

	cin >> x;

	if(x==1)
	{
		cout << "Izabrali ste xxx cipele!To ce vas kostati 300$.\n";
		cout << "xxx cipele su nastale pocetkom 21 veka\n kada je mladi poznati biznismen xxx\n";
		cout << "Ulozio preko 50.000.000$ u dobrotvorne svrhe u \ndrzhavu Etiopiju.Vlasti Etiopije su mu poklonile\n";
		cout << "Staru fabriku cipela kojoj je on udahnuo \nzivot i postale su najpoznatije cipele na svetu!\n\n\n";
	}

	else if(x==2)
	{
		cout << "Izabrali ste sako marke xxx!To ce vas kostati 400$.\n";
		cout << "Sako marke xxx je nastao pocetkom 21 veka\n kada je mladi poznati biznismen xxx\n ";
		cout << "Ulozio u Severnu Koreju 100.000.000$ i tako spasio milione ljudskih zivota!\n";
		cout << "Narod da bi mu se oduzio poklonili su mu fabriku \nSakoa i danas je Severna Koreja najpoznatija po svojim dobrim sakoima\n\n\n";
	}

	else if(x==3)
	{
		cout << "Izabrali ste sat marke xxx!To ce vas kostati 1.250.000$\n";
		cout << "Sat marke xxx se proizvodi u\n Srbiji(Tu je xxx rodjen)\n";
		cout << "Godisnje se izvozi oko 200\n takvih satova.Krase ga dijamanti a \nkazaljke su napravljenje od kamenja sa Saturna.\n";
		cout << "xxx je godine 2014 poklonio 7 ovakvih satova Rusiji \nzbog duge saradnje izmedju pravoslavnih braca!\n\n\n";
	}

	else
	{
		cout << "uneli ste pogresan broj.Molim startujte program ponovo!";
	}

	system("PAUSE");
	return EXIT_SUCCESS;
}
Reci ako ti stogod nije jasno kako funkcionise i ako treba tumacenje mehanike.

Filozofi su mu bar objasnili kako da mu ne unese nista drugo osim 1 2 ili 3, sto je on i trazio, a ti si mu objasnio samo problem koji je i sam resio stavljajuci pored if-ova if (x > 3) {error}, a ni tebi nije jasno zasto si stavio else if i zasto nisi kao on samo stavio if x > 3. Prema tome ne tupi kad ne znas nista.
 
Da ne budemo filozofi. Bitno je da ti program bude sto kraci i brzi, jer ako pravis velike programe mozes naici na probleme. Evo kako bi ja napravio:

#include <stdio.h>

void main()
{
int x;

printf("Dobrodosli u Online prodavnicu!\n
Sponzor Online prodavnice je xxx Corporation!\n\n
Izvolite katalog.Pogledajte sta biste hteli da kupite:\n
1.Cipele - 300$ \n2.Sako 400$ \n3.Sat - 1.250.000$\n\n
Upisite broj onog sta biste hteli da kupite:");

scanf("%d",&x);

switch (x)
{
case 1: printf("Izabrali ste xxx cipele!To ce vas kostati 300$.\n";
xxx cipele su nastale pocetkom 21 veka\n kada je
mladi poznati biznismen xxx\n
Ulozio preko 50.000.000$ u dobrotvorne svrhe u \ndrzavu
Etiopiju.Vlasti Etiopije su mu poklonile\n
Staru fabriku cipela kojoj je on udahnuo \nzivot i postale su
najpoznatije cipele na svetu!\n\n\n"); break;


case 2: printf("Izabrali ste sako marke xxx!To ce vas kostati 400$.\n
Sako marke xxx je nastao pocetkom 21 veka\n kada je mladi poznati biznismen xxx\n
Ulozio u Severnu Koreju 100.000.000$ i tako spasio milione ljudskih zivota!\n
Narod da bi mu se oduzio poklonili su mu fabriku \nSakoa i
danas je Severna Koreja najpoznatija po svojim dobrim sakoima\n\n\n");break;


case 3: prinft( "Izabrali ste sat marke xxx!To ce vas kostati 1.250.000$\n
Sat marke xxx se proizvodi u\n Srbiji(Tu je xxx rodjen)\n
Godisnje se izvozi oko 200\n takvih satova.Krase ga dijamanti a \n
kazaljke su napravljenje od kamenja sa Saturna.
xxx je godine 2014 poklonio 7 ovakvih satova Rusiji \n
zbog duge saradnje izmedju pravoslavnih braca!\n\n\n");break;


default: printf( "uneli ste pogresan broj.Molim startujte program ponovo!");
}
}
 
Poslednja izmena:
Filozofi su mu bar objasnili kako da mu ne unese nista drugo osim 1 2 ili 3, sto je on i trazio, a ti si mu objasnio samo problem koji je i sam resio stavljajuci pored if-ova if (x > 3) {error}, a ni tebi nije jasno zasto si stavio else if i zasto nisi kao on samo stavio if x > 3. Prema tome ne tupi kad ne znas nista.
Kod kako je on napisao, sa sve dodatkom ne radi, nikako kako bi trebao.
IF ELSE IF, konstrukcija je tu da program ne bi radio nepotrebne radnje. Std osnovna skola programiranja.
Uopste nije bitno u ovom slucaju dal' ce neko da unosi pogresne karaktere. To se sve jednostavnije moze resiti ubacivanjem svega u jednu petlju.
Ali dakako momak je jos na prvoj lekciji, koliko sam shvatio iz price, a toga u prvoj lekciji verovatno jos nema. Kao ni switch komande.

Zamisli da ovo nije palac: :ok:
 
Hvala svima na ulozenom trudu i vremenu da mi objasnite ovaj program!Ima ovde mnogo meni nepoznatog pa cu sada sve lepo da guglam za ove komande vidim za shta koje sluzhe! :)

Molim vas bez prepiranja(mislim na filozofe! :D)svi ste mi od velike pomoci.Za sada razumem jedino kod koji je napisao kad_lupim_lupim jer ga jedino razumem :D ostale moram da prouchim.

Ali ima i u njegovom kodu prob.Kada korisnik stavi neko slovo ispada if(x==2) kako ovo mozhe da se popravi?
 
Hm, s njim nisam radio :neutral:

Nego sad citam ovo sto kazes, kad ukucas neko slovo ispadne if(x==2).
Samo da vidim dal' sam te dobro razumeo, kad kazes ispadne to, mislis program izvrsi komande koje su u bloku posle naredbe if(x==2) ili... sta?
 

Back
Top