Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 14 odgovora
  • 5.971 pregleda

Najnovija ↓

class-e i nizovi 21.01.2002. u 07:27 · pre 301 mesec #1
Pozdrav svima
Imam problem jedan. Poceo sam da radim na nekom domacem za skolu ali imam problem. Nigde ne mogu da nadjem kako da radim sa Class-ama i Array's

Ovo ispod je prost primer

#include "stdafx.h"
#include <iostream>
#include <iomanip>

using std::cout;
using std::cin;
using std::endl;

// defining a class
class human{
private:
int empNo;
char name[32];
char address[32];
float salary;
public:
void enterEmployee(int);
void listEmployee(int);
};

void human::enterEmployee(int i)
{
empNo = i;
cout << "\nEmployee No: " << empNo << endl;
cout << "Name: "; cin >> name;
cout << "Address: "; cin >> address;
cout << "Salary: "; cin >> salary; cout << endl;
cout << endl;
}

void human::listEmployee(int i)
{
cout << "Employee No: " << empNo << endl;
cout << "Name: " << name << endl;
cout << "Address: " << address << endl;
cout << "Salary: " << salary << endl;
cout << "-----------------" << endl;
}

// starting w/ main function
int main()
{

int i=0;
human emp1, emp2, emp3;

cout << "\n Enter the following information !" << endl;

emp1.enterEmployee(1);
emp2.enterEmployee(2);
emp3.enterEmployee(3);

cout << "\n List of Employees" << endl;

emp1.listEmployee(1);
emp2.listEmployee(2);
emp3.listEmployee(3);

return 0;
}

ovo sam samo probao da vidim da li ce da mi radi. vidite i sami da je glupo odradjeno. e sad, ja znam kako da uradim ovo u drugom jeziku ali ne i u C++.

sta u stvari hocu da uradim ?
hocu da imam array recimo

human name_array[5];

i da kasnije zovem funkciju fillArray

koja bi glasila nesto tipa

human::fillArray( E sad ne znam sta ovde da stavim)
{
// sta se sad ovde pise. jel nesto tipa ?

human[ i ].name = ........;

// ili

name_array[ i ].name = ....... ;

// ili nesto sasvim peto.
}

Ajde pomagajte ako mozete. Nadam se da ste me razumeli.
Znaci ovaj program sto sam gore napisao,hocu uprosten koristeci array's ali ne znam sintaksu.

Radim u VC++ (Win 2k).

Hvala
Uros
Re: class-e i nizovi 21.01.2002. u 10:06 · pre 301 mesec #2
E ovako, pokusacu da ti pomognem -

Ne mozes tako da dodeljujes imena stringovima, ako koristis char[] array za polje.

Probaj:

Dodaj funkciju

Code:

__inline human::EditName(char *szName)
{
  strcpy(name, szName);
  /* ili: sprintf(name, "%s", szName); */
}

pa onda odakle hoces pozivas:

name_array[k].EditName("Pera Peric");
Potpis
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Re: class-e i nizovi 21.01.2002. u 19:38 · pre 301 mesec #3
Hvala ti,ali ako te ne mrzi pogledaj ovo i reci mi u cemu sada gresim


#include "stdafx.h"
#include <iostream>
#include <iomanip>

using std::cout;
using std::cin;
using std::endl;

// defining a class
class human{
private:
char name[32];
public:
editName(char *);
listName();
};


human::editName(char *szName)
{
strcpy(name, szName);
}

human::listName()
{
cout << name;
}

// starting w/ main function

int main()
{

int i=0;
human name_array[5];
char employee[20];



for (i=0; i < 5; i++) {
cout << "name: ";
cin >> employee;
name_array[ i ].editName(employee);
cout << endl;
}

// list array

for (i=0; i < 5; i++) { // ovde je negde greska valjda
cout << "Name: " << name_array[ i ].listName() << endl;
}

return 0;
}


obrati paznju sta mi izbacuje
Re: class-e i nizovi 21.01.2002. u 19:52 · pre 301 mesec #4
Hmm.. za prvu pomoc, izbaci name[] niz iz protected u public (C++ cistunci znam da je ovo "no no" sto se stila programiranja tice, ali ovo je prva pomoc)

i onda umesto:

cout << "Name: " << name_array[ i ].listName() << endl;

stavi:

cout << "Name: " << name_array[ i ].name << endl;

Potpis
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Re: class-e i nizovi 21.01.2002. u 20:11 · pre 301 mesec #5
Citat:
Ivan Dimkovic:
Hmm.. za prvu pomoc, izbaci name[] niz iz protected u public (C++ cistunci znam da je ovo "no no" sto se stila programiranja tice, ali ovo je prva pomoc)

i onda umesto:

cout << "Name: " << name_array[ i ].listName() << endl;

stavi:

cout << "Name: " << name_array[ i ].name << endl;



Hvala ti,sada radi.
Ako neko ima bolju ideju neka kaze, posto bi trebalo name da mi bude u private,ali ajde,ovo sad radi.

