Obsah fóra
PravidláRegistrovaťPrihlásenie




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

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

Registrovaný: 20.10.08
Prihlásený: 27.04.12
Príspevky: 25
Témy: 10
Príspevok NapísalOffline : 30.10.2011 12:49

zdravim, citam knihu mistrovstvi c++ a dostal som sa na cvicenie z ktoreho sa neviem dostat dalej.
Konkretne je to cvicenie 1 v lekcii cislo 12. Mam urcenu delkaraciu triedy a mam napisat definicie clenskych funkcii a funkciu main ktora ich vyuzije...

Môj kod je:

Kód:
#include <iostream>
#include <cstring>
using namespace std;

class Cow                                         //delkaracia urcena v knihe
{
private:
   char name[20];
   char * hobby;
   double weight;
public:
   Cow();
   Cow(const char * nm, const char * ho, double wt);
   Cow(const Cow &c);
   ~Cow();
   Cow & operator=(const Cow & c);   
   void ShowCow();
};

Cow::Cow()
{
   strcpy(name, "Nezname");
   hobby = new char[9];
   strcpy(hobby, "Flakanie");
   weight = 0;
}

Cow::Cow(const char *nm, const char *ho, double wt)
{
   strcpy(name, nm);
   hobby = new char[strlen(ho)];
   strcpy(hobby, ho);
   weight = wt;
}

Cow::Cow(const Cow &c)
{
   strcpy(name, c.name);
   hobby = new char[strlen(c.hobby)];
   strcpy(hobby, c.hobby);
   weight = c.weight;
}

Cow & Cow::operator =(const Cow &c)
{
   if(this == &c)
      return *this;
   strcpy(name, c.name);
   delete [] hobby;
   hobby = new char[strlen(c.hobby)];
   strcpy(hobby, c.hobby);
   weight = c.weight;
   return *this;
}

Cow::~Cow()
{
   delete [] hobby;
}

void Cow::ShowCow()
{
   cout << "Meno: " << name << endl;
   cout << "Hobby: " << hobby << endl;
   cout << "Vaha: " << weight << endl;
}

int main()
{
   Cow c1;
   Cow c2("Milka", "Futbal", 600);
   cout << "Vypis c1 a c2\n";
   c1.ShowCow();
   c2.ShowCow();
   cout << "Priradenie c2 do c1:\n";
   c1 = c2;
   cout << "C1 teraz:\n";
   c1.ShowCow();
   Cow c3("Etela", "Hokej", 650);
   Cow c4(c3);
   cout << "C4 inizializovane c3:\n";
   c4.ShowCow();
   cout << "Koniec.\n";
   cin.get();
   cin.get();
   return 0;
}



Ked tento program zkompilujem tak normalne prebehne ako ma ale na konci ked sa rusia objekty tak mi vybehne toto okno: http://imageshack.us/photo/my-images/404/snmkaq.jpg/
Aku tam mam prosim chybu?
Za vsetky odpovede vopred dakujem.


Offline

Skúsený užívateľ
Skúsený užívateľ
problem s ulohou v mistrovstvi c++

Registrovaný: 11.01.09
Prihlásený: 18.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 30.10.2011 14:44

Po rychlom prezreti som si vsimol akurat tuto vec:
Kód:
   hobby = new char[strlen(ho)];
   strcpy(hobby, ho);

Toto urcite nerobi nic dobre, nakolko funkcia strlen vracia pocet znakov retazca bez nuloveho znaku. Cize ak je ho rovne "Futbal", funkcia vrati 6 a premenna hobby teda bude mat alokovanu velkost pre 6 znakov. Nasledne tu pomocou funkcie strcpy skopirujes cely obsah premennej ho (co je 6 znakov + nulovy znak ), cize zapisujes uz za pole.
Neviem, ci toto je dovod tvojej chyby, no rozhodne to treba upravit. Skusal som to skompilovat g++ kompilerom a ani vo wine ani v linuxe mi neukazalo ziadnu chybu. Tak si skus vsade opravit tu alokaciu, ci je prave ta povodcom chyby:
Kód:
   hobby = new char[strlen(ho)+1];    // vsade pridat +1 pre ukoncovaci nulovy znak


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 30.10.2011 17:11

Tiež som to neskúšal, každopádne ak by som sa išiel učiť C++ a v knihe (alebo čo to vlastne číta), by používali C reťazce, tak by som si našiel lepšiu knihu. :)


Offline

