Witajcie :)
Na podstawie programu wczytywania pliku od Pana Mirosława Zelenta, zrobiłem swój własny programik, dzięki któremu można się uczyć np. stolic państw, czy też słownictwa z jakiegoś języka.
Jednak na trafiłem na problem, polega on na tym, że jeśli w pliku mam wyraz, który zawiera znak polski to nie uznaje poprawnej odpowiedzi (nic dziwnego) , tylko pytanie jak wyeliminować ten problem ? Szukałem po sieci, ale nie trafiłem na rozwiązanie problemu, być może nie umiem wciągnąć go do swojego kodu..
Kod programu:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <string>
#include <cstring>
#include <ctime>
#include <Windows.h>
#include <conio.h>
using namespace std;
string pytanie[100];
string poprawna[100];
string odpowiedz[100];
int punkty=0;
void changecolor(int number_color)
{
HANDLE hWyj;
hWyj=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hWyj, number_color);
}
int main()
{
//srand( time( NULL ) );
int licznik=0;
int nr_linii=1;
string linia;
int nr_pytania_poprawnego=0;
int nr_poprawnej=0;
int liczba_zagadnien;
string nazwa_pliku;
int losowana_liczba;
fstream plik;
plik.open("stolice.txt",ios::in);
if (plik.good()==false)
{
cout<<"Nie udalo sie otworzyc pliku!";
exit(0);
}
while(getline(plik,linia))
{
if (nr_linii%2==1)
{
pytanie[nr_pytania_poprawnego]=linia;
nr_pytania_poprawnego++;
}
else //if(nr_linii%2==0)
{
poprawna[nr_poprawnej]=linia;
nr_poprawnej++;
}
nr_linii++;
licznik++;
}
cout << "Ile zagadnie\344: ";
cin >> liczba_zagadnien;
for(int k=0; k<liczba_zagadnien;k++)
{
changecolor(7);
cout << pytanie[k] << endl;
cin >> odpowiedz[k];
if(odpowiedz[k]==poprawna[k])
{
changecolor(14);
cout << "Dobrze!" << endl;
punkty++;
}
else
{
changecolor(4);
cout << "Zle!";
changecolor(7);
cout<< " Poprawna odp to: ";
changecolor(15);
cout << poprawna[k] << endl;
}
}
changecolor(7);
cout << "Koniec. Zdobyles " << punkty << "punktow";
}
Plik stolice.txt
Polska
Warszawa
Niemcy
Berlin
Francja
Paryż
Irlandia
Dublin