"Psychozabawa" skrócenie kodu

0

Jestem absolutnym świeżakiem, jakimś cudem udało mi się napisać kod pod psychozabawę na to czy jesteś luzakiem. Nie umiem zrobić jakiejś funkcji na samym początku kodu by później móc ją tylko wywoływać, chodzi o te instrukcje if pod każdym pytaniem. Jak możecie to podajcie jakiś sposób na skrócenie tego kodu.

 #include <iostream>

int main ()
{
	using std::cout;
	using std::cin;
	using std::endl;
	
	int x=0;
    int a;

	cout << "To jest test na luzaka wybierz wlasciwa liczbe i zatwierdz wciskajac enter" << endl << endl;
	
	cout << "Czy pieniadze przeciekaja Ci przez palce ?" << endl;
	cout << "1 tak" << endl;
	cout << "2 czasami" << endl;
	cout << "3 nie" << endl;
	cin >> a;
	if (a==1)
	   {x+=1;}
	if (a==2)
	   {x+=3;}
	if (a==3)
	   {x+=5;}
	
	cout << "Czy piszesz pamietnik lub internetowy blog ?" << endl << endl;
	cout << "1 nie" << endl;
	cout << "2 tak, ale nieregularnie" << endl;
	cout << "3 tak codziennie" << endl;
	cin >> a;
	if (a==1)
	   {x+=1;}
	if (a==2)
	   {x+=3;}
	if (a==3)
	   {x+=5;}
	
	cout << "Czy przejmujesz sie drobiazgami ?" << endl << endl;
	cout << "1 zdecydowanie nie" << endl;
	cout << "2 tylko do pewnego stopnia" << endl;
	cout << "3 zdecydowanie tak" << endl;
	cin >> a;
	if (a==1)
	   {x+=1;}
	if (a==2)
	   {x+=3;}
	if (a==3)
	   {x+=5;}	
	
	cout << "Czy sa ludzie z ktorymi na pewno sie nie zaprzyjaznisz ?" << endl << endl;
	cout << "1 z kazdym potrafie sie zaprzyjaznic" << endl;
	cout << "2 trudno powiedziec" << endl;
	cout << "3 sa tacy ludzie" << endl;
	cin >> a;
	if (a==1)
	   {x+=1;}
	if (a==2)
	   {x+=3;}
	if (a==3)
	   {x+=5;}	
	   
	cout << "Czy wokol Ciebie musi panowac lad i porzadek ?" << endl << endl;
	cout << "1 jestem balaganiarzem" << endl;
	cout << "2 wole porzadek, ale balagan mnie tak bardzo nie irytuje" << endl;
	cout << "3 zdecydowanie wole porzadek" << endl;
	cin >> a;
	if (a==1)
	   {x+=1;}
	if (a==2)
	   {x+=3;}
	if (a==3)
	   {x+=5;}
	
	cout << "Jesli nie chce Ci sie pracowac to... " << endl << endl;
	cout << "1 nie pracuje" << endl;
	cout << "2 udaje ze pracuje" << endl;
	cout << "3 zmuszam sie do pracy" << endl;
	cin >> a;
	if (a==1)
	   {x+=1;}
	if (a==2)
	   {x+=3;}
	if (a==3)
	   {x+=5;}
	
	cout << "Czy miewasz wrazenie ze nikt Cie nie rozumie ?" << endl << endl;
	cout << "1 nigdy" << endl;
	cout << "2 rzadko" << endl;
	cout << "3 czesto" << endl;
	cin >> a;
	if (a==1)
	   {x+=1;}
	if (a==2)
	   {x+=3;}
	if (a==3)
	   {x+=5;}
	
	cout << "Czy brakuje Ci czasu ?" << endl << endl;
	cout << "1 raczej nie" << endl;
	cout << "2 czasami" << endl;
	cout << "3 czesto" << endl;
	cin >> a;
	if (a==1)
	   {x+=1;}
	if (a==2)
	   {x+=3;}
	if (a==3)
	   {x+=5;}	
	
	cout << "Czy stanie w kolejce denerwuje Cie ?" << endl << endl;
	cout << "1 nie" << endl;
	cout << "2 troche" << endl;
	cout << "3 bardzo" << endl;
	cin >> a;
	if (a==1)
	   {x+=1;}
	if (a==2)
	   {x+=3;}
	if (a==3)
	   {x+=5;}	
	
	cout << "Czy jestes zadowolony z zycia ?" << endl << endl;
	cout << "1 tak" << endl;
	cout << "2 moze byc" << endl;
	cout << "3 nie" << endl;
	cin >> a;
	if (a==1)
	   {x+=1;}
	if (a==2)
	   {x+=3;}
	if (a==3)
	   {x+=5;}	
	
	if (x<=22)
	{
		cout << "Jestes luzak jakich malo. Wszystko traktujesz lekko i starasz się niczym nie przejmowac. Wyznajesz zasade, ze klopoty same się rozwiaza, a jesli są nierozwiazywalne, to tym bardziej nie ma co sobie nimi glowy zawracac. W kontaktach z ludzmi jestes niezwykle otwarty i przyjacielski. Nawet wrogow potrafisz obdarzyc usmiechem. Ogolnie jestes lubiany, ale sa i tacy, ktorzy postrzegaja cie jako niegroznego wariata, ktorego nie mozna traktowac powaznie. Tym bardziej, ze jako luzak z krwi i kosci nawet bardzo powazne sprawy potrafisz obrocic w zart. Mozesz o sobie powiedzieć: jestem luzakiem; jestem luzaczka.";    
	}
	
	if (x>=23 && x<=37)
	{
		cout << "Znalazłes zloty srodek, aby nikt nie postrzegal cie zbyt definitywnie. Nie mozna okreslic cie mianem luzak, ale i sztywniak nie byloby slowem wlasciwym. Kiedy jest ku temu czas i miejsce potrafisz byc luzakiem. Bawisz sie, potrafisz zartowac z siebie, a czasami nawet lekcewazysz zagrozenie. Gdy jednak sytuacja wymaga okazania sie twardym i stanowczym charakterem nie zawahasz się byc sztywniakiem. Czasami masz jednak problem, aby sztywniak stal się luzakiem. W druga strone jest latwiej, bo luzak w tobie jest o wiele slabszy. Sztywniak pozostaje w tobie dluzej. Mowiąc krotko: jest w tobie 40 procent luzaka / luzaczki i 40 procent sztywniaka / sztywniaczki.";
	}
	
	if (x>=38)
	{
		cout << "Straszny z ciebie sztywniak, choc czasami starasz się pokazywac jako luzak. Czyzbys nie potrafil się bawic, smiac i robic rzeczy z pozoru glupich, ale pozwalających czlowiekowi nabrac psychicznej swiezosci? Wyglada na to, ze tak własnie jest. Nawet w miejscach przeznaczonych do zabawy nie potrafisz się rozluznic i pozostajesz sztywniakiem nawet pod plaszczykiem luzaka. Gdy wokol ciebie ludzie sa na zupelnym luzie, ty posrod nich wygladasz jak przybysz z innej planety. Dobra rada - czasami wrzuc na luz, a zobaczysz, ze zycie nabiera kolorow. Nie badz taki sztywniak, nie badz taka sztywniaczka. Byc jak luzak lub jak luzaczka jest o wiele przyjemniej.";
	}
	
	return 0;
}
0

