Ukol5.lekce – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ukol5.lekce – C / C++ – Fórum – Programujte.comUkol5.lekce – C / C++ – Fórum – Programujte.com

 

Jirka Bedn0
Newbie
23. 2. 2006   #1
-
0
-

Tak delam paty ukol lekce C++ a mam to skoro hotove, muchy vychytane, ale mam jeden docela vazny problem.
Vsechno ?lape jak ma, ale kdyz treba zalozim 3zamestnance a vsechny je vyplnim tak pri zadavani prace tretiho a odentrovani mi to nic nevypise, jen konecny text (zkousku).Kdyz ale zalozim 3 lidi a vyplnim treba jen 2 vse je OK.
Netusim cim to je, jakoby nechctela projit bud

else if (vytvoreno_lidi != 0)

nebo
while (vypsano_zamestnancu <= vytvoreno_lidi)

jen?e oba tryto cykly jsou v naprostem poradku a o tom svedci i zkouska dole.
Nevim si rady, pls pomozte.
P.S.A taky proc musim mit
cin.getline(clovek[vytvoreno_lidi].prace, 32);

dvakrat aby to ?lapalo? (jak u prace tak u jmeno)


CELY PROGRAMEK :
#include <iostream>

using namespace std;

// deklarace struktury
struct lide
{
char jmeno[32];
int vek;
char prace[32];
};
// konec deklarace struktury

int main()
{
// --- zacatek zakladani promenych CHAR a INT ---
int pocet_lidi;
int vytvoreni=0;
char firma[50];
int vypsano_zamestnancu=1;
int vytvoreno_lidi=0;
int odpoved;
// --- konec zadavani promenych ---

// ****** zacatek uvodnich kecu ******
cout << "**************************************** n";
cout << "*--------------------------------------* n";
cout << "*--- Vitam Vas ve fiktivnim podniku ---* n";
cout << "*--------------------------------------* n";
cout << "**************************************** nn";
cout << "-- prosim, abyste vsechny udaje zadavane do tohoto programu psali bez hacku a carek, ";
cout << "jinak se program vypne, dekuji za pochopeni -- nn";
cout << "Jak se Vase firma jmenuje? ";
cin.get(firma, 50);
cout << "Kolik si prejete mit ve vasi firme " << firma << " zamestnancu ? (maximalne 32 000 a nesmi to byt nula) ";
cin >> pocet_lidi;

// osetreni max.poctu zamestnancu a nuly
while (pocet_lidi>32000 || pocet_lidi==0) {
cout << "Opakuji, zamestnancu muze byt maximalne 32 000 a nemuze jich byt nula, kolik si jich prejete vytvorit?";
cin >> pocet_lidi;
}
lide clovek[pocet_lidi]; // zakladani pole struktur o velikosti POCET_LIDI

// souhlasi-li podminky, pta se na 1 nebo 2
while (vytvoreno_lidi < pocet_lidi) {
cout << "Dalsiho zamestnance?pro ano 1, pro ne 2";
cin >> odpoved;
while (odpoved !=1 && odpoved !=2){
cout << "Musite zadat bud 1 nebo 2, zadejte znovu ";
cin >> odpoved;
}

// ** zapisovani a vypis zamestancu **
if (odpoved == 1) {
vytvoreno_lidi++;
cout << "---- zapisovani dalsiho zamestance ----n";
// ----- zadavani informaci o zamestnanci -----
cout << "Napis jmeno " << vytvoreno_lidi << ". zamestnance : ";
cin.getline(clovek[vytvoreno_lidi].jmeno, 32);
cin.getline(clovek[vytvoreno_lidi].jmeno, 32);
cout << "Napis vek " << vytvoreno_lidi <<". zamestnance : ";
cin >> clovek[vytvoreno_lidi].vek;
cout << "Napis praci " << vytvoreno_lidi << ". zamestnance : ";
cin.getline(clovek[vytvoreno_lidi].prace, 32);
cin.getline(clovek[vytvoreno_lidi].prace, 32);
}
// ----- konec zadavani informaci o zamestnanci -----

// ----- vypis zamestnancu ------ (pokud vytvoreno_lidi neni nula)
else if (vytvoreno_lidi != 0) {
cout << "n----------- vypis zamestancu -----------n";
while (vypsano_zamestnancu <= vytvoreno_lidi) {
cout << "TOTO JE ZAMESTNANEC CISLO " << vypsano_zamestnancu << "n";
cout << "Jmeno : " << vypsano_zamestnancu << ". zamestnance je " << clovek[vypsano_zamestnancu].jmeno << "n";
cout << "Vek " << vypsano_zamestnancu << ". zamestnance je " << clovek[vypsano_zamestnancu].vek << "n";
cout << "Prace " << vypsano_zamestnancu << ". zamestnance je " << clovek[vypsano_zamestnancu].prace << "n";
cout << "n n";
vypsano_zamestnancu++;
}
cin.get();
cin.get();
return 0;
}
// ----- konec - vypis zamestnancu ------
// ** konec zapisovani a vypis zamestancu **

// pokud je vytvoreno_lidi nula => konec
else {
cout << "Nevytvoril jste zadneho zamestnance, takze :(";
cin.get();
cin.get();
return 0;
}
} // konec IF na 54 ??dku

cout << "TOTO JE ZKOUSKA, proc mi to furt nejde :(";
cout << vypsano_zamestnancu << "vypsano" << "______" << vytvoreno_lidi << "vytvoreno";
cout << "nkonecccccccc";
cin.get();
cin.get();
return 0;

} // konec INT MAIN()


