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

[C++] program do nauki słówek w innych językach

Ostatnio zmodyfikowano 2015-05-15 19:55
Autor Wiadomość
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
C/C++
#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
C/C++
#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
C/C++
#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();
}
P-132301
Monika90
» 2015-05-15 16:34:13
W funkcji pol_ang, przed pętla
C/C++
while( getline( plik, linia ) )
{
    licznik++;
   
    if( losowanie2 == licznik ) polskie2 = linia;
   
    if( losowanie2 + 1 == licznik ) angielskie2 = linia;
   
}

daj
C/C++
plik.clear();
plik.seekg( 0, ios::beg );

powinno pomóc
P-132302
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
P-132303
Monika90
» 2015-05-15 16:53:57
ta pętla
C/C++
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
P-132306
JanekJr
Temat założony przez niniejszego użytkownika
» 2015-05-15 19:55:19
dzięki wielkie :D
P-132311
« 1 »
  Strona 1 z 1