Dodawanie Pkt w quiz-ie
Ostatnio zmodyfikowano 2008-11-17 16:09
ruter Temat założony przez niniejszego użytkownika |
Dodawanie Pkt w quiz-ie » 2008-10-16 09:47:57 Witam mam cos dosyc amatorkiego (ale dopiero na takim etapie sie znajduje) a wiec do rzeczy. Mam taki kod tzn Quiz: #include <iostream> #include <conio.h> #include <string>
using namespace std;
const string g_strOdp = "a";
int main() { string strOdp; cout << "Jak masz na imie ? " << endl; cout << "a)Kamil b)Maniek c)Lucyfer " << endl; cin >> strOdp; if( strOdp == g_strOdp ) { cout << "Brawo twoja odpowiedz to:(" << g_strOdp << ") i jest prawidlowa" << endl; } else cout << "Niestety odpowiedz jest nieprawidlowa!" << endl; getch(); return( 0 ); }
I teraz chcial bym mniej wiecej dowiedziec sie jak mogl by wygladac system dodawania pkt za kazda dobra odp? jakich funkcji do tego potrzeboje. Sam wiem mniej wiecej jak to moze wygladac ale nie chce sie osmieszac smiesznymi linijkami. Dzieki za pomoc. |
|
DejaVu |
» 2008-10-16 12:39:44 Utwórz sobie zmienną: int licznik = 0 i za każdą prawidłową odpowiedź zwiększaj ją o jeden np. tak: if( odpowiedz == "costam" ) licznik++; |
|
ruter Temat założony przez niniejszego użytkownika |
» 2008-10-16 13:11:59 #include <iostream> #include <conio.h> #include <string>
using namespace std;
const string g_strOdp = "a"; const string g_strOdp2 = "b";
int main() { string strOdp; cout << "Jak masz na imie ? " << endl; cout << "a)Kamil b)Maniek c)Lucyfer " << endl; cin >> strOdp; if( strOdp == g_strOdp ) { cout << "Brawo twoja odpowiedz to:(" << g_strOdp << ") i jest prawidlowa" << endl; } else cout << "Niestety odpowiedz jest nieprawidlowa!" << endl; int licznik = 0; if( g_strOdp == g_strOdp ) licznik++; cout << "Brawo posiadasz " << licznik << " Pkt" << endl; cout << "Ile masz lat ? " << endl; cout << "a)32 b)18 c)28 " << endl; cin >> strOdp; if( strOdp == g_strOdp2 ) { cout << "Brawo twoja odpowiedz to:(" << g_strOdp2 << ") i jest prawidlowa" << endl; } else cout << "Niestety odpowiedz jest nieprawidlowa!" << endl; if( g_strOdp == g_strOdp2 ) licznik++; cout << "Brawo posiadasz " << licznik << " Pkt" << endl; cout << endl; getch(); return( 0 ); } Ok, a jeśli mam coś takiego? Nawet jesli odp jest nieprawidlowa to dodaje mi pkt o.O i jak mam zrobic aby zapamietywalo poprzedni wynik ? Troszke sie pogubilem;]A z tego co widze to wyraznie namazałem if( g_strOdp == g_strOdp ) licznik++; ... |
|
DejaVu |
» 2008-10-16 14:19:38 if( g_strOdp == g_strOdp ) Powyższy warunek jest zawsze spełniony. |
|
ruter Temat założony przez niniejszego użytkownika |
» 2008-10-18 07:03:52 A wiec wszytko ok ale troche glupio to poskladalem... Zobaczmy: #include <iostream> #include <conio.h> #include <string>
using namespace std;
const string g_strOdp = "a"; const string g_strOdp2 = "b"; const string g_strOdp3 = "c";
int main() { int licznik = 0; int licznik2 = 0; string strOdp; cout << "Jak masz na imie ? " << endl; cout << "a)Kamil b)Maniek c)Lucyfer " << endl; cin >> strOdp; if( strOdp == g_strOdp ) { cout << "Brawo twoja odpowiedz to:(" << g_strOdp << ") i jest prawidlowa" << endl; } else cout << "Niestety odpowiedz jest nieprawidlowa!" << endl; if(( strOdp == g_strOdp2 ) ||( strOdp == g_strOdp3 ) ) licznik--; if( strOdp == g_strOdp ) licznik++; cout << "Brawo posiadasz " << licznik << " Pkt." << endl; cout << "Ile masz lat ? " << endl; cout << "a)32 b)18 c)28 " << endl; cin >> strOdp; if( strOdp == g_strOdp2 ) { cout << "Brawo twoja odpowiedz to:(" << g_strOdp2 << ") i jest prawidlowa" << endl; } else cout << "Niestety odpowiedz jest nieprawidlowa!" << endl; if(( strOdp == g_strOdp ) ||( strOdp == g_strOdp3 ) ) licznik--; if( g_strOdp == g_strOdp2 ) licznik2++; cout << "Brawo posiadasz " << licznik + licznik2 << " Pkt" << endl; cout << endl; getch(); return( 0 ); } Niby wszystko ok ale jak wiadomo funkcja: if(( strOdp == g_strOdp2 ) ||( strOdp == g_strOdp3 ) ) licznik--; jak i ta: if( g_strOdp == g_strOdp2 ) licznik2++; beda pobieraly dane z int licznik = 0; co mija sie z celem bo wynik zawksze bedzie dodawany badz odejmowany od zera. Chce aby kazda dana odp byla zapamietywana i tutaj jest problem bo chyba bede musial to robic za pomoca "zapisz do pliku /Odczytaj" wtedy dopiero taki zapis bedzie prawidlowo funckjonowal prawda? |
|
DejaVu |
» 2008-10-18 12:46:30 Z teco co napisałeś na początku to chciałeś tylko i wyłącznie zliczać ilość poprawnych odpowiedzi. Obecnie mówisz, że chcesz zapisywać każdą udzieloną odpowiedź. Zapisywać odpowiedzi możesz do tablicy zadeklarowanej np. tak: std::string tablica[ 50 ]; Wadą takiego rozwiązania jest konieczność ustalenia maksymalnej ilości elementów. Drugim rozwiązaniem jest dynamiczne programowanie - jednak sądzę, że narazie nie masz takiej wiedzy, żeby to zrobić za pomocą tej techniki. Trzecim rozwiązaniem, które jest łatwe w użyciu to: #include <vector>
std::vector < std::string > odpowiedzi;
odpowiedzi.push_back( "jakas odpowiedz" );
for( size_t i = 0; i < odpowiedzi.size(); i++ ) { cout << "Odpowiedz " <<( i + 1 ) << " to: " << odpowiedzi[ i ] << endl; }
Użycie powyższego zapisu zapewnia Ci łatwą możliwość organizacji danych w postaci tablicy. Kontener vector dynamicznie zarządza pamięcią - dzieje się to jednak za Twoimi plecami i nie musisz wiedzieć jak to działa, tylko jak się tym kontenerem posługiwać. |
|
ruter Temat założony przez niniejszego użytkownika |
» 2008-10-18 12:52:30 Na chwile obecna skleiłem cos takiego a raczej na swoj rozum ;] #include <iostream> #include <conio.h> #include <string>
using namespace std;
const string g_strOdp = "a"; const string g_strOdp2 = "b"; const string g_strOdp3 = "c";
int main() { int licznik = 0; string strOdp; cout << "______________________" << endl; cout << "Witaj w 'Testerze' Rutera v0.1" << endl; cout << "Dokladnie zapoznaj sie z pytaniami i zobywaj Punkty ;)" << endl; cout << "Za kazda prawidlowa odp dostajesz 1 pkt. Lub za kazda zla pkt beda odejmowane!" << endl; cout << "______________________" << endl; cout << endl; cout << "(Pytanie TESTOWE)Jak ma na imie Ruter ? " << endl; cout << "a)Kamil b)Maniek c)Lucyfer " << endl; cin >> strOdp; if( strOdp == g_strOdp ) { cout << "Brawo twoja odpowiedz to:(" << g_strOdp << ") i jest prawidlowa" << endl; } else cout << "Niestety odpowiedz jest nieprawidlowa!" << endl; if(( strOdp == g_strOdp2 ) ||( strOdp == g_strOdp3 ) ) licznik++; if( strOdp == g_strOdp ) licznik++; cout << "To bylo pytanie TESTOWE! Za 0 Pkt." << endl; cout << "______________________" << endl; cout << "Ile Ruter ma lat ? " << endl; cout << "a)32 b)18 c)28 " << endl; cin >> strOdp; if( strOdp == g_strOdp2 ) { cout << "Brawo twoja odpowiedz to:(" << g_strOdp2 << ") i jest prawidlowa" << endl; } else cout << "Niestety odpowiedz jest nieprawidlowa!" << endl; if(( strOdp == g_strOdp ) ||( strOdp == g_strOdp3 ) ) licznik--; if( g_strOdp == g_strOdp2 ) licznik++; cout << "Brawo posiadasz " << licznik << " Pkt" << endl; cout << "______________________" << endl; cout << "Jak mial na Imie Chopin ? " << endl; cout << "a)Fryderyk b)Waclaw c)Cezary " << endl; cin >> strOdp; if( strOdp == g_strOdp ) { cout << "Brawo twoja odpowiedz to:(" << g_strOdp << ") i jest prawidlowa" << endl; } else cout << "Niestety odpowiedz jest nieprawidlowa!" << endl; if(( strOdp == g_strOdp2 ) ||( strOdp == g_strOdp3 ) ) licznik--; { if( g_strOdp == g_strOdp ) licznik++; } cout << "Brawo posiadasz " << licznik << " Pkt" << endl; cout << "______________________" << endl; cout << "Najbardziej znane kawaly sa o ? " << endl; cout << "a)Jasiu i Maglosi b)Polakach c)Niemcach " << endl; cin >> strOdp; if( strOdp == g_strOdp ) { cout << "Brawo twoja odpowiedz to:(" << g_strOdp << ") i jest prawidlowa" << endl; } else cout << "Niestety odpowiedz jest nieprawidlowa!" << endl; if(( strOdp == g_strOdp2 ) ||( strOdp == g_strOdp3 ) ) licznik--; { if( g_strOdp == g_strOdp ) licznik++; } cout << "Brawo posiadasz " << licznik << " Pkt" << endl; cout << "______________________" << endl; cout << "Kto pierze w rzece ? " << endl; cout << "a)TY b)Twoj Stary c)Twoja Stara " << endl; cin >> strOdp; if( strOdp == g_strOdp3 ) { cout << "Brawo twoja odpowiedz to:(" << g_strOdp3 << ") i jest prawidlowa" << endl; } else cout << "Niestety odpowiedz jest nieprawidlowa!" << endl; if(( strOdp == g_strOdp2 ) ||( strOdp == g_strOdp ) ) licznik--; { if( g_strOdp == g_strOdp3 ) licznik++; } cout << "Brawo posiadasz " << licznik << " Pkt" << endl; cout << "______________________" << endl; getch(); return( 0 ); }
Jednak gdy odp jest zla odejmuje pkt. Sprobuje tak jak ty doradzasz 3-cim sposobem i zobaczymy co z tego mi wyjdzie ;) |
|
DeBugger |
» 2008-11-17 13:40:20 Aleś se testa wymyślił. :P |
|
« 1 » 2 |