| | |
| Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Autor | Správa |
---|
Registrovaný: 25.11.07 Prihlásený: 02.07.21 Príspevky: 101 Témy: 21 Bydlisko: Bratislava |
Prosím pekne o jednu radu, som totally beginner a dostal som za úlohu vytvoriť triedu a v nej nejaké objekty + konštruktor a deštruktor. Ale mám jeden problém, ktorý sa viacerým bude zdať primitívny, ale ja sa s tým už trápim 4 hodiny a nedokážem to vyriešiť.
Potrebujem uložiť 5 reťazcov, tak aby som k nim mohol pristupovať tým spôsobom, že
Kód: premenna[0] = "1. reťazec" premenna[1] = "2. reťazec" premenna[2] = "3. reťazec" premenna[3] = "4. reťazec" premenna[4] = "5. reťazec" respektive: Kód: a=1 premenna[a] = "2. reťazec" Pomocou string to síce ide, ale pri kompilovaní vypisuje varovanie a stáva sa, že program po spustení spadne. Takže to nepripadá v úvahu. Skúšal som to pomocou struct: Kód: #include <iostream> #include <string> #include <stdlib.h>
using namespace std; typedef unsigned short int USI;
struct Osoby_template { string MenoOsoby; };
. . .
int main() { Osoby_template Osoby[5]; Osoby[1].MenoOsoby = "Dezko";.............. No a tu je pes zakopaný, aj napriek tomu, že premenná Osoby by mala byť globálna, nefunguje vo funkcii, ktorá je volaná z inej funkcie, ktorá je volaná z int Main(), v tej funkcii vypisuje, že tam nie je definovaná. Ja už vôbec netuším, ako to mám riešiť - som v koncoch. Radšej sem dám celý ten kód: (prosím, nesmejte sa mi, ja viem, že sa to dá napísať aj 50x lepšie, ale som nováčik, je to môj prvý program v C++) Kód: #include <iostream> #include <string> #include <stdlib.h>
using namespace std; typedef unsigned short int USI;
struct Osoby_template { string MenoOsoby; };
/*struct template_Ludia Osoby[]= { {"Dezko"}, {"Janko"}, {"Jozko"}, {"Mirko"}, {"Petko"} };*/
//enum Osoby{Dezko=1,Janko,Jozko,Mirko,Petko}; USI gVek, gVyska, gVaha;
class Osoba { public: Osoba(); Osoba(USI defaultVek, USI defaultVyska, USI defaultVaha); ~Osoba(); USI getVek(); void setVek(USI v_Vek); USI getVyska(); void setVyska(USI v_Vyska); USI getVaha(); void setVaha(USI v_Vaha);
private: USI v_Vek; USI v_Vyska; USI v_Vaha;
};
//Zadefinovanie funkcii USI Osoba::getVek() { return v_Vek; }
void Osoba::setVek(USI Vek) { v_Vek = Vek; return; }
USI Osoba::getVyska() { return v_Vyska; }
void Osoba::setVyska(USI Vyska) { v_Vyska = Vyska; return; }
USI Osoba::getVaha() { return v_Vaha; }
void Osoba::setVaha(USI Vaha) { v_Vaha = Vaha; return; }
//Zadefinovanie konstruktorov a destruktora Osoba::Osoba() { }
Osoba::Osoba(USI defaultVek, USI defaultVyska, USI defaultVaha) { v_Vek = defaultVek; v_Vyska = defaultVyska; v_Vaha = defaultVaha; cout << "Pouzity konstruktor."; }
Osoba::~Osoba() { }
//Zadefinovanie funkcii potrebnych pre vykonanie hlavneho programu void fVypisMenu(USI ktore) { system("echo off | cls"); switch (ktore) { case 1: cout << "Hlavne menu:\n\n1. Pridaj polozku\n2. Zobraz uplny zoznam\n3. Zmaz cely zoznam\n\n0 - Koniec\n\nZadaj 0-3: "; break; case 2: cout << "Vytvor objekt:\n\n1. Dezko\n2. Janko\n3. Jozko\n4. Mirko\n5. Petko\n\n0. Koniec.\n\nZadaj 0-5: "; break; default: cout << "FATAL ERROR!!! Take menu neexistuje!"; } return; }
USI fSelectMenu(USI to, USI ktoreMenu) { USI SelectMenu = 255; do { fVypisMenu(ktoreMenu); cin >> SelectMenu; } while (SelectMenu > to); return SelectMenu; }
USI fVypytajUdaje(USI ktoraOsoba) { cout << "\nZadaj vek osoby " << Osoby[ktoraOsoba] << ": "; cin >> gVek; cout << "\nZadaj vysku osoby " << Osoby[ktoraOsoba] << ": "; cin >> gVyska; cout << "\nZadaj vahu osoby " << Osoby[ktoraOsoba] << ": "; cin >> gVaha; return 0; }
USI fPridajPolozku(USI ktoryObjekt) { switch (ktoryObjekt) { case 1: fVypytajUdaje(ktoryObjekt); Osoba Dezko(gVek, gVyska, gVaha); } return 0; }
int main() { Osoby_template Osoby[5]; Osoby[1].MenoOsoby = "Dezko"; USI PolozkaMenu = fSelectMenu(3, 1); //3 - polozky menu do 3 vratane, 1 - ktore menu
switch (PolozkaMenu) { case 1: PolozkaMenu = fSelectMenu(5, 2); //3 - polozky menu do 5 vratane, 2 - ktore menu fPridajPolozku(PolozkaMenu); system("pause >nul"); break;
/*case 2: break;
case 3: break; */ case 0: break; }
return 0; }
Nefunguje to vo funkcii USI fVypytajUdaje(USI ktoraOsoba)
Za odpoveď vopred ďakujem.
P.S.: A ešte sem dám zadanie úlohy, ktorú som asi nepochopil
Deklarujte triedu s názvom Osoba, ktorá má nasledovné súkromné členské premenné: vek, výška, hmotnosť. Zvoľte vhodný dátový typ pre členské premenné. Môžete pridať aj ďalšie. Definujte verejné prístupové funkcie pre čítanie a zápis týchto údajov. Trieda bude obsahovať štandardný konštruktor a vlastný konštruktor s parametrami. Definujte aspoň jednu ďalšiu členskú funkciu. Triedu použite v programe, ktorý umožní spracovať krátky zoznam objektov tejto triedy (pole pevnej veľkosti, alebo zoznam typu vector, príp. iné). Program bude vykonávať funkcie ako: pridať záznam, zobraziť všetky záznamy, zmazať všetky záznamy, koniec programu, a to prostredníctvom opakovane zobrazovaného textového menu. So zoznamom sa bude dať pracovať počas behu programu. Voliteľným rozšírením je uloženie zoznamu do súboru a jeho načítanie zo súboru.
|
|
Registrovaný: 27.12.08 Prihlásený: 13.12.22 Príspevky: 1874 Témy: 96 Bydlisko: Bratislava,... | Napísal nBXXL: 23.05.2011 12:58 | |
|
Len tak zbežne pozerám, nie je náhodou problém v riadkoch tohoto typu? :
Kód: cout << "\nZadaj vek osoby " << Osoby[ktoraOsoba] << ": "; keď to teraz máš takto cez structy, tak by tam malo byť Kód: cout << "\nZadaj vek osoby " << Osoby[ktoraOsoba].MenoOsoby << ": "; inak ten prvy kod u mna zbehne v pohode, ked to nahodou nefunguje, mozes to skusit cez typedef (C style) (namiesto toho tvojho structu napises: Kód: typedef struct { string MenoOsoby; } Osoby_template; A ide mi to aj cez stringy : Kód: string Osoby[5];
int main() { Osoby[1] = "Dezko"; cout << Osoby[1]; return 0; } takže ten warning bude asi dakde inde... no takto neviem povedať kde..
_________________ ~Listen to your brain, not your heart~ NB1: Lenovo Y500: CPU: Intel Core i7-3630QM; GPU: nVidia GT650M 2GB SLi; RAM: 16GB DDR3; HDD: 1TB + 256GB SSD (m4); LCD: 15,6" 1920x1080; OS: Win8.1 64-bit + Arch Linux 64-bit (UEFI Powered DualBoot) NB2: Asus K53SJ-SX093: CPU: Intel Core i3-2310M; GPU: Intel HD3000 / nVidia GT520M 1GB Optimus; RAM: 8GB DDR3; SSD: 128GB 840Evo; LCD: 15,6" 1366x768; OS: Win 8.1 Pro 64-bit (UEFI) |
|
| Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Ako vytvoriť diskové pole??? v Pevné disky a radiče | 5 | 761 | 24.02.2007 11:31 spipo | | C# pole matíc v Assembler, C, C++, Pascal, Java | 1 | 346 | 11.07.2010 11:37 dEVIANT | | C++ pole unikátnych hodnôt v Assembler, C, C++, Pascal, Java | 4 | 387 | 24.10.2014 13:42 marian_r | | Dynamicke pole v Triede C++ v Assembler, C, C++, Pascal, Java | 1 | 2006 | 19.11.2008 14:51 Dark_Raven | | Dynamicky alokovane 2D pole C v Assembler, C, C++, Pascal, Java | 2 | 345 | 11.11.2013 13:32 Marcello123 | | 2 rozmerne pole v C-cku v Assembler, C, C++, Pascal, Java | 4 | 1340 | 22.12.2010 21:33 the_pivo | | Jazyk C - Oddeleny preklad - pole struktur v Assembler, C, C++, Pascal, Java | 1 | 1446 | 28.05.2010 22:18 chrono | | [C] pointer na pole vo vedlajsej funkcii v Assembler, C, C++, Pascal, Java | 25 | 884 | 14.11.2016 12:41 Miso122 | | prepared statements - ako pripojit pole parametrov ? v PHP, ASP | 0 | 257 | 16.02.2013 20:54 1daemon1 | | ako uchovat pole POST v pamati? v PHP, ASP | 2 | 580 | 02.05.2007 17:14 p360t | | Ako vytvoriť GameHosting ? v Webhosting a servery | 5 | 705 | 02.02.2015 16:13 killer | | Ako vytvoriť cloud ? v Webhosting a servery | 3 | 1056 | 08.09.2016 7:04 JanoF | | ako vytvorit highlightsBox ? v Ostatné | 3 | 678 | 07.01.2011 1:23 shaggy | | ako vytvorit galeriu v PHP, ASP | 16 | 2313 | 21.01.2008 17:50 emer | | ako vytvorit test? v HTML, XHTML, XML, CSS | 1 | 930 | 10.03.2010 15:32 stenley | | Ako vytvoriť hosting? v Webhosting a servery | 1 | 598 | 26.09.2015 14:13 walther |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|