Witam wszystkich pasjonatów!
Chcąc przećwiczyć podejście proceduralne (a także pomóc sobie w wkuwaniu słówek ) napisałem program pomagający uczyć się angielskiego. Projekt nie ma żadnych błędów (tak mi się wydaje). Mam prośbę, by został on oceniony pod względem doboru nazw zmiennych, podziału na funkcję itd... Czyli z aspektu czysto programistycznego . Jeszcze raz powtórzę, jest on napisany tylko na poziomie proceduralnym.
Działanie programu
Przed uruchomieniem należy przygotować listę słówek, które chcemy się nauczyć. W pierwszej linii podajemy słówko angielskie, w drugiej jego polski odpowiednik. W trzeciej znowu angielskie, czwartej jego polski odpowiednik itd... Plik powinien mieć nazwę "slowka_nauka.txt" i powinien znajdować się w głównym katalogu projektu. Przykład:
window
okno
house
dom
cat
kot
Po uruchomieniu wystarczy wpisać prawidłowy odpowiednik, a po zakończeniu sesji ukarze nam się podsumowanie.
A oto sam kod
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <time.h>
using namespace std;
//procedury
void introduction();
void openFileStream();
void getWords();
void compareWords();
void isEveryhthingGood();
void summation();
//funkcje
bool checkWordBeingUsed(int inex);
//zmienne
int numberOfAllWords;
int numberOfCompleteWords=0,numberOfWrongWords=0;
int indexOfCompleteWords[100],indexOfWrongWords[100];
int polishWordNumber;
string englishWords[100],polishWords[100];
string userWord;
fstream file;
int main()
{
introduction();
openFileStream();
getWords();
file.close();
compareWords();
return 0;
}
void introduction()
{
cout<<"Witaj w programie Lern Words 1.0!"<<endl<<"Pamietaj, by wczesniej przygotowac liste slow do nauki."<<endl<<"Gotowy? Zaczynamy :)"<<endl<<endl;
}
void openFileStream()
{
file.open("slowka_nauka.txt",ios::in);
if(file.good() == false)
{
cout << "Plik nie istnieje!";
exit(0);
}
}
void getWords()
{
string line;
int actualLine = 1;
int actualWordNumber = 0;
while(getline(file,line))
{
switch(actualLine)
{
case 1: englishWords[actualWordNumber] = line; break;
case 2: polishWords[actualWordNumber] = line; break;
}
if (actualLine > 1) actualWordNumber++;
if (actualLine > 1) actualLine=1;
else actualLine ++;
numberOfAllWords++;
}
numberOfAllWords /= 2;
}
void compareWords()
{
for(int i=1;i<=numberOfAllWords;i++)
{
do
{
srand (time(NULL));
polishWordNumber = rand() % numberOfAllWords;
} while(checkWordBeingUsed(polishWordNumber)==true);
cout<<"Podaj po angielsku slowo "<<polishWords[polishWordNumber]<<": ";
cin>>userWord;
if(userWord == englishWords[polishWordNumber])
{
indexOfCompleteWords[numberOfCompleteWords] = polishWordNumber;
numberOfCompleteWords++;
cout<<"Dobrze! Podales poprawne slowo."<<endl;
}
else
{
indexOfWrongWords[numberOfWrongWords] = polishWordNumber;
numberOfWrongWords++;
cout<<"Niestety nie. Poprawne slowo to "<<englishWords[polishWordNumber]<<"."<<endl;
}
}
summation();
}
bool checkWordBeingUsed(int index)
{
int q=1;
for (int i=1;i<=numberOfCompleteWords;i++)
{
if(index == indexOfCompleteWords[i-1])
{
q=2;
return true;
}
}
for (int i=1;i<=numberOfWrongWords;i++)
{
if(index == indexOfWrongWords[i-1])
{
q=2;
return true;
}
}
if(q=1) return false;
}
void summation()
{
cout<<endl<<"Sesja zakonczona. Oto twoje wyniki: "<<endl<<endl;
if(numberOfCompleteWords>0)
{
cout<<"Podales poprawnie: "<<endl;
for (int i=0;i<numberOfCompleteWords;i++)
{
cout<<polishWords[indexOfCompleteWords[i]]<<" - "<<englishWords[indexOfCompleteWords[i]]<<endl;
}
}
else cout<<"Nie podales poprawnie ani jednego slowa :("<<endl;
cout<<endl;
if(numberOfWrongWords>0)
{
cout<<"Podales niepoprawnie: "<<endl;
for (int i=0;i<numberOfWrongWords;i++)
{
cout<<polishWords[indexOfWrongWords[i]]<<" - "<<englishWords[indexOfWrongWords[i]]<<endl;
}
}
else cout<<"Gratulacje! Wszystkie słowa zostały podane poprawnie :)"<<endl;
}
Będę wdzięczny za wszystkie opinie. Dopiero zaczynam, więc proszę o wytknięcie wszystkiego co jest niepoprawne.
Już dziękuję, pozdrawiam.