Pozdrav
Re: class-e i nizovi 21.01.2002. u 20:15 · pre 301 mesec #6
Ja mislim da je problem sto je taj cout ispisao i return vrednost one tvoje funkcije za ispis, koja opet nesto vraca na stack (odatle oni brojevi)... to moras drugacije da resis, ili da sve za ispis bacis u klasu human, ili da ispisujes van te klase...
Potpis
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Re: class-e i nizovi 21.01.2002. u 20:19 · pre 301 mesec #7
Citat:
ouros:

Hvala ti,sada radi.
Ako neko ima bolju ideju neka kaze, posto bi trebalo name da mi bude u private,ali ajde,ovo sad radi.

Pozdrav


Ako name treba da bude private, onda ti je najbolje da dodaš par (public) funkcija:
const char* GetName();
void SetName (const char* newName);
Potpis
IOCC
Re: class-e i nizovi 21.01.2002. u 20:22 · pre 301 mesec #8


Ako name treba da bude private, onda ti je najbolje da dodaš par (public) funkcija:
const char* GetName();
void SetName (const char* newName);[/quote]

Izvini,ali nisam bas najbolje razumeo, nisam dugo radio u C++ a ovo je sad relativno novo za mene( mislim class-e) tako da bi mi trebala malo opsirnija pomoc.

Hvala
Re: class-e i nizovi 21.01.2002. u 20:29 · pre 301 mesec #9
Pa da napravis "postapalice" - tj. funkcije koje ce ti dati pokazivac na neki private clan klase, i to moze lepo da se koristi... na primer

Code:

class a { 
public:

  char *daj_mi_pointer_na_clan();

protected:
  char szTemp[32];
}

char *a:daj_mi_pointer_na_clan()
{
  return szTemp;
}



Ovim postizes "relativno cist" stil programiranja, a opet mozes da se igras sa clanovima klase...
Potpis
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Re: class-e i nizovi 21.01.2002. u 20:34 · pre 301 mesec #10
Citat:
ouros:


Ako name treba da bude private, onda ti je najbolje da dodaš par (public) funkcija:
const char* GetName();
void SetName (const char* newName);


Izvini,ali nisam bas najbolje razumeo, nisam dugo radio u C++ a ovo je sad relativno novo za mene( mislim class-e) tako da bi mi trebala malo opsirnija pomoc.

Hvala[/quote]

OK. Recimo da imaš klasu:

Code:

class CHuman
{
private:
   char name[32];
public:
   const char* GetName() {return name;}
   void SetName (const char* newName) {strncpy(name, newName, 32);}
};


Znači, umesto da direktno menjaš i čitaš name, koristiš otprilike:


cout << human.GetName();
ili
human.SetName("NovoIme");

gde je human promenljiva tipa CHuman.
Potpis
IOCC
Re: class-e i nizovi 21.01.2002. u 21:47 · pre 301 mesec #11
Hvala vam na odgovorima.

Uros
Re: class-e i nizovi 22.01.2002. u 11:55 · pre 301 mesec #12
Dobices veceras gotov kod za ono sto si rekao Urose. Ovde ti zapravo niko nije odgovorio na prosto pitanje... Kapiram ja to, jednostavna pitanja su uvek komplikovana za gurue - znam to po sebi. :) Uvek razmisljam na svoj nacin i shvatim uvek pogresno. Ovaj put mislim da nisam pogresio - ti zapravo zelis da imas fillArra() funkciju koja ce da napuni niz "ljudi" nekim vrednostima. Za to nam zapravo treba jedna metoda klase Human koja bi imala argumente name, trt, mrt i koju bi pozivali da "ubacimo" odredjene vrednosti u objekat, kad imam to, imamo bazu na kojoj cemo napisati fillArray(). fillArray() bi zapravo pozivala tu funkciju, nazovimo je recimo SetHumanValues() :)
Neko ce reci "Sto onda nismo napravili to kao konstruktor", ja na to odgovaram "Sto da ne, napisite" :)
Kad se vratim s posla veceras napisacu to i poslati kod.

Pozdrav
Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: class-e i nizovi 22.01.2002. u 12:22 · pre 301 mesec #13
Forgive my display of ignorance, Leko - ali mislim da je Uros rekao da mu kod radi? Doduse, onaj stream input ima problema sa ENTER tasterom, ali u principu radi...

:)
Potpis
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Re: class-e i nizovi 22.01.2002. u 17:03 · pre 301 mesec #14
Ivane, ali to nije pitanje - momak se izgleda zaglavio kod pomenute fillArray() funkcije...
Potpis
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
Re: class-e i nizovi 22.01.2002. u 18:18 · pre 301 mesec #15
Citat:
leka:
Ivane, ali to nije pitanje - momak se izgleda zaglavio kod pomenute fillArray() funkcije...


U pravu ste oboje. Problem mi je bio fillArray funkcija jer to nisam kapirao kako se radi i onda sam cackao nesto i "kao" uspelo je. onda su mi Ivan i Dragi Tata dali par saveta. Code kao radi,ali me opet zezaju neke gluposti koje pokusavam sad da sredim.

Ako si Leko napisao code posalji ga molim te,posto ucim,da viidim da li ima neki bolji nacin od mog.

Hvala
Uros
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme