Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 2 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.11.07
Prihlásený: 02.07.21
Príspevky: 101
Témy: 21
Bydlisko: Bratislava
Príspevok NapísalOffline : 23.05.2011 1:13

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.


Offline

Užívateľ
Užívateľ
Ako vytvoriť pole reťazcov v C++?

Registrovaný: 27.12.08
Prihlásený: 13.12.22
Príspevky: 1874
Témy: 96
Bydlisko: Bratislava,...
Príspevok NapísalOffline : 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)
Odpovedať na tému [ Príspevkov: 2 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Ako vytvoriť diskové pole???

v Pevné disky a radiče

5

761

24.02.2007 11:31

spipo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C# pole matíc

v Assembler, C, C++, Pascal, Java

1

346

11.07.2010 11:37

dEVIANT Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ pole unikátnych hodnôt

v Assembler, C, C++, Pascal, Java

4

387

24.10.2014 13:42

marian_r Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Dynamicke pole v Triede C++

v Assembler, C, C++, Pascal, Java

1

2006

19.11.2008 14:51

Dark_Raven Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Dynamicky alokovane 2D pole C

v Assembler, C, C++, Pascal, Java

2

345

11.11.2013 13:32

Marcello123 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. 2 rozmerne pole v C-cku

v Assembler, C, C++, Pascal, Java

4

1340

22.12.2010 21:33

the_pivo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Jazyk C - Oddeleny preklad - pole struktur

v Assembler, C, C++, Pascal, Java

1

1446

28.05.2010 22:18

chrono Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [C] pointer na pole vo vedlajsej funkcii

v Assembler, C, C++, Pascal, Java

25

884

14.11.2016 12:41

Miso122 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. prepared statements - ako pripojit pole parametrov ?

v PHP, ASP

0

257

16.02.2013 20:54

1daemon1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako uchovat pole POST v pamati?

v PHP, ASP

2

580

02.05.2007 17:14

p360t Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako vytvoriť GameHosting ?

v Webhosting a servery

5

705

02.02.2015 16:13

killer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako vytvoriť cloud ?

v Webhosting a servery

3

1056

08.09.2016 7:04

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako vytvorit highlightsBox ?

v Ostatné

3

678

07.01.2011 1:23

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako vytvorit galeriu

v PHP, ASP

16

2313

21.01.2008 17:50

emer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako vytvorit test?

v HTML, XHTML, XML, CSS

1

930

10.03.2010 15:32

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ako vytvoriť hosting?

v Webhosting a servery

1

598

26.09.2015 14:13

walther Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra