#include <iostream>
#include <istream>
#include <string>
#include <stdlib.h>
#include <fstream>
using namespace std;
struct osoba
{
string imie;
string nazwisko;
string telefon;
int wiek;
};
int i;
osoba czlowiek[30];
void Dodaj();
void Wyswietl();
void Zapisz();
void Wczytaj();
void Znajdz();
void Usun();
void Sortuj();
int main(){
char wybor;
do
{
cout<<"\nWitamy w bazie danych: \n\n";
cout<<"a - Dodaj osobe\n";
cout<<"b - Zobacz wszystkie dane\n";
cout<<"c - Zapisz dane\n";
cout<<"d - Wczytaj dane\n";
cout<<"e - Znajdz kogos\n";
cout<<"f - Usun kogos\n";
cout<<"g - Sortuj wg. wieku\n";
cout<<"k - Koniec programu\n";
cin>> wybor;
while(wybor!='a' && wybor!='b' && wybor!='c' && wybor!='d'
&& wybor!='e' && wybor!='f' && wybor!='g' && wybor!='k')
{
cout<<"Błąd!!! Wcisnij a,b,c,d,e,f,g lub k!\nWybieram:\t";
cin>>wybor;
}
switch(wybor)
{
case 'a' : Dodaj();
break;
case 'b' : Wyswietl();
break;
case 'c' : Zapisz();
break;
case 'd' : Wczytaj();
break;
case 'e' : Znajdz();
break;
case 'f' : Usun();
break;
case 'g' : Sortuj();
break;
}
}
while(wybor!='k');
return 0;
}
void Dodaj()
{
cout<<"Podaj imie:\t";
cin>>czlowiek[i].imie;
cout<<"\nPodaj nazwisko:\t";
cin>>czlowiek[i].nazwisko;
cout<<"\nPodaj wiek:\t";
cin>>czlowiek[i].wiek;
cout<<"\nPodaj telefon:\t";
cin>>czlowiek[i].telefon;
i++;
cout<<"Zostala dodaja osoba\n";
cout<<"Liczba osob w bazie "<<i<<"\n";
}
void Wyswietl()
{
if(i !=0)
{
cout<<"Dane w pliku to :\n\n\n";
for(short j=0; j<i; j++)
{
cout<<"Osoba "<<j+1<<" : \n";
cout<<"Imie : "<<czlowiek[j].imie<<"\n";
cout<<"Nazwisko : "<<czlowiek[j].nazwisko<<"\n";
cout<<"Wiek : "<<czlowiek[j].wiek<<"\n";
cout<<"Telefon : "<<czlowiek[j].telefon<<"\n";
}
cout<<"Liczba osób w bazie "<<i<<"\n\n";
}
else
{
cout<<"Nie podano żadnej osoby";
}
}
void Zapisz()
{
ofstream plik("baza.txt", ios::out | ios::trunc);
plik<<i<<"\n";
for(short j=0;j<i;j++)
{
plik<<czlowiek[j].imie<<"\n";
plik<<czlowiek[j].nazwisko<<"\n";
plik<<czlowiek[j].wiek<<"\n";
plik<<czlowiek[j].telefon<<"\n";
}
cout<<"Dane zostaly zapisane\n";
}
void Wczytaj()
{
ifstream plik("baza.txt", ios::in);
plik>>i;
int j=0;
do
{
plik>>czlowiek[j].imie;
plik>>czlowiek[j].nazwisko;
plik>>czlowiek[j].wiek;
plik>>czlowiek[j].telefon;
j++;
}
while( !plik.eof() );
cout<<"Wczytano dane\n";
}
void Znajdz()
{
if ( i != 0 )
{
string imie;
cout<<"Podaj imie:\t";
cin>>imie;
for(int j=0;j<i;j++)
{
if(imie == czlowiek[j].imie)
{
cout<<"\n\n";
cout<<"Znaleziono osobe o indexie: "<<j+1<<"\n";
cout<<czlowiek[j].imie<<"\n";
cout<<czlowiek[j].nazwisko<<"\n";
cout<<czlowiek[j].wiek<<"\n";
cout<<czlowiek[j].telefon<<"\n";
}
}
}
else
{
cout<<"Nie ma nikogo w bazie\n";
}
}
void Usun()
{
int kogo;
if(i!=0)
{
cout<<"Podaj index osoby do usuniecia\n";
cin>>kogo;
if(kogo>i || kogo<0)
{
cout<<"Nie ma osoby o tym indexie, sprawdz dostepne osoby\n";
}
else
{
for (int k=kogo;k<i;k++)
{
czlowiek[k-1].imie = czlowiek[k].imie;
czlowiek[k-1].nazwisko = czlowiek[k].nazwisko;
czlowiek[k-1].wiek = czlowiek[k].wiek;
czlowiek[k-1].telefon = czlowiek[k].telefon;
}
i--;
cout<<"Osoba o podanym indexie została usunięta\n";
cout<<"Liczba osób w bazie: "<<i<<"\n";
Zapisz();
}
}
else
{
cout<<"Nie ma nikogow w bazie\n";
}
}
void Sortuj()
{
unsigned int licznik;
osoba temp;
do
{
licznik=0;
for(int a=0;a<(i-1);a++)
{
if(czlowiek[a].wiek>czlowiek[a+1].wiek)
{
temp = czlowiek[a].wiek;
czlowiek[a].wiek = czlowiek[a+1].wiek;
czlowiek[a+1]=temp;
licznik++;
}
}
}
while(licznik>0);
}
temp = czlowiek[a].wiek;
w tej lini wywala mi błąd reszta działa
teraz tylko ptyanie ponieważ takie błedy mi pokazuje kompilator:
test.cpp In function `void Sortuj()':
test.cpp no match for 'operator=' in 'temp = czlowiek[a].osoba::wiek'
test.cpp:10 candidates are: osoba& osoba::operator=(const osoba&)
nadałem wartości temp typ struktury osoba