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

Dodawanie Pkt w quiz-ie

Ostatnio zmodyfikowano 2008-11-17 16:09
Autor Wiadomość
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:

C/C++
#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.
P-2073
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++;
P-2078
ruter
Temat założony przez niniejszego użytkownika
» 2008-10-16 13:11:59
C/C++
#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++;
...
P-2080
DejaVu
» 2008-10-16 14:19:38
if( g_strOdp == g_strOdp )
Powyższy warunek jest zawsze spełniony.
P-2082
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:
C/C++
#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?
P-2168
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:
C/C++
#include <vector>
//...
std::vector < std::string > odpowiedzi;
//...
odpowiedzi.push_back( "jakas odpowiedz" ); //dodanie odpowiedzi do vector'a

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ć.
P-2172
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 ;]
C/C++
#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; //Poczatek
    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--; // Funkcja odejmowania pkt z zla odp
   
    {
        if( g_strOdp == g_strOdp3 ) licznik++; //Dodawanie pkt +1 zawsze za dobra odp
       
    }
    cout << "Brawo posiadasz " << licznik << " Pkt" << endl;
    cout << "______________________" << endl; //Koniec
   
    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 ;)
P-2173
DeBugger
» 2008-11-17 13:40:20
Aleś se testa wymyślił. :P
P-2559
« 1 » 2
  Strona 1 z 2 Następna strona