Podwójna instrukcja IF.

0

Hej, zabrałem się dzisiaj za próby programowania bo inaczej nie można tego nazwać, no i stanąłem w martwym punkcie.

Rzecz polega na tym, że chciałem aby program porównał mi ze sobą 3 tablice ze znakami.

Jeśli jedna tablica jest taka sama jak druga to [instrukcja], ale jeśli pierwsza tablica nie jest taka sama jak druga tablica, to powinna porównać się do trzeciej.
A jeśli pierwsza tablica nie jest taka sama jak druga i trzecia (nacisk na tą literkę "i") to powinna wykonać określoną instrukcję.

Znalazłem gdzie w necie instrukcję strcmp, ale coś poszło nie tak.
Moglibyście wytłumaczyć co, oraz jak powinno to wyglądać?

Poniżej moje wypociny:

// ConsoleApplication2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace std;
char wola[]="wola", sushi[]="sushi";
int main()
{
	int x,y;
	char s[6];

	cout << "Witaj Adepcie SushiWola przed Toba ciezki test" << "\n";
	cout << "Czy uda Ci sie wspiac na wyzyny swojej wiedzy o sushi?" << "\n";
	cout << "Czy sprostasz temu testowi? Wszystko zaraz sie okaze :D" << "\n";
	cout << "Jesli chcesz sprobowac swoich sil wpisz slowo 'sushi'" << "\n";
	cout << "Natomiast jesli brak Ci wiary w siebie i chcesz sie poddac 'wola'" << "\n";
	cout << "Oto czas i miejsce abys zdecydowal: ";
	cin >> s;
	system("cls");
	if (strcmp(s,sushi)==0) 
			cout << "A wiec nie brak Ci woli i odwagi, dobrze niech zacznie sie test!";
		{
		if (strcmp(s, wola) == 0)
			cout << "Twoja wola okazala sie slaba, nie masz tu czego szukac, odejdz";
		}
			{
			if (strcmp(s, sushi) != 0 and (strcmp(s, wola) != 0))
				cout << "Podaj prawidlowe haslo";
			}
				
				 
				
	 
	

	
    return 0;
}
0
  1. Kod w znaczniki
  2. Poczytaj o string w c++
0

Najpierw to powiedz mi czy ten program uruchamiał ci się? Bo z tego co widzę i nawet testuje u siebie to on nie ma prawa się uruchomić. Przed include daj #. Potem dodaj bibliotekę <cstdlib> i sprawdź czy nadal ci nie chce działać.

0

A słyszałeś o else ?

if(warunek) {
   // wykonaj gdy warunek prawdziwy
} else {
   // wykonaj gdy warunek nieprawdziwy
}

przy okazji: skoro używasz C++ to może zastosuj string zamiast char[] i będziesz mógł stosowac == zamiast strcmp()

0

Dużo łatwiej jest wykonać to zadanie korzystając ze wspomnianego typu string, a jeśli już koniecznie musisz używać tablic znaków to możesz użyć własnej funkcji do sprawdzania równości, np:

