Když to chci rozchodit píše mi to: no match for 'operator[]' in 'zamest' fakt už nevím co s tím.Budu moc vděčný za radu.
# include <iostream> //pokud to nekdo rozjedete nedivte se je to jeste neohrabane
using namespace std;
struct firma
{
char jmeno[35];
int vek;
char prace[100];
}zamest;
int main()
{
char odp;
int x,b=0; //pocet zamestnancu
cout<<"\n\n Vytejte u databaze zamestnancu.\n"<<" Prejete si vytvorit seznam?(a/n)";
cin>>odp;
if(odp=='n') //odpoved ne
{
cout<<"tak to je vam tento program k nicemu";
cin.get();
cin.get();
}
else //odpoved ano
{
cout<<"\n Zadejte pocet zamestnancu: ";
cin>>x;
cin.get();
if(x>32000) // vic jak 32000 zamest.
{
cout<<"tolik zamstnancu urcite nemate:-D zadejte max 32000\n";
cout<<"\n Zadejte pocet zamestnancu: ";
cin>>x;
cin.get();
}
else // zacatek vyplnovani
{
firma zamest[x];
do
{
cout<<"\n Zadejte prosim jmeno "<< b+1<<". zamestnance ___________________________________\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
cin.getline(zamest.jmeno, 35);
cout<<" Jeho vek:___\b\b\b ";
cin>>zamest.vek;
cin.get();
cout<<" Jeho praci: ____________________________________________________________\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ";
cin.getline(zamest.prace,100);
b++;
}while(b!=x);
}
}
for(b=0;b<x;b++) //vypis
{
cout<<"_________________________________________________________________________";
cout<<" Zamestnanec c."<<b+1;
cout<<" "<<zamest.jmeno<<"\n VEK: "<<zamest.vek<<"\n PRACE: "<<zamest.prace;
}
cin.get();
cin.get();
return 0;
}
Fórum › C / C++
Poradí mi někdo?
Pole struktur - Je možné vytvořit i pole, jehož prvky jsou struktury:
rostliny vnitrni[100]; // pole o 100 strukturách rostliny
vnitrni[0].cena; // pouzije promennou cena ze struktury vnitrni[0]
Nechci ti víc radit, aby sis na zbytek přišel sám a hlavně to pořád zkoušel. Jinak tento kód je zkopírovanej ze článku od Cura.
To morpheus : měl sem to tam,ale tady mi to nějak ten text ignorovalo.
Ale aj tak mi to píše: no match for 'operator[]' in 'zamest [ b ]' \\když tam dám mezery tak se to b zobrazí
for(b=0;b<x;b++) //vypis
{
cout<<"_________________________________________________________________________";
cout<<" Zamestnanec c."<<b+1;
cout<<" "<<zamest[ b ].jmeno<<"\n VEK: "<<zamest[ b ].vek<<"\n PRACE: "<<zamest[ b ].prace;
}
Tak už vím :D Měl jsi tam dvě chyby: První byla, že celý výpis zaměstnanců byl mimo druhou podmínku else, a tak definovaná struktura byla jen pro tuto podmínku. Ta druhá chyba byla v cyklu for, kde jsi před výpisem jakéhokoliv zaměstnance zvětšoval proměnnou b o jedničku.
Ten cyklus for byl měl být takto (kvůli tučnýmu textu jsem přejmenoval tu promměnou b):
for(int a = p = 0; p<x; p++) //vypis
{
cout<<"_________________________________________________________________________";
cout<<" Zamestnanec c."<<++p;
cout<<" "<<zamest[a].jmeno<<"\n VEK: "<<zamest[a].vek<<"\n PRACE: "<<zamest[a].prace;
}
A jinak celý opravený kód je tady:
# include <iostream> //pokud to nekdo rozjedete nedivte se je to jeste neohrabane
using namespace std;
struct firma
{
char jmeno[35];
int vek;
char prace[100];
}zamest;
int main()
{
char odp;
int x,p=0; //pocet zamestnancu
cout<<"\n\n Vytejte u databaze zamestnancu.\n"<<" Prejete si vytvorit seznam?(a/n)";
cin>>odp;
if(odp=='n') //odpoved ne
{
cout<<"tak to je vam tento program k nicemu";
cin.get();
cin.get();
}
else //odpoved ano
{
cout<<"\n Zadejte pocet zamestnancu: ";
cin>>x;
cin.get();
if(x>32000) // vic jak 32000 zamest.
{
cout<<"tolik zamstnancu urcite nemate:-D zadejte max 32000\n";
cout<<"\n Zadejte pocet zamestnancu: ";
cin>>x;
cin.get();
}
else // zacatek vyplnovani
{
firma zamest[x];
do
{
cout<<"\n Zadejte prosim jmeno "<< p+1<<". zamestnance ___________________________________\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
cin.getline(zamest[p].jmeno, 35);
cout<<" Jeho vek:___\b\b\b ";
cin>>zamest[p].vek;
cin.get();
cout<<" Jeho praci: ____________________________________________________________\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ";
cin.getline(zamest[p].prace,100);
p++;
}while(p!=x);
for(int a = p = 0; p<x; p++) //vypis
{
cout<<"_________________________________________________________________________";
cout<<" Zamestnanec c."<<++a;
cout<<" "<<zamest[p].jmeno<<"\n VEK: "<<zamest[p].vek<<"\n PRACE: "<<zamest[p].prace;
}
}
}
cin.get();
cin.get();
return 0;
}
to ma byt nejaky ukol nebo jedes dle tutorialu? Chtelo by to jeste dost vylepsit :)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Poradí někdo ;) — založil ajva
Jenoduché macro, ale nefunguje mi. Poradí někdo? — založil end
Pořadí vrstev — založil Roman
Prohození pořadí — založil Ondra_AS
Prohozeni poradi — založil Joeyz
Moderátoři diskuze