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

[C++] - If sprawdzający, czy dwa słowa są takie same

Ostatnio zmodyfikowano 2016-12-29 10:46
Autor Wiadomość
pealike
Temat założony przez niniejszego użytkownika
[C++] - If sprawdzający, czy dwa słowa są takie same
» 2016-12-28 11:12:05
Witam serdecznie. Chcę stworzyć wisielca w C++, całe sprawdzanie i tak dalej zrobiłem, lecz pozostaje kwestia wygrania. Niestety, gdy daję w IF'a oba słowa (gracza oraz podane słowo do odgadnięcia) niestety nawet, gdy są różne, i tak wywala returna i cout z wygraną. Moje pytanie jest takie: Jak tutaj stworzyć system wygranej? Podsyłam main.cpp, jest dość krótki, więc myślę, że można się rozczytać.

C/C++
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <windows.h>
#include <string>
#include <algorithm>
#include <cstring>

using namespace std;

string slowo, slowo2, podanie;
int proby, maxproby;
int slowolength, slowo2length;

int napis( int proby1, int maxproby )
{
    cout << "Proby: " << maxproby << endl;
    cout << "Podaj literke: ";
}

int main()
{
    cout << "Witaj w Wisielcu!" << endl;
    cout << "Podaj slowo by ktos odgadnal: ";
    getline( cin, slowo );
    slowolength = slowo.length();
    transform( slowo.begin(), slowo.end(), slowo.begin(),::tolower );
    Sleep( 1000 );
    system( "cls" );
    if( slowolength >= 10 ) maxproby = 20;
   
    if( slowolength < 10 ) maxproby = 10;
   
    for(;; )
    {
        system( "cls" );
        for( slowo2length = 0; slowo2length < slowolength; slowo2length++ ) cout << slowo2[ slowo2length ];
       
        cout << endl;
        napis( proby, maxproby );
        cin >> podanie;
        transform( podanie.begin(), podanie.end(), podanie.begin(),::tolower );
        maxproby--;
        for( int i = 0; i <= slowolength; i++ )
        {
            if( slowo[ i ] == podanie[ 0 ] ) { slowo2[ i ] = slowo[ i ]; maxproby++; }
        }
        if( maxproby == 0 )
        {
            cout << "Przegrales! Slowo bylo takie: " << slowo << endl; return 0;
        }
    }
}
P-155589
pealike
Temat założony przez niniejszego użytkownika
» 2016-12-29 10:46:12
Okej, nie potrzeba mi już pomocy, znalazłem sposób na stworzenie systemu wygranej.
Jeżeli ktoś by chciał zobaczyć jak to zrobiłem, wklejam kod z kilkoma komentarzami:

C/C++
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <windows.h>
#include <string>
#include <algorithm>
#include <cstring>

using namespace std;

string slowo, slowo2, podanie;
int proby, maxproby;
int slowolength, slowo2length;
int dren = 0;

int napis( int proby1, int maxproby )
{
    cout << "Proby: " << maxproby << endl;
    cout << "Podaj literke: ";
}

int main()
{
    cout << "Witaj w Wisielcu!" << endl;
    cout << "Podaj slowo by ktos odgadnal: ";
    getline( cin, slowo );
    slowolength = slowo.size();
    transform( slowo.begin(), slowo.end(), slowo.begin(),::tolower ); // jezeli uzytkownik wpisal duza litera, zamieni ja na mala
    Sleep( 1000 );
    system( "cls" );
    if( slowolength >= 10 ) maxproby = 20; // jezeli wyraz jest dluzszy, dajmy uzytkownikowi wiecej szans
   
    if( slowolength < 10 ) maxproby = 10;
   
    for(;; )
    {
        system( "cls" );
        // jezeli dlugosc slowa jest krotsze od zmiennej "dren" ktora jest dodawana przy poprawnej odpowiedzi, wykonuj to:
        if( dren != slowolength )
        {
            cout << slowo2 << endl;
            napis( proby, maxproby );
            cin >> podanie;
            transform( podanie.begin(), podanie.end(), podanie.begin(),::tolower ); // jezeli uzytkownik wpisal duza litera, zamieni ja na mala
            maxproby--;
            for( int i = 0; i <= slowolength; i++ )
            {
                if( slowo[ i ] == podanie[ 0 ] ) { slowo2.push_back( podanie[ 0 ] ); maxproby++; dren++; } // przy poprawnej odpowiedzi dodaje sie dren, do slowa2 dodaje sie podana literka
            }
            if( maxproby == 0 )
            {
                cout << "Przegrales! Slowo bylo takie: " << slowo << endl; return 0;
            }
        }
        // jezeli nie, oznacza to, ze wygrales.
        else
        {
            cout << "Wygrana!" << endl; return 0;
        }
       
    }
}
P-155633
« 1 »
  Strona 1 z 1