Znajdź kawałek kodu który się powtarza. Wydziel go do nowej funkcji. Voila.

0
    using std::cout;
        using std::cin;
        using std::endl; 

=>

 using namespace std;

i kolejne 2 bezsensowne linijki "zrefaktoryzowane" :P

0

i kolejne 2 bezsensowne linijki "zrefaktoryzowane"

Nie byłbym taki pewien: po co od razu zaśmiecać całą przestrzeń nazw, skoro i tak korzystamy tylko z cout, cin oraz endl?

0

@Patryk27
Tak, tak bo w takim programie to ma taaaak wielkie znaczenie że hej

0

W takim razie w ogóle niech zostanie w obecnej formie: przecież w takim programie, to czy są tam jawne funkcje czy nie ma taaaaakie wielkie znaczenie, że hej...

0

On chciał skrócić kod a nie uczynić go wydajniejszym.

1

wywalić treść pytań do pliku i go ładować.

0

Haha, Dragon rozwaliłeś mnie :D

Autorze, opakuj powtarzający się kod w funkcję.

if (a==1)
          {x+=1;}
        if (a==2)
           {x+=3;}
        if (a==3)
           {x+=5;}

np tak,

 
void FUNKCJA (int a)
{
       if (a == 1)
           x+=1
       else if (a == 2)
           x+=3
....
}

