Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] skrócenie kodu programu

Ostatnio zmodyfikowano 2014-02-15 12:34
Autor Wiadomość
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:

C/C++
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;
        }
       
        //
P-104637
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:
C/C++
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;
        }
    }
}
P-104639
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.

C/C++
#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 ]
P-104640
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?
P-104645
RazzorFlame
» 2014-02-15 12:34:37
To już sobie sam musisz napisać, nawet w kursie takie coś znajdziesz :)
P-104653
« 1 »
  Strona 1 z 1