C++ prosty program


(Adio741) #1

Wtam, pisze program który ma pytać sie czy jesteś zmeczony i w zależności od odpowiedzi wyswietlać "idz do domu lub zostań na zajęciach" prosze o pomoc

#include 

using namespace std;

int main()

{//to jest moj pierwszy program - begin

string a;

char b;

cout<<" podaj swoje imie \t";

cin >> a;

cout<<" podane przez ciebie imie to \t" <
cout<<" czy jestes zmeczony: ";

cin>>b;

     if(b==n)

{  

            cout<<" to zostan jescze na zajeciach";

}               

      else

      if(b==t) 

{

            cout<<" to idz lepeiej do domu";

} 

char c; // deklaracja zmiennej znakowej 

cin >> c; // czytaj zamiennik readln... razem z charem dają czarny ekran

return 0;

[/code]

(Mk Md) #2

Ale nie przedstawiłeś jaki jest Twój problem? Nie kompiluje sie?

Ale mam pare uwag:

  1. Rób wcięcia - bo taki kod jak przedstawiłeś jest troche nieczytelny.

  2. Zamiast char b; można dać bool b; skoro i tak nie ma więcej możliwości.

  3. Zakładam że piszesz pod Windowsem więc na końcu dodaj sobie

    system("pause");

żeby nie wywalało od razu programu. 4. Nie zamknąłeś funkcji main() 5. Nie dolączyłeś pliku nagłówkowego 'string' bez którego nie możesz używać stringów. 6. Nie wiem po co stworzyłeś zmienna 'c' skoro jej nie wykorzystujesz? Poprawiłem troche. Nie kompilowałem ale myśle że odpali;p

#include 

#include 

using namespace std;


int main()

{

	//to jest moj pierwszy program - begin

	string a;

	bool b;

	cout << " podaj swoje imie \t";

	cin >> a;

	cout << " podane przez ciebie imie to \t" << a << "\n";

	cout << " czy jestes zmeczony[0/1]: ";

	cin >> b;


	if(b) // if(b==1)

	{  

		cout << " to zostan jescze na zajeciach" << "\n";

	}               

	else

	{

		cout << " to idz lepeiej do domu" << "\n";

	}


	system("pause");

}

(Kontakt) #3

Z tego co rozumiem, ktos może podać odpowiedź (przy zmęczeniu 't' lub 'n').

Błąd masz w ifie, aby przyrównać do znaku musisz go umieścić w apostrofach:

if(b=='n')

Zwróć uwagę, że programu nie wywala. Program czeka na znak na samym końcu. Zastosowanie gorsze, ale poradził sobie :wink:


(Mk Md) #4

No i jeszcze to:) Jak sam pisze to pamietam o takich szczegółach, ale u innych ciężko mi zauważyć:slight_smile:


(somekind) #5

Nie kompiluje się, bo nie może znaleźć zmiennych n i t.

Powinno być:

if(b == 'n')

i

if(b == 'n')

A zamiast:

char c; // deklaracja zmiennej znakowej

cin >> c; // czytaj zamiennik readln... razem z charem dają czarny ekran

Wystarczy

cin.get();

No i:

int main(int argc, char* argv[])

(Kontakt) #6

Ja sobie po prostu spróbowałem go skompilować :wink:


(Adio741) #7

ok juz dziala dzieki


([alex]) #8

Mylisz się, to są zupełnie różne rzeczy.


(somekind) #9

Pewno tak, tylko dwie linijki autora wyglądają mi na próbę pobrania znaku z wejścia.


(Airborn) #10

adio741 , proszę poprawić tytuł tematu na konkretny, dokładniej mówiący o problemie. W przeciwnym razie temat może zostać usunięty.


([alex]) #11

Oba warianty pobierają znak, tylko że jeżeli użytkownik wpisał: x to:

cin>>c; // wczyta 'x'

cin.get(); // wczyta spacje.


(somekind) #12

Owszem :slight_smile:

Ale mi cin.get() bardziej wygląda na zamiennik readln, a o tym mowa w komentarzu :wink:


([alex]) #13

Odpowiednikiem ReadLn jest cin.sync(); ewentualnie cin>>ws; (o ile nie nadpisano ws jakąś zmienną lokalną).

Jeżeli mamy zaś wybrać pomiędzy cin>>c; a cin.get() bliższym odpowiednikiem jednak jest cin>>c; ponieważ cin.get() pobierze tylko jeden znak.