bool Equal(char[] first, char[] second)
{
    if(sizeof(first)!=sizeof(second) // Sprawdzamy czy tablice mają taką samą wielkość. Jeśli nie, to już wiemy, że nie są identyczne.
    {
        for(unsigned i = 0; i < sizeof(first); i++) // Znak po znaku sprawdzamy czy tablice są takie same
        {
             if(first[i] != second[i]) return false;
        }
        return true;
    }
    else return false;
}

Szczerze mówiąc nawet nie czytałem Twojego kodu i nigdy nie używałem funkcji strcmp() więc po prostu wrzuciłem własną :D

2

@gogolon: wtf.

sizeof(first)!=sizeof(second) - ten warunek nigdy nie będzie spełniony. Przeciez to są wskaźniki i zawsze mają taki sam rozmiar. Warunek pętli również jest źle. Do obliczania długości takiego napisu używa się std::strlen.

Dodatkowo ten kod się nawet nie skompiluje. Nawiasy w if się nie zgadzają. Formatowanie również koszmarne, ale to mniejszy problem.

0

Możliwe, tak się zastanawiałem czy sizeof(charArray) na pewno zwróci długość tablicy, ale kod pisany już na forum. Nie próbowałem nawet kompilować :D

0

Hej, zacząłem więc wszystko od początku, tak aby wszystko ogarnąć od podstaw.
Zadanie ma być swojego rodzaju testem.
Założenie jest takie:

  1. Wprowadzenie do testu
  2. Decyzja czy uczestnik bierze udział albo odpuszcza (z uwzględnieniem tego, że może wpisać pierdoły zamiast jednej z dwóch pożądanych fraz)
  3. Jeśli user bierze udział to zadawane są kolejne pytania, gdzie przy udzieleniu poprawnej odpowiedzi punkty zliczają się aby na końcu dać wynik i rangę (ranga uzależniona od zdobytych punktów)
  4. W przypadku gdy user zrezygnuje powinien mu się wyświetlić krótki komunikat
  5. Gdy user wpisze pierdoły zamiast konkretnej odpowiedzi program musi go uświadomić, że wpisał niepoprawnie i poprosić o wpisanie jeszcze raz poprawnych danych.

Postanowiłem na zaś zarezerwować kilka zmiennych, gdzie chciałem ustawić, że zmienne typu string wola zawiera słowo "wola", oraz sushi "sushi", dodatkowo jestem świadomy, że wynik musi być osobną zmienną, do której w przypadku poprawnej odpowiedzi doliczać mają się punkty, zakładam więc że posłuży do tego funkcja wynik++.
W ramach budowy nowego szkieletu programu, zaczął pluć błędami.
Znajdują się one w liniach 21 i 24(po dwa), dwa dotyczą znaków ">>", "< <" a pozostałe dwa :

|Severity Code Description Project File Line
Error C2679 binary '<<': no operator found which takes a right-hand operand of type 'std::string' |

Jeśli jesteście w stanie wytłumaczyć mi co jest nie tak i dać wskazówki jak powinienem budować dalej program, byłbym wdzięczny.

#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
string wola("wola"),sushi("sushi");
int main()
{
	int x,y;
	string s;

	cout << "Witaj Adepcie SushiWola przed Toba ciezki test" << "\n";
	cout << "Czy uda Ci sie wspiac na wyzyny swojej wiedzy o sushi?" << "\n";
	cout << "Czy sprostasz temu testowi? Wszystko zaraz sie okaze :D" << "\n";
	cout << "Jesli chcesz sprobowac swoich sil wpisz slowo 'sushi'" << "\n";
	cout << "Natomiast jesli brak Ci wiary w siebie i chcesz sie poddac 'wola'" << "\n";
	cout << "Oto czas i miejsce abys zdecydowal: ";
	cin >> s; // linia 21

	
	cout << "wynik to: " << s; //linia 24
	
    return 0;
}
0

http://ideone.com/29DUIg

Twoj kod z ostatniego postu dziala.

a linie to mamy sobie liczyc czy jak? co jesli dasz 200 linijkowy kod i tez napiszesz "blad w linijce 145"

0

Obok linii w których występuje błąd dodałem znacznik w postaci komentarza.
Wg. Twojej strony działa, a u mnie po zbudowaniu programu i wpisaniu czegokolwiek natychmiast się zamyka.

http://iv.pl/images/94963081074898964116.jpg

0

Okej Panowie i być może Panie,

Na chwilę obecną doszedłem do takiego etapu gdzie kompilator pokazuje mi "tylko" 11 błędów, wcześniej pokazywał ponad 40.
Jestem świadom, że to co napisałem nie jest dobre chociażby ze względu na zrypaną składnię if else, której nie znam i nie ogarniam.
Jest szansa, żeby ktoś wytłumaczył mi mój błąd i wskazał poprawne rozwiązanie przy możliwie małych zmianach w kodzie?

PS: Mam świadomość tego, że zadeklarowałem ogrom zmiennych i pewnie kilka bibliotek, gdzie pewnie można by było pozbyć się połowy z nich, ale mój poziom ogarnięcia programowania w skali 1:1000 to być może 1,5 :)