Nahlásit jako SPAM
IP: ...–
Jura_0
Stálý člen
27. 2. 2006   #2
-
0
-

Ja se teda nestoural celym kodem, ale tohle mi bilo do oci:



lide clovek[pocet_lidi];

Takhle to nejde, leda ze byste vytvarel dynamicke pole(to se dela trochu jinak), ale u statickeho pole musi byt delka pole znama, jiz v dobe kompilace. Cili si nadeklarujte nekde treba konstantu:


const int MAX = 32 000
...
lide clovek[MAX];

Takhle by to mohlo a melo fungovat - to se tyce pouze toho pole, jinak v tom ostatnim jsem se opravdu nemel naladu stourat...

Nahlásit jako SPAM
IP: ...–
Peter D.0
Expert
28. 2. 2006   #3
-
0
-

Ako sa robi dynamicke pole. Myslis pomocou new ? alebo nieco co este neviem :pc:

Nahlásit jako SPAM
IP: ...–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
Jura_0
Stálý člen
28. 2. 2006   #4
-
0
-

mephi napsal:

Ako sa robi dynamicke pole. Myslis pomocou new ? alebo nieco co este neviem :pc:


Jj, presne to jsem mel na mysli, nebo pouzit klasicky ceckovsky malloc(calloc). Jinak, ale nejcaste stejne pouzivam a davam prednost vectoru z STL...

Nahlásit jako SPAM
IP: ...–
viktor0
Duch
15. 3. 2006   #5
-
0
-

jistej si nejsem ale myslim ?e to je tim ?e kdy? u? zad?? plnej po?et zam?stnanc? tak se to do ty funkce if u? vůbec nedostane, j? to vy?e?il tak ?e celou tu funkci while ktera vypisuje ty zamestnance sem zkopiroval jeste jednou a? n?kam na konec (chv?li sem se v tom p?edtim hrabal tak?e jistej si nejsem) ur?it? to pude jednodu?ejc nebo krat?? ale to u? bych musel p?emej?let tak?e nic :)

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 80 hostů

Podobná vlákna

5. lekce — založil inocencz

1.lekce — založil Jan Burant

If else - lekce 3 — založil Ymemgirei

2. lekce — založil Michal

9.lekce — založil P1trs

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý