Witam,
potrzebuję pomocy! Wiem, że niedawno był temat o strukturach, ale tam chodziło o sortowanie liczb, ja mam problem z nazwami.
Ideą programu jest stworzenie bazy piw, do której można dodawać, usuwać poszczególne piwa, (program powinien też obliczać cenę za mililitr czystego alkoholu, ale póki co to pominęłam). Problem w tym, że kiedy chcę, żeby sortował to przestaje działać, a przy opcji usuwania w ogóle nie znajduje nazwy piwa, więc myślę, że to przez błędne użycie funkcji strcmp. niestety, nie potrafię sobie z tym poradzić, możecie pomóc?
oto kod
#include <iostream>
#include <iomanip>
const int piw = 20;
struct browar
{
char etykieta[20];
float cena;
float procenty;
int obj;
float CJMCA;
};
using namespace std;
int main (void)
{
int indeks, id, wybor;
char nazwa[20];
browar baza[piw];
while (wybor!=4)
{
cout<<"Co chcesz zrobic?"<<endl;
cout<<"1. Dodaj piwo do bazy"<<endl;
cout<<"2. Usun piwo z bazy"<<endl;
cout<<"3. Pokaz posortowane"<<endl;
cout<<"4. Zakoncz"<<endl;
cin>>wybor;
cout<<"Wybrales "<<wybor<<endl;
int i=1; // ilość wprowadzonych elementów
switch (wybor)
{
case 1:
cout<<"Podaj nazwe: ";
cin>>baza[i].etykieta;
cout<<"Podaj cene: ";
cin>>baza[i].cena;
cout<<"Podaj procentowa zawartosc alkoholu: ";
cin>>baza[i].procenty;
cout<<"Podaj objetosc w ml: ";
cin>>baza[i].obj;
//teraz powinno sie obliczać i wyświetlać CJMCA
i=i++;
break;
case 2:
if (i!=1)
{
cout<<"Podaj nazwe kasowanego piwa: "<<endl;
cin>>nazwa;
for (int g=0; g<i; g++)
if( strcmp( baza[g].etykieta,nazwa ) == 0 ) id=g;
else {
id=-1;
indeks=g;
}
if (id ==-1)
{
for (int h=indeks; h<i-1; h++)
{
baza[indeks] = baza[indeks+1];
i--;
}
}
else
cout<<"Nie znaleziono piwa o tej nazwie"<<endl;
}
else
cout<<"Brak piw w bazie"<<endl;
break;
case 3:
int ile_nazw, zmiana;
browar buf;
do
{
zmiana=0;
ile_nazw=i-1;
do
{
ile_nazw--;
if (strcmp(baza[ile_nazw].etykieta,baza[ile_nazw+1].etykieta) >0)
{
buf = baza[ile_nazw+1];
baza[ile_nazw+1] = baza[ile_nazw];
baza[ile_nazw] = buf;
zmiana=1;
}
}
while (ile_nazw!=0);
}
while (zmiana!=0);
for (int t=0; t<i; t++)
{
cout<<baza[t].etykieta<<"\t"<<baza[t].cena<<"\t"<<baza[t].procenty<<"\t"<<baza[t].obj<<endl;
}
break;
case 4:
system ("pause");
return 0;
break;
}
}
system ("pause");
return 0;
}
z góry dziękuję :)