#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
string wola("wola"),sushi("sushi");
int wynik=0;
string ranga0("Fiasko"), ranga1("Adept"), ranga2("Uczony"), ranga3("Oswiecony"), ranga4("Kaplan SushiWola"), wakame("wakame"), supernova("supernova");
int main()
{
	string s;
	int ile;
	cout << "Witaj Adepcie SushiWola przed Toba ciezki test" << "\n";
	cout << "Czy uda Ci sie wspiac na wyzyny swojej wiedzy o sushi?" << "\n";
	cout << "Czy sprostasz temu testowi? Wszystko zaraz sie okaze :D" << "\n";
	cout << "Jesli chcesz sprobowac swoich sil wpisz slowo 'sushi'" << "\n";
	cout << "Natomiast jesli brak Ci wiary w siebie i chcesz sie poddac 'wola'" << "\n";
	cout << "Oto czas i miejsce abys zdecydowal: ";
	cin>>s;
		if(s == sushi) 
			cout <<"\n"<< "A wiec chcesz sprobowac swoich sil mlody adepcie?" << "\n";
			
			cout << "W takim razie niech zacznie sie test!" << "\n";
			cout << "1. Jak nazywa sie set z najwieksza iloscia nigiri: ";
			cin >> s;
				if(s==supernova) wynik++, cout<<"Brawo, kolejne pytanie"<<"\n";
				else cout<<"Nastepne pytanie"<<"\n";
				cout<<"2. Ile kawalkow liczy najmniejszy zestaw sushi:  "<<"\n";
				cin>>ile>>"\n";
					if(ile==9) wynik++, cout<<"Brawo, kolejne pytanie"<<"\n";
					else cout<<"Nastepne pytanie"<<"\n";
					cout<<"3. Podaj nazwe salatki ktorej baza to wodorosty morskie i ogorek:  "<<"\n";
					cin>>s>>"\n";
						if(s==wakame)wynik++, cout<<"Brawo, kolejne pytanie"<<"\n";
						else cout<<"Nastepne pytanie"<<"\n";
						cout<<"3. O ktorej godzinie w dniach roboczych rozstrzygany jest konkurs na darmowe sushi:  "<<"\n";
						cin>>ile>>"\n";
							if(ile==21)wynik++;
								cout<<"Gratulacje Adepcie ukonczyles test"<<"\n";
									if(wynik=0) cout<<"Twoja nowa ranga to: "<<ranga0<<"\n";
									cout<<"Nic juz z Ciebie nie bedzie, porzuc swoje marzenia o sushi!"<<"\n";
										else if(wynik=1) cout<<"Twoja nowa ranga to: "<<ranga1<<"\n";
										cout<<"Zawiodlem sie na Tobie, wiele jeszcze pracy przed Toba!"<<"\n";
											else if(wynik=2) cout<<"Twoja nowa ranga to: "<<ranga2<<"\n";
											cout<<"Nie ma tragedii, cos tam wiesz, ale nie spoczywaj na laurach!"<<"\n";
												else if(wynik=3) cout<<"Twoja nowa ranga to: "<<ranga3<<"\n";
												cout<<"Zaprawde wiesz sporo o sekretnych drogach sushi!"<<"\n";
													else if(wynik=4) cout<<"Twoja nowa ranga to: "<<ranga4<<"\n";
													cout<<"Zostales/las natchniety Wola Sushi, idz i glos slowo SushiWoli!"<<"\n";
			
			else if(s == wola) cout << "\n" << "Poddales sie, nie jestes godzien miana adepta, odejdz" << "\n";
				else cout << "\n" << "Podales niepoprawny wyraz, wpisz go jeszcze raz";
		
    return 0;
}
0

