[c++] skrócenie kodu programu
Ostatnio zmodyfikowano 2014-02-15 12:34
user1928 Temat założony przez niniejszego użytkownika |
[c++] skrócenie kodu programu » 2014-02-14 16:55:17 Witam.Mam pytanie odnośnie kodu programu który przedstawiam poniżej.Czy istnieje jakiś sposób by skrócić jego zapis np poprzez zastosowanie tablic? Problemem jest fakt że wpisanie większej ilości danej zajęło by sporo czasu. Program ma za zadanie sprawdzać czy została podana właściwa odpowiedź a następnie to wyświetlić. Oto kod fragment kodu o który mi chodzi: cout << "\nWybierz zestaw:\n1.pytania proste \n2.pytania trudne";
cin >> a; switch( a ) { case 1: { cout << "\npodaj nazwe:\n"; getline( cin, test ); cout << "\nPierwsza stolica Polski: "; getline( cin, pierwszastolica ); cout << "\nStolica Francji: "; getline( cin, stolicafrancji ); cout << "\nStolica Belgii: "; getline( cin, stolicabelgii ); system( "cls" ); if( pierwszastolica == "Gniezno" ) { SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY ); cout << "\nPierwsza Stolica Polski(" << pierwszastolica << "):Dobrze" << endl; } else { SetConsoleTextAttribute( hOut, FOREGROUND_RED | FOREGROUND_INTENSITY ); cout << "\nPierwsza Stolica Polski (" << pierwszastolica << ") Zle (Gniezno) " << endl; } if( stolicafrancji == "Paryz" ) { SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY ); cout << "\nStolica Francji(" << stolicafrancji << "):Dobrze" << endl; } else { SetConsoleTextAttribute( hOut, FOREGROUND_RED | FOREGROUND_INTENSITY ); cout << "\nStolica Francji (" << stolicafrancji << ") Zle (Paryz) " << endl; } if( stolicabelgii == "Bruksela" ) { SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY ); cout << "\nStolica Belgii(" << stolicabelgii << "):Dobrze" << endl; } else { SetConsoleTextAttribute( hOut, FOREGROUND_RED | FOREGROUND_INTENSITY ); cout << "\nStolica Belgii (" << stolicabelgii << ") Zle (Bruksela) " << endl; }
|
|
RazzorFlame |
» 2014-02-14 17:27:17 Ten kod można zapisać krótko a zarazem łatwo. Użyj klas w których będziesz przechowywał dane o nazwie państwa i poprawnej stolicy: class DanePanstwa { public: string m_NazwaPanstwa, m_Stolica; DanePanstwa( string npanstwa, stolica ) { m_NazwaPanstwa = npanstwa; m_Stolica = stolica; } };
[...]
std::vector < DanePanstwa > panstwa;
panstwa.push_back( DanePanstwa( "Polska", "Warszawa" );
std::vector < DanePanstwa > odpowiedzi; [...] for( int i = 0; i < odpowiedzi.size(); i++ ) { for( int j = 0; j < panstwa.size(); j++ ) { if( odpowiedzi[ i ] == panstwa[ j ] ) { cout << "Udzieliles poprawnej odpowiedzi.\n Stolica panstwa \"" << odpowiedzi[ i ].m_NazwaPanstwa << "\" to \"" << odpowiedzi[ i ].m_Stolica << "\"<<endl; } } } |
|
alixir |
» 2014-02-14 17:41:23 A jeśli nie znasz jeszcze klas i wektorów to tu masz przykładowy programik losujący pytania z tablicy. #include <iostream> #include <string> #include <time.h>
int main() { std::string pytania[] = { "Pytanie 1", "Pytanie 2", "Pytanie 3", "Pytanie 4", "Pytanie 5", "Pytanie 6" }; std::string odpowiedzi[] = { "Odpowiedz do pytania 1", "Odpowiedz do pytania 2", "Odpowiedz do pytania 3", "Odpowiedz do pytania 4", "Odpowiedz do pytania 5", "Odpowiedz do pytania 6" }; srand( NULL ); std::string odpowiedz; unsigned i; unsigned chance = 3; while( chance > 0 ) { i = rand() %( sizeof( pytania ) / sizeof( std::string ) ); std::cout << pytania[ i ] << std::endl; std::cout << "Odpowiedz: "; std::getline( std::cin, odpowiedz ); if( odpowiedz != odpowiedzi[ i ] ) { std::cout << "Zle. Prawodlowa odpowiedz to: " << odpowiedzi[ i ] << std::endl; std::cout << "Pozostalo prob: " << --chance << std::endl << std::endl; } else std::cout << "Brawo" << std::endl << std::endl; } return 0; }[ cpp ] |
|
user1928 Temat założony przez niniejszego użytkownika |
» 2014-02-15 11:39:24 Dzięki za odp tylko czy było by możliwe dopisanie w tym drugim kodzie żeby pytania się nie powtarzały podczas losowania? |
|
RazzorFlame |
» 2014-02-15 12:34:37 To już sobie sam musisz napisać, nawet w kursie takie coś znajdziesz :) |
|
« 1 » |