a co jeśli podam cyfrę 4 albo 5? ;)

0

Quirinnos właśnie o czymś takim myślałem ale jak napisałem w w temacie

Nie umiem zrobić jakiejś funkcji na samym początku kodu by później móc ją tylko wywoływać
po modyfikacji kompilator wywala serię błędów, gdzie robię błąd ?

 #include <iostream>
 

void FUNKCJA (int a)
{
       if (a==1)
           x+=1;
       if (a==2)
           x+=3;
       if (a==3) 
	       x+=5;  
}

int main ()
{
        using std::cout;
        using std::cin;
        using std::endl;
 
        int x=0;
 
        cout << "To jest test na luzaka wybierz wlasciwa liczbe i zatwierdz wciskajac enter" << endl << endl;
 
        cout << "Czy pieniadze przeciekaja Ci przez palce ?" << endl;
        cout << "1 tak" << endl;
        cout << "2 czasami" << endl;
        cout << "3 nie" << endl;
        cin >> a;
        FUNKCJA ();
 
        cout << "Czy piszesz pamietnik lub internetowy blog ?" << endl << endl;
        cout << "1 nie" << endl;
        cout << "2 tak, ale nieregularnie" << endl;
        cout << "3 tak codziennie" << endl;
        cin >> a;
        FUNKCJA ()
 
        cout << "Czy przejmujesz sie drobiazgami ?" << endl << endl;
        cout << "1 zdecydowanie nie" << endl;
        cout << "2 tylko do pewnego stopnia" << endl;
        cout << "3 zdecydowanie tak" << endl;
        cin >> a;
        FUNKCJA ()       
 
        cout << "Czy sa ludzie z ktorymi na pewno sie nie zaprzyjaznisz ?" << endl << endl;
        cout << "1 z kazdym potrafie sie zaprzyjaznic" << endl;
        cout << "2 trudno powiedziec" << endl;
        cout << "3 sa tacy ludzie" << endl;
        cin >> a;
        FUNKCJA ()        
 
        cout << "Czy wokol Ciebie musi panowac lad i porzadek ?" << endl << endl;
        cout << "1 jestem balaganiarzem" << endl;
        cout << "2 wole porzadek, ale balagan mnie tak bardzo nie irytuje" << endl;
        cout << "3 zdecydowanie wole porzadek" << endl;
        cin >> a;
        FUNKCJA ()
 
        cout << "Jesli nie chce Ci sie pracowac to... " << endl << endl;
        cout << "1 nie pracuje" << endl;
        cout << "2 udaje ze pracuje" << endl;
        cout << "3 zmuszam sie do pracy" << endl;
        cin >> a;
        FUNKCJA ()
 
        cout << "Czy miewasz wrazenie ze nikt Cie nie rozumie ?" << endl << endl;
        cout << "1 nigdy" << endl;
        cout << "2 rzadko" << endl;
        cout << "3 czesto" << endl;
        cin >> a;
        FUNKCJA ()
 
        cout << "Czy brakuje Ci czasu ?" << endl << endl;
        cout << "1 raczej nie" << endl;
        cout << "2 czasami" << endl;
        cout << "3 czesto" << endl;
        cin >> a;
        FUNKCJA ()       
 
        cout << "Czy stanie w kolejce denerwuje Cie ?" << endl << endl;
        cout << "1 nie" << endl;
        cout << "2 troche" << endl;
        cout << "3 bardzo" << endl;
        cin >> a;
        FUNKCJA ()      
 
        cout << "Czy jestes zadowolony z zycia ?" << endl << endl;
        cout << "1 tak" << endl;
        cout << "2 moze byc" << endl;
        cout << "3 nie" << endl;
        cin >> a;
        FUNKCJA ()       
 
        if (x<=22)
        {
                cout << "Jestes luzak jakich malo. Wszystko traktujesz lekko i starasz się niczym nie przejmowac. Wyznajesz zasade, ze klopoty same się rozwiaza, a jesli są nierozwiazywalne, to tym bardziej nie ma co sobie nimi glowy zawracac. W kontaktach z ludzmi jestes niezwykle otwarty i przyjacielski. Nawet wrogow potrafisz obdarzyc usmiechem. Ogolnie jestes lubiany, ale sa i tacy, ktorzy postrzegaja cie jako niegroznego wariata, ktorego nie mozna traktowac powaznie. Tym bardziej, ze jako luzak z krwi i kosci nawet bardzo powazne sprawy potrafisz obrocic w zart. Mozesz o sobie powiedzieć: jestem luzakiem; jestem luzaczka.";    
        }
 
        if (x>=23 && x<=37)
        {
                cout << "Znalazłes zloty srodek, aby nikt nie postrzegal cie zbyt definitywnie. Nie mozna okreslic cie mianem luzak, ale i sztywniak nie byloby slowem wlasciwym. Kiedy jest ku temu czas i miejsce potrafisz byc luzakiem. Bawisz sie, potrafisz zartowac z siebie, a czasami nawet lekcewazysz zagrozenie. Gdy jednak sytuacja wymaga okazania sie twardym i stanowczym charakterem nie zawahasz się byc sztywniakiem. Czasami masz jednak problem, aby sztywniak stal się luzakiem. W druga strone jest latwiej, bo luzak w tobie jest o wiele slabszy. Sztywniak pozostaje w tobie dluzej. Mowiąc krotko: jest w tobie 40 procent luzaka / luzaczki i 40 procent sztywniaka / sztywniaczki.";
        }
 
        if (x>=38)
        {
                cout << "Straszny z ciebie sztywniak, choc czasami starasz się pokazywac jako luzak. Czyzbys nie potrafil się bawic, smiac i robic rzeczy z pozoru glupich, ale pozwalających czlowiekowi nabrac psychicznej swiezosci? Wyglada na to, ze tak własnie jest. Nawet w miejscach przeznaczonych do zabawy nie potrafisz się rozluznic i pozostajesz sztywniakiem nawet pod plaszczykiem luzaka. Gdy wokol ciebie ludzie sa na zupelnym luzie, ty posrod nich wygladasz jak przybysz z innej planety. Dobra rada - czasami wrzuc na luz, a zobaczysz, ze zycie nabiera kolorow. Nie badz taki sztywniak, nie badz taka sztywniaczka. Byc jak luzak lub jak luzaczka jest o wiele przyjemniej.";
        }
 
        return 0;
} 