Przepuść to przez formatter, bo nie idzie tego czytać: http://format.krzaq.cc/

0
#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
string wola("wola"), sushi("sushi");
int wynik = 0;
string ranga0("Fiasko"), ranga1("Adept"), ranga2("Uczony"), ranga3("Oswiecony"), ranga4("Kaplan SushiWola"), wakame("wakame"), supernova("supernova");
int main()
{
    string s;
    int ile;
    cout << "Witaj Adepcie SushiWola przed Toba ciezki test"
         << "\n";
    cout << "Czy uda Ci sie wspiac na wyzyny swojej wiedzy o sushi?"
         << "\n";
    cout << "Czy sprostasz temu testowi? Wszystko zaraz sie okaze :D"
         << "\n";
    cout << "Jesli chcesz sprobowac swoich sil wpisz slowo 'sushi'"
         << "\n";
    cout << "Natomiast jesli brak Ci wiary w siebie i chcesz sie poddac 'wola'"
         << "\n";
    cout << "Oto czas i miejsce abys zdecydowal: ";
    cin >> s;
    if (s == sushi)
        cout << "\n"
             << "A wiec chcesz sprobowac swoich sil mlody adepcie?"
             << "\n";

    cout << "W takim razie niech zacznie sie test!"
         << "\n";
    cout << "1. Jak nazywa sie set z najwieksza iloscia nigiri: ";
    cin >> s;
    if (s == supernova)
        wynik++, cout << "Brawo, kolejne pytanie"
                      << "\n";
    else
        cout << "Nastepne pytanie"
             << "\n";
    cout << "2. Ile kawalkow liczy najmniejszy zestaw sushi:  "
         << "\n";
    cin >> ile >> "\n";
    if (ile == 9)
        wynik++, cout << "Brawo, kolejne pytanie"
                      << "\n";
    else
        cout << "Nastepne pytanie"
             << "\n";
    cout << "3. Podaj nazwe salatki ktorej baza to wodorosty morskie i ogorek:  "
         << "\n";
    cin >> s >> "\n";
    if (s == wakame)
        wynik++, cout << "Brawo, kolejne pytanie"
                      << "\n";
    else
        cout << "Nastepne pytanie"
             << "\n";
    cout << "3. O ktorej godzinie w dniach roboczych rozstrzygany jest konkurs na darmowe sushi:  "
         << "\n";
    cin >> ile >> "\n";
    if (ile == 21)
        wynik++;
    cout << "Gratulacje Adepcie ukonczyles test"
         << "\n";
    if (wynik = 0)
        cout << "Twoja nowa ranga to: " << ranga0 << "\n";
    cout << "Nic juz z Ciebie nie bedzie, porzuc swoje marzenia o sushi!"
         << "\n";
    else if (wynik = 1) cout << "Twoja nowa ranga to: " << ranga1 << "\n";
    cout << "Zawiodlem sie na Tobie, wiele jeszcze pracy przed Toba!"
         << "\n";
    else if (wynik = 2) cout << "Twoja nowa ranga to: " << ranga2 << "\n";
    cout << "Nie ma tragedii, cos tam wiesz, ale nie spoczywaj na laurach!"
         << "\n";
    else if (wynik = 3) cout << "Twoja nowa ranga to: " << ranga3 << "\n";
    cout << "Zaprawde wiesz sporo o sekretnych drogach sushi!"
         << "\n";
    else if (wynik = 4) cout << "Twoja nowa ranga to: " << ranga4 << "\n";
    cout << "Zostales/las natchniety Wola Sushi, idz i glos slowo SushiWoli!"
         << "\n";

    else if (s == wola) cout << "\n"
                             << "Poddales sie, nie jestes godzien miana adepta, odejdz"
                             << "\n";
    else cout << "\n"
              << "Podales niepoprawny wyraz, wpisz go jeszcze raz";

    return 0;
}
0

