Diskuze: C++ Program - Zadávání uživatelů
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Používej tohle:
#include < iostream > #include < cstring >
using namespace std;
struct podnik {
char jmeno[50];
int vek;
char pozice[50];
};
int main() {
int maximum;
char ano_ne;
cout << "Dobry den, vitejte v programu C++\n\nZadejte prosim pocet zamestnancu: ";
cin >> maximum;
podnik zamestnanec[ma ximum];
for (int c = 0; c < maximum; c++) {
cout << "\nPrejete si zadat noveho zamestnance (A/N)? \n";
cin >> ano_ne;
if (ano_ne == 'A' || ano_ne == 'a' || ano_ne == 'Ano' || a no_ne == 'ANO' || a no_ne == 'ano') {
cout << "\nZadejte jmeno, vek a druh prace " << c + 1 << ". zamestnance:\n";
cout << "1. Jmeno: ";
cin.get();
cin.getline(za mestnanec[c].jme no, 50);
cout << "2. Vek: ";
cin >> zamestna nec[c].vek;
cout << "3. Druh prace: ";
cin.get();
cin.getline(za mestnanec[c].po zice, 50);
} else if (maximum == c)
cout << "Zadal jste uvedeny pocet uzivatelu, ktere jste definoval na zacatku.";
else if (ano_ne == 'n' || ano_ne == 'N' || ano_ne == 'Ne' || ano_ne == 'NE')
cout << "Jiz nechcete zadat dalsiho uzivatele. Vyckejte, nez se nacte tabulka s vypsanymi udaji o zamestnancich";
maximum = c + 1;
}
for (int e = 0; e < maximum; e++) {
cout << "\n_______________________________________________________________________\n";
cout << zamestna nec[e].jmeno << "\n" << za mestnanec[e].vek << "\n" << zamestnanec[e].pozice << "\n";
}
cin.get();
cin.get();
return 0;
}
Bože, tohle mi už fakt vadí...
"Byl překročen časový limit na editaci zprávy nebo na ni nemáš
oprávnění."
pardon za SPAM
Děkuju za radu, ale stále háže mi to chybu po zadání prvního uživatele se
program ukončí, i když chci zadat např. 12 a odpověď na otázku musí být
jen "a", při napsání "ano" mě to hodí rovnou na "vek" druhého
uživatele.
Já nic neupravil, poukázal jsem na fakt, že vkládej kód jako kód aby se
v tom dalo vyznat
Ano, to mi došlo já
chtěla poradit s tou chybou. Jak ji opravit? Nevím, proč mě to nepustí
dál.
char reprezentuje pouze jeden znak. Tudíž do něj nemůžeš uložit "Ano"
nebo "Ne", protože to jsou 3 resp. 2 znaky. Pro to potřebuješ string.
Také zápis podnik zamestnanec[maximum];
je z hlediska C++
neplatný.
Já bych začal jiným problémem, zkopíroval jsem si kód a chtěl na to mrknout. Nicméně hnedka pátý řádek v metodě main.
error C2131: expression did not evaluate to a constant
Nemůžeš inicializovat velikost pole nekonstatní hodnotou při compile timu.
EDIT: Jo už mě někdo předběhl
Díky za rady. Už jsem to znovu opravila a tentokrát mi vše funguje. "string" mi minule nefungoval kvůli špatné definici.
#include <iostream>
#include <cstring>
using namespace std;
struct podnik {
char jmeno[50];
int vek;
char pozice[50];
};
int main() {
int maximum;
string ano_ne = "ano";
cout << "Dobry den, vitejte v programu C++\n\nZadejte prosim pocet
zamestnancu: ";
cin >> maximum;
podnik zamestnanec[maximum];
for (int c = 0; c < maximum; c++) {
if (ano_ne == "A" || ano_ne == "a" || ano_ne == "Ano" || ano_ne == "ANO" ||
ano_ne == "ano") {
cout << "\nZadejte jmeno, vek a druh prace " << c + 1 << ".
zamestnance:\n";
cout << "1. Jmeno: ";
cin.get();
cin.getline(zamestnanec[c].jmeno, 50);
cout << "2. Vek: ";
cin >> zamestnanec[c].vek;
cout << "3. Druh prace: ";
cin.get();
cin.getline(zamestnanec[c].pozice, 50);
cout << "\nPrejete si zadat dalsiho zamestnance (A/N)? \n";
cin >> ano_ne;
} else if (maximum == c)
cout << "Zadal jste uvedeny pocet uzivatelu, ktere jste definoval na
zacatku.";
else if (ano_ne == "n" || ano_ne == "N" || ano_ne == "Ne" || ano_ne == "NE" ||
ano_ne == "ne")
{
cout << "Jiz nechcete zadat dalsiho uzivatele. Vyckejte, nez se nacte
tabulka s vypsanymi udaji o zamestnancich";
maximum = c;
}
}
cout << maximum << endl;
for (int e = 0; e < maximum; e++) {
cout <<
"\n_______________________________________________________________________\n";
cout << zamestnanec[e].jmeno << "\n" << zamestnanec[e].vek
<< "\n" << zamestnanec[e].pozice << "\n";
}
cin.get();
cin.get();
return 0;
}
Zobrazeno 9 zpráv z 9.