[ 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 | 21
Bydlisko: Bratislava
NapísalOffline : 23.05.2011 1:13 | Ako vytvoriť pole reťazcov v C++?

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 | 96
Bydlisko: Bratislava,...
NapísalOffline : 23.05.2011 12:58 | Ako vytvoriť pole reťazcov v C++?

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)
 [ Príspevkov: 2 ] 


Ako vytvoriť pole reťazcov v C++?



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

788

24.02.2007 11:31

spipo

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

C# pole matíc

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

1

368

11.07.2010 11:37

dEVIANT

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

423

24.10.2014 13:42

marian_r

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

Dynamicke pole v Triede C++

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

1

2045

19.11.2008 14:51

Dark_Raven

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

Dynamicky alokovane 2D pole C

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

2

369

11.11.2013 13:32

Marcello123

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

1488

28.05.2010 22:18

chrono

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

1378

22.12.2010 21:33

the_pivo

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

933

14.11.2016 12:41

Miso122

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

ako uchovat pole POST v pamati?

v PHP, ASP

2

608

02.05.2007 17:14

p360t

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

prepared statements - ako pripojit pole parametrov ?

v PHP, ASP

0

286

16.02.2013 20:54

1daemon1

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

ako vytvorit obrazok

v Grafické programy

1

487

12.01.2024 14:30

Fico

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

Ako vytvoriť hosting?

v Webhosting a servery

1

646

26.09.2015 14:13

walther

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

Ako vytvoriť LiveDVD?

v Operačné systémy Unix a Linux

3

595

21.12.2010 19:18

SNAKE_3

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

Ako vytvoriť animák ?

v Grafické programy

5

728

08.09.2011 18:38

89Aquarius

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

ako vytvorit forum

v Redakčné systémy

11

3590

07.03.2008 19:32

Lokil

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

Ako vytvorit forum?

[ Choď na stránku:Choď na stránku: 1, 2 ]

v Redakčné systémy

56

19911

01.06.2009 20:33

forum



© 2005 - 2024 PCforum, edited by JanoF