Czytając najpierw to co chcesz zrobić,a potem twój kod to mam dla ciebie takie rozwiązanie.Przeczytaj sobie o obsłudze strumienia wejściowego(cin) i opanuj instrukcje warunkową if z jakiegoś tutoriala.Brakuje ci też warunku dla opcji,gdy ktoś wpiszę wola.Mam nadzieję,że moje wskazówki pomogą ci znaleźć dobre rozwiązanie.

1

Mały lew się trochę pomylił i jest warunek z opcją,gdy ktoś wpiszę wola,ale jest w złym miejscu plus spójrz na swoje warunki i zobacz jakie masz tam różnice pomiędzy nimi.Plus by nie było,aż takiego zamieszania z tymi ifami to możesz zastosować instrukcje switch.

0

Skorzystałem z Twojej propozycji @Freesher i wplotłem switch zamiast if else, które wyraźnie popsułem.

Po kompilacji visual studio sypie błędami dotyczącymi >> oraz <<, jakieś wskazówki co jest nie tak?

#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
string wola("wola"),sushi("sushi");
string ranga0("Fiasko"), ranga1("Adept"), ranga2("Uczony"), ranga3("Oswiecony"), ranga4("Kaplan SushiWola");
string wakame("wakame"), supernova("supernova");
int wynik=0;
int main()
{
	string s;
	int ile;
	cout << "Witaj Adepcie SushiWola przed Toba ciezki test" << "\n";
	cout << "Czy uda Ci sie wspiac na wyzyny swojej wiedzy o sushi?" << "\n";
	cout << "Czy sprostasz temu testowi? Wszystko zaraz sie okaze :D" << "\n";
	cout << "Jesli chcesz sprobowac swoich sil wpisz slowo 'sushi'" << "\n";
	cout << "Natomiast jesli brak Ci wiary w siebie i chcesz sie poddac 'wola'" << "\n";
	cout << "Oto czas i miejsce abys zdecydowal: ";
	cin>>s;
		if(s == sushi) 
			cout <<"\n"<< "A wiec chcesz sprobowac swoich sil mlody adepcie?" << "\n";
			else if (s == wola) cout << "\n" << "Poddales sie, nie jestes godzien miana adepta, odejdz" << "\n";
			else cout << "\n" << "Podales niepoprawny wyraz, wpisz go jeszcze raz";
			cout << "W takim razie niech zacznie sie test!" << "\n";
			cout << "1. Jak nazywa sie set z najwieksza iloscia nigiri: ";
			cin >> s;
				if(s==supernova) wynik++, cout<<"Brawo, kolejne pytanie"<<"\n";
				else cout<<"Nastepne pytanie"<<"\n";
				cout<<"2. Ile kawalkow liczy najmniejszy zestaw sushi:  "<<"\n";
				cin>>ile>>"\n";
					if(ile==9) wynik++, cout<<"Brawo, kolejne pytanie"<<"\n";
					else cout<<"Nastepne pytanie"<<"\n";
					cout<<"3. Podaj nazwe salatki ktorej baza to wodorosty morskie i ogorek:  "<<"\n";
					cin>>s>>"\n";
						if(s==wakame)wynik++, cout<<"Brawo, kolejne pytanie"<<"\n";
						else cout<<"Nastepne pytanie"<<"\n";
						cout<<"3. O ktorej godzinie w dniach roboczych rozstrzygany jest konkurs na darmowe sushi:  "<<"\n";
						cin>>ile>>"\n";
							if(ile==21)wynik++;
								cout<<"Gratulacje Adepcie ukonczyles test"<<"\n";

								switch (wynik)
								{
								case 0:
									cout << "Twoja nowa ranga to: " << ranga0 << "\n";
									cout << "Nic juz z Ciebie nie bedzie, porzuc swoje marzenia o sushi!" << "\n";
									break;
								case 1:
									cout << "Twoja nowa ranga to: " << ranga1 << "\n";
									cout << "Zawiodlem sie na Tobie, wiele jeszcze pracy przed Toba!" << "\n";
									break;
								case 2:
									cout << "Twoja nowa ranga to: " << ranga2 << "\n";
									cout << "Nie ma tragedii, cos tam wiesz, ale nie spoczywaj na laurach!" << "\n";
									break;
								case 3:
									cout << "Twoja nowa ranga to: " << ranga3 << "\n";
									cout << "Zaprawde wiesz sporo o sekretnych drogach sushi!" << "\n";
									break;
								case 4:
									cout << "Twoja nowa ranga to: " << ranga4 << "\n";
									cout << "Zostales/las natchniety Wola Sushi, idz i glos slowo SushiWoli!" << "\n";
									break;
								}



		/* if(wynik=0) cout<<"Twoja nowa ranga to: "<<ranga0<<"\n";
		cout<<"Nic juz z Ciebie nie bedzie, porzuc swoje marzenia o sushi!"<<"\n";
		else if(wynik=1) cout<<"Twoja nowa ranga to: "<<ranga1<<"\n";
		cout<<"Zawiodlem sie na Tobie, wiele jeszcze pracy przed Toba!"<<"\n";
		else if(wynik=2) cout<<"Twoja nowa ranga to: "<<ranga2<<"\n";
		cout<<"Nie ma tragedii, cos tam wiesz, ale nie spoczywaj na laurach!"<<"\n";
		else if(wynik=3) cout<<"Twoja nowa ranga to: "<<ranga3<<"\n";
		cout<<"Zaprawde wiesz sporo o sekretnych drogach sushi!"<<"\n";
		else if(wynik=4) cout<<"Twoja nowa ranga to: "<<ranga4<<"\n";
		cout<<"Zostales/las natchniety Wola Sushi, idz i glos slowo SushiWoli!"<<"\n"; */
			
			
		
    return 0;
}
0