13th_Dragon uświadomiłeś mnie ile wiem o programowaniu :)

0

Coś w ten deseń zrób:

#include <iostream>
#include <string>
int main()
{
	const std::string tab [][4] = {
							{"Pytanie 1 ?", "1 tak", "2 nie", "3 nie wiem"},
							{"Pytanie 2 ?", "1 nie", "2 nie", "3 nie wiem"}
							{"Pytanie 3 ?", "1 nie", "2 nie", "3 nie wiem"}
							//...
							};
	int a, x = 0;
	int n = 3; //ilosc pytan
	for(int i = 0; i < n; i++)
	{
		std::cout << tab[i][0] << std::endl << tab[i][1] << std::endl;
		std::cout << tab[i][2] << std::endl << tab[i][3] << std::endl;
		std::cin >> a;
		
		if (a==1) x+=1; else
        if (a==2) x+=3; else
        if (a==3) x+=5; 
	}
	
	if(x <= 22) 
		std::cout << "Wariant 1" << std::endl;
	else if(x >= 23 && x <= 37) 
		std::cout << "Wariant 2" << std::endl;
	else if (x >= 38)
		std::cout << "Wariant 3" << std::endl;
	return(0);
}
0

Rafik05
Jeśli chcesz robić to w sposób jaki robisz, to aby działało musisz:

  • zadeklarować zmienną x jako zmienną globalną.
  • zadeklarować w funkcji main zmienną a.
  • Wywołać FUNKCJĘ z parametrem a - FUNKCJA(a);

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