Užívateľ
Užívateľ
problem s ulohou v mistrovstvi c++

Registrovaný: 08.03.09
Prihlásený: 06.10.20
Príspevky: 1116
Témy: 88
Bydlisko: 00100100
Príspevok NapísalOffline : 01.11.2011 19:49

ja som ich tiez robil vsetky a tuto mam takto ak ti to pomoze :)
cow.hpp
Kód:
#ifndef COW_HPP_INCLUDED
#define COW_HPP_INCLUDED

class Cow {
    private:
        char name[20];
        char * hobby;
        double weight;

    public:
        Cow();
        Cow(const char * nm, const char * ho, double wt);
        Cow(const Cow & c);
        ~Cow();
        Cow & operator=(const Cow & c);
        void ShowCow() const;
};

#endif // COW_HPP_INCLUDED


cow.cpp
Kód:
#include "cow.hpp"
#include <iostream>
#include <cstring>

Cow::Cow()
{
    strcpy(name,"cow");
    hobby = new char[20];
    strcpy(hobby,"hobby");
    weight = 0;
}

Cow::Cow(const char * nm, const char * ho, double wt)
{
    strcpy(name,nm);
    hobby = new char[strlen(ho)+1];
    strcpy(hobby,ho);
    weight = wt;
}

Cow::Cow(const Cow & c)
{
    strcpy(name,c.name);
    hobby = new char[strlen(c.hobby) + 1];
    strcpy(hobby, c.hobby); // copy string to new location
    weight = c.weight;
}

Cow::~Cow()
{
    delete [] hobby;
}

Cow & Cow::operator=(const Cow & c)
{
    if (this == &c)           // object assigned to itself
        return *this;          // all done
    delete [] hobby;             // free old string
    strcpy(name,c.name);
    weight = c.weight;
    hobby = new char [strlen(c.hobby)+ 1];  // get space for new string
    strcpy(hobby, c.hobby);  // copy the string
    return *this;              // return reference to invoking object
}

void Cow::ShowCow() const
{
    std::cout<<"name: "<<name<<std::endl<<"hobby: "<<hobby<<std::endl<<"weight: "<<weight<<std::endl;
}



main.cpp
Kód:
#include "cow.hpp"

int main()
{
    Cow cow, cow2("reDo","C++",200);
    cow.ShowCow();
    cow2.ShowCow();

    Cow newCow = cow2, newCow2;
    newCow.ShowCow();
    newCow2 = cow2;
    newCow2.ShowCow();

    return 0;
}







_________________
Programming is The Best
Hackers Are Not Crackers!!! Hackers build things, crackers break them!
;-)
Odpovedať na tému [ Príspevkov: 4 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. K: Mistrovstvi v c++

v Kúpim

0

281

19.06.2011 21:24

brky3 Zobrazenie posledných príspevkov

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

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

1

293

23.07.2013 6:31

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. P: Mistrovstvi v C++ 3. vydanie

v Predám

0

348

21.03.2010 9:24

ado21 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. I/P: Mistrovství v C++ 4. aktualizované vydání

v Predám

7

365

26.06.2017 15:16

ado130 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mistrovství v AJAXu (problem)

v JavaScript, VBScript, Ajax

1

515

11.09.2009 14:26

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pascal - problem s ulohou(subory)

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

3

963

14.12.2009 18:39

Proxy69 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C/C++ problém so súbormi a hodnotami

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

2

308

09.12.2012 10:43

nBXXL Zobrazenie posledných príspevkov

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

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

24

1657

10.08.2009 21:59

euthanan Zobrazenie posledných príspevkov

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

v PHP, ASP

13

1091

16.02.2007 7:14

zero0x Zobrazenie posledných príspevkov

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie. Pomoc s ulohou v pascale

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

3

413

09.01.2010 19:01

ac.milan Zobrazenie posledných príspevkov

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

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

28

1329

28.05.2009 17:11

neutronmind Zobrazenie posledných príspevkov

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

v PHP, ASP

10

1185

04.01.2006 0:00

Pekaboo Zobrazenie posledných príspevkov

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

v Predám

0

382

17.06.2011 14:33

sedlák Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mistrovství ČR v bojovkách

v Počítačové hry

0

977

07.06.2006 22:54

p55p Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Mistrovství Slovenska v přetaktování - reportáž

v Novinky

4

640

12.01.2009 21:21

zmija31 Zobrazenie posledných príspevkov

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

v Počítačové hry

20

1235

12.10.2007 21:09

Matokoko 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