Funkcja cin po wpisaniu tego co chcesz automatycznie przechodzi do drugiej linii,więc niepotrzebnie masz "\n" o po ile i sprawdź ten warunek z podaniem innego słowa oraz woli czy według ciebie wszystko działa.Według mnie nie jest to tak jak po twojej myśli.

0

Ok, na chwilę obecną zoptymalizowałem ilość kodu wywalając zbędny komentarz, porządkując go oraz usuwając niepotrzebne biblioteki.
W tej chwili zauważyłem, że zlicza punkty poprawnie ALE:

  1. Wpisanie słowa wola, skutkuje poprawnym komunikatem, ale zamiast kończyć program przechodzi dalej.
  2. Wpisanie słowa innego niż sushi, albo wola skutkuje przejściem dalej zamiast powrotem do momentu wpisywania poprawnego słowa.

To do:

  1. Ustawić instrukcję wychodzącą poza blok instrukcji w przypadku wpisania słowa wola.
  2. Ustawić wartownika, aby słowa inne niż "wola" albo "sushi", skutkowały powrotem do instrukcji podania tego słowa jeszcze raz.
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
string wola("wola"),sushi("sushi");
string ranga0("Fiasko"), ranga1("Adept"), ranga2("Uczony"), ranga3("Oswiecony"), ranga4("Kaplan SushiWola");
string wakame("wakame"), supernova("supernova");
int wynik=0;
int main()
{
	string s;
	int ile;
	cout << "Witaj Adepcie SushiWola przed Toba ciezki test" << "\n";
	cout << "Czy uda Ci sie wspiac na wyzyny swojej wiedzy o sushi?" << "\n";
	cout << "Czy sprostasz temu testowi? Wszystko zaraz sie okaze :D" << "\n";
	cout << "Jesli chcesz sprobowac swoich sil wpisz slowo 'sushi'" << "\n";
	cout << "Natomiast jesli brak Ci wiary w siebie i chcesz sie poddac 'wola'" << "\n";
	cout << "Oto czas i miejsce abys zdecydowal: ";
	cin>>s;
		if(s == sushi) 
			cout <<"\n"<< "A wiec chcesz sprobowac swoich sil mlody adepcie?" << "\n";
			else if (s == wola) cout << "\n" << "Poddales sie, nie jestes godzien miana adepta, odejdz" << "\n";
			else cout << "\n" << "Podales niepoprawny wyraz, wpisz go jeszcze raz";
			cout << "W takim razie niech zacznie sie test!" << "\n";
			cout << "1. Jak nazywa sie set z najwieksza iloscia nigiri: ";
			cin >> s;
				if(s==supernova) wynik++, cout<<"Brawo, kolejne pytanie"<<"\n";
				else cout<<"Nastepne pytanie"<<"\n";
				cout<<"2. Ile kawalkow liczy najmniejszy zestaw sushi:  "<<"\n";
				cin>>ile;
					if(ile==9) wynik++, cout<<"\n"<<"Brawo, kolejne pytanie"<<"\n";
					else cout<<"Nastepne pytanie"<<"\n";
					cout<<"3. Podaj nazwe salatki ktorej baza to wodorosty morskie i ogorek:  "<<"\n";
					cin>>s;
						if(s==wakame)wynik++, cout<<"\n"<<"Brawo, kolejne pytanie"<<"\n";
						else cout<<"Nastepne pytanie"<<"\n";
						cout<<"3. O ktorej godzinie w dniach roboczych rozstrzygany jest konkurs na darmowe sushi:  "<<"\n";
						cin>>ile;
							if(ile==21)wynik++;
								cout<<"\n"<<"Gratulacje Adepcie ukonczyles test"<<"\n";

								switch (wynik)
								{
								case 0:
									cout << "Twoja nowa ranga to: " << ranga0 << "\n";
									cout << "Nic juz z Ciebie nie bedzie, porzuc swoje marzenia o sushi!" << "\n";
									break;
								case 1:
									cout << "Twoja nowa ranga to: " << ranga1 << "\n";
									cout << "Zawiodlem sie na Tobie, wiele jeszcze pracy przed Toba!" << "\n";
									break;
								case 2:
									cout << "Twoja nowa ranga to: " << ranga2 << "\n";
									cout << "Nie ma tragedii, cos tam wiesz, ale nie spoczywaj na laurach!" << "\n";
									break;
								case 3:
									cout << "Twoja nowa ranga to: " << ranga3 << "\n";
									cout << "Zaprawde wiesz sporo o sekretnych drogach sushi!" << "\n";
									break;
								case 4:
									cout << "Twoja nowa ranga to: " << ranga4 << "\n";
									cout << "Zostales/las natchniety Wola Sushi, idz i glos slowo SushiWoli!" << "\n";
									break;
								}
	system("pause");
    return 0;
}
0

