Witam.
Mam taki "prowizoryczny" słownik. Działa on w sposób, że do stworzonego przez nas pliku [i]data.dat[/i] dodajemy przez program wyraz i jego tłumaczenie. Możliwe jest obejrzenie całej bazy dodanych wyrazów. Oto kod programu:
#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <iomanip.h>
#include <conio.h>
class slownik{
char pl[20],eng[20];
public:
void getdata();
void showdata();
char *getpl(){ return pl; }
char *geteng(){ return eng; }
};
void slownik :: getdata(){
cout<<"\nWyraz po polsku : ";
cin>>pl;
cout<<"Wyraz po angielsku : ";
cin>>eng;
}
void slownik :: showdata(){
cout<<"\n";
cout<<setw(20)<<pl;
cout<<setw(20)<<eng;
}
int main(){
slownik rec;
fstream file;
file.open("data.dat", ios::ate | ios::in | ios::out | ios::binary);
char ch,pl[20],eng[20];
int wybor,found=0;
while(1){
cout<<"\n*****SLOWNIK*****\n";
cout<<"1) Polski - Angielski\n";
cout<<"2) Angielsko - Polski\n";
cout<<"3) Dodaj nowy wyraz\n";
cout<<"4) Wyswietl cala baze\n";
cout<<"5) Wyjdz z programu\n";
cout<<"Wybierz wlasciwa opcje : ";
cin>>wybor;
switch(wybor){
case 1 :
cout<<"\n\nNapisz wyraz : ";
cin>>pl;
file.seekg(0,ios::beg);
found=0;
while(file.read((char *) &rec, sizeof(rec)))
{
if(strcmp(pl,rec.getpl())==0)
{
found=1;
rec.showdata();
}
}
file.clear();
if(found==0)
cout<<"\n\n---Wyrazu nie znaleziono---\n";
getch();
break;
case 2 :
cout<<"\n\nWpisz wyraz : ";
cin>>eng;
file.seekg(0,ios::beg);
found=0;
while(file.read((char *) &rec, sizeof(rec)))
{
if(strcmp(eng,rec.geteng())==0)
{
found=1;
rec.showdata();
}
}
file.clear();
if(found==0)
cout<<"\n\n---Wyrazu nie znaleziono---\n";
getch();
break;
case 3 :
rec.getdata();
cin.get(ch);
file.write((char *) &rec, sizeof(rec));
break;
case 4 :
file.seekg(0,ios::beg);
cout<<"\n\nCala Baza wyrazow\n";
while(file){
file.read((char *) &rec, sizeof(rec));
if(!file.eof())
rec.showdata();
}
file.clear();
getch();
break;
case 5 : goto out;
}
}
out:
file.close();
}
```cpp
Jeżeli chodzi o działanie programu nie mam zastrzeżeń, ale chciałbym dodać jeszcze jedną funkcję, a mianowicie wyszukiwanie po fragmencie wyrazu. Chciałem użyć do tego funkcji strstr:
```cpp
/* strstr example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="This is a simple string";
char * pch;
pch = strstr (str,"simple");
strncpy (pch,"sample",6);
puts (str);
return 0;
}
Nie jestem pewien jak to zrobić. Mógłby mi ktoś w tym pomóc?
Pozdrawiam, Świeżak.