Geek tričko zdarma Python týden
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Pouze tento sleva až 80% na kurzy Python
Avatar
Nela Ondráčková:14.6.2018 10:41

#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;
}

Zkusil jsem: Ahoj :)

může mi prosím někdo poradit,kde je chyba? Jakmile zadám odpověď "ano", nebo jakoukoli delší, než jedno písmeno, skočí mi to rovnou na věk (asi se do jména přiřadí zbylá písmena "no") a ani string mi nepomohl (změna "char jmeno" na "string jmeno").

Chci docílit: Původně jsem chtěla ten program vytvořit tak, aby se po zadání prvního uživatele zeptal, zda chci zadat dalšího a pokračoval tak dál, ale obě varianty mi končí na druhém uživateli a na dalšího se nedostanu.

Díky :)

 
Odpovědět 14.6.2018 10:41
Avatar
Erik Šťastný:14.6.2018 10:53

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;
}
Editováno 14.6.2018 10:54
 
Nahoru Odpovědět 14.6.2018 10:53
Avatar
Odpovídá na Erik Šťastný
Erik Šťastný:14.6.2018 10:59

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

 
Nahoru Odpovědět 14.6.2018 10:59
Avatar
Nela Ondráčková:14.6.2018 11:13

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.

 
Nahoru Odpovědět 14.6.2018 11:13
Avatar
Odpovídá na Nela Ondráčková
Erik Šťastný:14.6.2018 11:20

Já nic neupravil, poukázal jsem na fakt, že vkládej kód jako kód aby se v tom dalo vyznat :)

 
Nahoru Odpovědět 14.6.2018 11:20
Avatar
Nela Ondráčková:14.6.2018 11:21

Ano, to mi došlo :) já chtěla poradit s tou chybou. Jak ji opravit? Nevím, proč mě to nepustí dál.

 
Nahoru Odpovědět 14.6.2018 11:21
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Nela Ondráčková
patrik.valkovic:14.6.2018 11:46

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ý.

Nahoru Odpovědět  +1 14.6.2018 11:46
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Nela Ondráčková
Erik Šťastný:14.6.2018 11:49

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 :)

Editováno 14.6.2018 11:50
 
Nahoru Odpovědět 14.6.2018 11:49
Avatar
Nela Ondráčková:14.6.2018 22:34

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[ma­ximum];
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(za­mestnanec[c].jme­no, 50);
cout << "2. Vek: ";
cin >> zamestnanec[c].vek;
cout << "3. Druh prace: ";
cin.get();
cin.getline(za­mestnanec[c].po­zice, 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;
}

 
Nahoru Odpovědět 14.6.2018 22:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.