[C++] program do nauki słówek w innych językach
Ostatnio zmodyfikowano 2015-05-15 19:55
JanekJr Temat założony przez niniejszego użytkownika |
[C++] program do nauki słówek w innych językach » 2015-05-15 16:25:59 Witam. Przejrzałem program wiele razy nie mogę znaleźć źródła błędu. Gdy wchodzisz w "Sprawdź się" a następnie w "1. Chc\251 t\210umaczy\206 wyrazy z polskiego na angielski" (część ang->pol jeszcze nie skończona). To nie wyświetla wyrazu do przetłumaczenia. main.cpp #include <iostream> #include <conio.h> #include <windows.h> #include "Aplikacja.h"
using namespace std;
char wybor;
int main() { Aplikacja aplikacja; for(;; ) { system( "cls" ); cout << "------------" << endl; cout << "MENU GL\235\340WNE" << endl; cout << "------------" << endl; cout << endl; cout << "1. Dodaj wyrazy" << endl; cout << "2. Sprawd\253 si\251" << endl; cout << "3. Wyj\230cie" << endl; wybor = getch(); switch( wybor ) { case '1': aplikacja.dodaj_wyraz(); break; case '2': aplikacja.menu(); break; case '3': exit( 0 ); } } return 0; }
Aplikacja.h #include <iostream> #include <fstream>
using namespace std;
class Aplikacja { public: string polskie, angielskie; string polskie2, angielskie2; char wybor; fstream plik; string linia; unsigned int losowanie, losowanie2; int licznik; string sprawdz; void dodaj_wyraz(); void menu(); void pol_ang(); void ang_pol(); void parzysta_nieparzysta(); void pol_ang_wypisz(); };
Aplikacja.cpp #include <iostream> #include "Aplikacja.h" #include <windows.h> #include <fstream> #include <conio.h> #include <time.h>
using namespace std;
void Aplikacja::dodaj_wyraz() { system( "cls" ); cout << "Podaj wyraz po polsku: " << endl; cin >> polskie; cout << "Jak to jest po angielsku: " << endl; cin >> angielskie; plik.open( "slowka.txt", ios::out | ios::app ); plik << polskie << endl; plik << angielskie << endl; plik.close(); cout << endl << "Dzi\251ki. Naci\230nij dowolny klawisz, aby kontynuowa\206."; getchar(); getchar(); }
void Aplikacja::menu() { system( "cls" ); cout << "Sprawd\253 si\251" << endl << endl; cout << "1. Chc\251 t\210umaczy\206 wyrazy z polskiego na angielski" << endl; cout << "2. Chc\251 t\210umaczy\206 wyrazy z angielskiego na polski" << endl; wybor = getch(); switch( wybor ) { case '1': pol_ang(); break; case '2': ang_pol(); break; } }
void Aplikacja::pol_ang() { system( "cls" ); plik.open( "slowka.txt", ios::in ); if( plik.good() == false ) { MessageBox( NULL, "File not found", "ERROR", MB_ICONSTOP ); exit( 0 ); } licznik = 0; while( getline( plik, linia ) ) { licznik++; } do { srand( time( NULL ) ); losowanie = rand() % licznik + 1; losowanie2 = losowanie; parzysta_nieparzysta(); } while( losowanie == 0 ); licznik = 0; while( getline( plik, linia ) ) { licznik++; if( losowanie2 == licznik ) polskie2 = linia; if( losowanie2 + 1 == licznik ) angielskie2 = linia; } plik.close(); pol_ang_wypisz(); }
void Aplikacja::ang_pol() { }
void Aplikacja::parzysta_nieparzysta() { losowanie = losowanie % 2; }
void Aplikacja::pol_ang_wypisz() { system( "cls" ); cout << "Polski na angielski:" << endl << endl; cout << polskie2 << endl; cout << "Jak to b\251dzie po angielsku: " << endl; cin >> sprawdz; if( sprawdz == angielskie2 ) cout << "Brawo"; else cout << "Zle"; getchar(); getchar(); }
|
|
Monika90 |
» 2015-05-15 16:34:13 W funkcji pol_ang, przed pętla while( getline( plik, linia ) ) { licznik++; if( losowanie2 == licznik ) polskie2 = linia; if( losowanie2 + 1 == licznik ) angielskie2 = linia; }
daj plik.clear(); plik.seekg( 0, ios::beg );
powinno pomóc |
|
JanekJr Temat założony przez niniejszego użytkownika |
» 2015-05-15 16:41:42 Dziękuję Ci bardzo. Tylko mogę wiedzieć co robi plik.seekg( 0, ios::beg );? i po co plik.clear() tutaj? :D |
|
Monika90 |
» 2015-05-15 16:53:57 ta pętla while( getline( plik, linia ) ) { licznik++; }
przeczyta wszystkie linie w pliku, więc następna pętla nie będzie już miała co czytać, trzeba wrócić na początek pliku, do tego służy seekg. clear jest potrzebne by wyczyścić flagę błędow |
|
JanekJr Temat założony przez niniejszego użytkownika |
» 2015-05-15 19:55:19 dzięki wielkie :D
|
|
« 1 » |