Co do warunku to pomyśl co ma się stać i w jakim miejscu powinno to być.Drugą sprawę możesz rozwiązać za pomocą pętli while i kolejnego warunku lub switcha.

0

Ok, udało mi się zrobić kolejny krok.
Ustawiłem wartownika pętlą do while, tak aby hasła inne niż sushi i wola wywalały komunikat o błędzie i nakazywały wpisać jeszcze raz jedno z 2 podanych haseł.
No i nauczyłem się trochę o znakach logicznych (przydatna sprawa).
Udało się również znaleźć instrukcję przerywającą działanie programu, zastosowałem ją w pętli do while przy słowie wola.

To do:

  1. Ustawić kolejnych wartowników przy pytaniach, aby nie można było wprowadzać liczb do stringa i na odwrót
  2. W pytaniu 4. chciałbym, żeby program porównywał dane podane przez usera ze wzorami, tj. jeśli user wpisze 21, 21:00, powinno przyjąć za dobry wynik (o ile z 21 nie mam problemu, to 21:00 nie mam pojęcia jak zrobić).
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
string wola("wola"), sushi("sushi");
string ranga0("Fiasko"), ranga1("Adept"), ranga2("Uczony"), ranga3("Oswiecony"), ranga4("Kaplan SushiWola");
string wakame("wakame"), supernova("supernova");
int wynik = 0;
int main()
{
    string s;
    int ile;
    cout << "Witaj Adepcie SushiWola przed Toba ciezki test"
         << "\n";
    cout << "Czy uda Ci sie wspiac na wyzyny swojej wiedzy o sushi?"
         << "\n";
    cout << "Czy sprostasz temu testowi? Wszystko zaraz sie okaze :D"
         << "\n";
    cout << "Jesli chcesz sprobowac swoich sil wpisz slowo 'sushi'"
         << "\n";
    cout << "Natomiast jesli brak Ci wiary w siebie i chcesz sie poddac 'wola'"
         << "\n";
    cout << "Oto czas i miejsce abys zdecydowal: ";
    cin >> s;
    if (s == sushi)
        cout << "\n"
             << "A wiec chcesz sprobowac swoich sil mlody adepcie?"
             << "\n";
    else if (s == wola)
        do {
            cout << "\n"
                 << "Poddales sie, nie jestes godzien miana adepta odejdz!"
                 << "\n";
            system("pause");
            exit(0);
        } while (true);
    else if (s != wola && s != sushi)
        do {
            cout << "\n"
                 << "Podales niepoprawny wyraz wpisz go jeszcze raz: ";
            cin >> s;
            cout << "\n";
        } while (s != wola && s != sushi);

    cout << "W takim razie niech zacznie sie test!"
         << "\n";
    cout << "\n"
         << "1. Jak nazywa sie set z najwieksza iloscia nigiri: ";
    cin >> s;
    if (s == supernova)
        wynik++, cout << "Brawo, kolejne pytanie"
                      << "\n";
    else
        cout << "Nastepne pytanie"
             << "\n";
    cout << "\n"
         << "2. Ile kawalkow liczy najmniejszy zestaw sushi:  ";
    cin >> ile;
    if (ile == 9)
        wynik++, cout << "Brawo, kolejne pytanie"
                      << "\n";
    else
        cout << "Nastepne pytanie"
             << "\n";
    cout << "\n"
         << "3. Podaj nazwe salatki ktorej baza to wodorosty morskie i ogorek:  ";
    cin >> s;
    if (s == wakame)
        wynik++, cout << "Brawo, kolejne pytanie"
                      << "\n";
    else
        cout << "Nastepne pytanie"
             << "\n";
    cout << "\n"
         << "4. O ktorej godzinie w dniach roboczych rozstrzygany jest konkurs na darmowe sushi:  ";
    cin >> ile;
    if (ile == 21)
        wynik++;
    cout << "\n"
         << "Gratulacje Adepcie ukonczyles test!"
         << "\n";
    switch (wynik) {
    case 0:
        cout << "\n"
             << "Twoja nowa ranga to: " << ranga0 << "\n";
        cout << "Nic juz z Ciebie nie bedzie, porzuc swoje marzenia o sushi!"
             << "\n";
        break;
    case 1:
        cout << "\n"
             << "Twoja nowa ranga to: " << ranga1 << "\n";
        cout << "Zawiodlem sie na Tobie, wiele jeszcze pracy przed Toba!"
             << "\n";
        break;
    case 2:
        cout << "\n"
             << "Twoja nowa ranga to: " << ranga2 << "\n";
        cout << "Nie ma tragedii, cos tam wiesz, ale nie spoczywaj na laurach!"
             << "\n";
        break;
    case 3:
        cout << "\n"
             << "Twoja nowa ranga to: " << ranga3 << "\n";
        cout << "Zaprawde wiesz sporo o sekretnych drogach sushi!"
             << "\n";
        break;
    case 4:
        cout << "\n"
             << "Twoja nowa ranga to: " << ranga4 << "\n";
        cout << "Zostales/las natchniety Wola Sushi, idz i glos slowo SushiWoli!"
             << "\n";
        break;
    }

    cout << "\n";
    system("pause");
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1