Witam. Posiadam następujący kod:
#include<iostream>
using namespace std;
#include<string>
struct Roslinka
{
string nazwa;
string specjalnosc;
int hp;
Roslinka *nastepny; // wskaznik na nastepny element na liscie
Roslinka() // konstruktor - wywolywany przy tworzeniu obiektu
{
// wczytujemy dane
cout << "Podaj nazwe roslinki: ";
cin >> nazwa;
cout << "Podaj specjalnosc: ";
cin >> specjalnosc;
cout << "Podaj hp: ";
cin >> hp;
// wskazniki ustawiamy na NULL
nastepny = NULL;
}
void wypisz()
{
cout << "Nazwa: " << nazwa << "\tSpecjalnosc " << specjalnosc << "\tHp: " << hp << endl;
}
};
void dodaj_roslinke(Roslinka **korzen)
{
Roslinka *nowa = new Roslinka;
Roslinka *pomoc = (*korzen), *pomoc1 = NULL;
while (pomoc != NULL && (pomoc->specjalnosc).compare(nowa->specjalnosc) == -1)
{
pomoc1 = pomoc;
pomoc = pomoc->nastepny;
}
if (pomoc != NULL && (pomoc->specjalnosc).compare(nowa->specjalnosc) == 0)
{
cout << "Roslinka " << nowa->specjalnosc << " juz istnieje w zbiorze roslin\n";
delete nowa;
}
else if ((*korzen) == NULL || (pomoc == (*korzen) && (pomoc->specjalnosc).compare(nowa->specjalnosc) == 1))
{
nowa->nastepny = (*korzen);
(*korzen) = nowa;
}
else
{
pomoc1->nastepny = nowa;
nowa->nastepny = pomoc;
}
}
void wyszukaj_roslinke(Roslinka *korzen, string a)
{
while(korzen != NULL && (korzen->specjalnosc).compare(a) != 0)
korzen = korzen->nastepny;
if (korzen == NULL)
cout << "Nie ma roslinki " << a << endl;
else
korzen->wypisz();
}
void wypisz_roslinozbior(Roslinka *korzen)
{
cout << "Zawartosc Roslino-zbioru:\n";
while(korzen != NULL)
{
korzen->wypisz();
korzen = korzen->nastepny;
}
}
bool usun_roslinke(Roslinka **korzen, string a)
{
if ((*korzen) == NULL)
return false;
Roslinka *pomoc = (*korzen), *pomoc1 = NULL;
while(pomoc != NULL && (pomoc->specjalnosc).compare(a) != 0)
{
pomoc1 = pomoc;
pomoc = pomoc->nastepny;
}
if (pomoc == NULL)
return false;
else if (pomoc == (*korzen))
{
(*korzen) = (*korzen)->nastepny;
delete pomoc;
}
else
{
pomoc1->nastepny = pomoc->nastepny;
delete pomoc;
}
return true;
}
int main()
{
char instrukcja;
string specjalnosc;
Roslinka *korzen = NULL;
cout << "MENU - mozliwe operacje na roslinozbiorze\n"
<< "d - dodanie roslinki\n"
<< "s - wyszukanie roslinki\n"
<< "w - wypisanie wszystkich roslinek\n"
<< "u - usuniecie roslinki\n"
<< "ESC - koniec programu\n";
while (cin >> instrukcja)
{
switch (instrukcja)
{
case 'd':
dodaj_roslinke(&korzen);
break;
case 's':
cout << "Podaj specjalnosc: ";
cin >> specjalnosc;
wyszukaj_roslinke(korzen, Roslinka);
break;
case 'w':
wypisz_roslinozbior(korzen);
break;
case 'u':
cout << "Podaj specjalnosc: ";
cin >> specjalnosc;
if (!usun_roslinke(&korzen, specjalnosc))
cout << "Nie odnaleziono roslinki z podana specjalnoscia." << endl;
else
cout << "Roslinka z podana specjalnoscia zostala usunieta." << endl;
break;
default:
cout << "Musisz wybrac jedna z opcji: d - dodawanie, s - wyszukiwanie, w - wypisanie zawartosci lub u - usuwanie\n";
break;
}
}
return 0;
}
Kompilując go... pokazuje błąd expected primary-expression before ')' token. Wyskakuje on przy linijce:
wyszukaj_roslinke(korzen, Roslinka);