Witam, jestem uczniem klasy IV technikum informatycznego i narobiłem sobie lekkich zaległości byłbym bardzo wdzięczny jeżeli ktoś mógłby opisać/ wytłumaczyć ten o to program co w którym momencie się dzieje. Za najlepsze wytłumaczenie oferuję doładowanie o kwocie 5/10 zł. Liczę na waszą pomoc
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct Slownik
{
int numer; /// numer w bazie
string pol;
string ang;
};
void
dodaj_do_bazy(char *in,Slownik *s,int n)
{
ofstream plik;
plik.open(in);
for(int i=0;i<n;++i)
{
s[i].numer = i+1;
plik<<s[i].numer<<endl;
cout<<
"Podaj slowko polskie :\n";
cin>>s[i].pol;
plik<<s[i].pol<<endl;
cout<<
"Podaj slowko angielskie :\n";
cin>>s[i].ang;
if (i==n-1)
plik<<s[i].ang;
else
plik<<s[i].ang<<endl;
//plik<<"\n\n";
}
plik.close();
}
///funkcja liczaca rozmiar tablicy struktur
///do ktorej wpisujemy dane
int rozmiar(char *in)
{
string pol, ang;
int numer;
ifstream plik;
plik.open(in);
int rozm = 0;
while(!plik.eof())
{
plik>>numer;
plik>>pol;
plik>>ang;
rozm += 1;
}
plik.close();
return rozm;
}
///funkcja wyciagajaca z pliku wyrazy do tablicy struktur
void zpliku(char *in,Slownik *s,int n)
{
ifstream plik;
plik.open(in);
for(int i=0;i<n;++i)
{
plik>>s[i].numer;
plik>>s[i].pol;
plik>>s[i].ang;
}
}
/// funkja wypisujaca wszystkie wyrazy na ekran
void wypisz(Slownik *s,int n)
{
for(int i=0;i<n;++i)
{
cout<<"Nr."<<s[i].numer<<endl;
cout<<"Slowko polskie : "<<s[i].pol<<endl;
cout<<"Slowko angielskie : "<<s[i].ang<<endl;
cout<<"-----------------------------------\n";
}
}
void pol_ang(Slownik *s,int n)
{
string wzor;
bool k = 0;
cout << "polsko - angielski" << endl;
cout << "wpisz szukane slowo: "; cin >> wzor;
for(int i=0;i<n;++i)
{
if(wzor == s[i].pol)
{
cout << s[i].pol << " - " << s[i].ang;
cout << "\n";
k = 1;
}
}
if(k == 0) cout << "nie ma takiego slowa w bazie\n";
}
void ang_pol(Slownik *s,int n)
{
string wzor;
bool k = 0;
cout << "angielsko - polski" << endl;
cout << "wpisz szukane slowo: "; cin >> wzor;
for(int i=0;i<n;++i)
{
if(wzor == s[i].ang)
{
cout << s[i].ang << " - " << s[i].pol;
cout << "\n";
k = 1;
}
}
if(k == 0) cout << "nie ma takiego slowa w bazie\n";
}
int main(int argc,char **argv)
{
cout<<argc<<endl;
cout<<argv[1]<<endl;
cout<<" =======================================================\n";
cout<<" ========================SLOWNIK========================\n";
cout<<" ======================BAZA DANYCH======================\n";
cout<<" =======================================================\n";
int znak;
///przykladowa nazwa bazy danych
argv[1] = "baza.txt";
do
{
cout<<" 1. Utworz baze danych (plik) wcisnij - 1\n";
cout<<" 2. Dopisz nowe slowo wcisnij - 2\n";
cout<<" 3. Pokaz wszystkie slowa w slowniku wcisnij - 3\n";
cout<<" 4. Slownik pol - ang wcisnij - 4\n";
cout<<" 5. Slownik ang - pol wcisnij - 5\n";
cout<<" 6. Usuwanie wybranego slowa wcisnij - 6\n";
cout<<" -------------------------------------------------------\n";
cout<<" Wyjdz z programu wcisnij - 0\n";
cout<<" -------------------------------------------------------\n";
cin>>znak;
switch(znak)
{
case 1:
{
int n;
cout<<"Ile slowek wprowadzasz do bazy ?\n";
cin>>n;
Slownik *s = new Slownik [n];
dodaj_do_bazy(argv[1],s,n);
delete [] s;
break;
}
case 2:
{
int ile;
cout<<"Ile slowek dopisujesz do bazy ?\n";
cin>>ile;
int roz = rozmiar(argv[1])+ile;
int rozm = rozmiar(argv[1]);
Slownik *s = new Slownik [roz];
zpliku(argv[1],s,rozm);
for(int i=rozm;i<roz;++i)
{
s[i].numer = i+1;
cout<<"Podaj slowko polskie :\n";
cin>>s[i].pol;
cout<<"Podaj slowko angielskie :\n";
cin>>s[i].ang;
}
ofstream plik;
plik.open(argv[1]);
for(int i=0;i<roz;++i)
{
plik<<s[i].numer<<endl;
plik<<s[i].pol<<endl;
if (i==roz-1)
plik<<s[i].ang;
else
plik<<s[i].ang<<endl;
//plik<<"\n\n";
}
plik.close();
delete [] s;
break;
}
case 3:
{
cout<<"Słowa w slowniku :\n\n";
int n = rozmiar(argv[1]);
Slownik *s = new Slownik [n];
zpliku(argv[1],s,n);
wypisz(s,n);
delete [] s;
break;
}
case 4 :{
int n = rozmiar(argv[1]);
Slownik *s = new Slownik [n];
zpliku(argv[1],s,n);
pol_ang(s,n);
delete [] s;
break;
}
case 5 :{
int n = rozmiar(argv[1]);
Slownik *s = new Slownik [n];
zpliku(argv[1],s,n);
ang_pol(s,n);
delete [] s;
break;
}
case 6: {
int n=rozmiar(argv[1]);
Slownik *s = new Slownik[n];
zpliku(argv[1],s,n);
cout<<"Ktore slowo chcesz usunac?\n";
string slowo;
cin>>slowo;
ofstream plik;
plik.open(argv[1]);
int c=0;
for (int i=0;i<n;i++)
{
if ((slowo!=s[i].pol) and (slowo!=s[i].ang))
{
c+=1;
plik<<c<<endl;
plik<<s[i].pol<<endl;
if ((i==n-1) or (c==n-1))
plik<<s[i].ang;
else
plik<<s[i].ang<<endl;
}
}
break;
delete [] s;
}
case 0:
{
cout<<"Zakonczono prace z baza danych\n";
break;
}
}
}while(znak != 0);
return 0;
}