[ djblade @ 21.07.2004. 18:05 ] @
pozdrav.. kratko pitanje

c++

kako da pozivam jednom metodom drugu...
ne mislim na pozivanje iz main().

na primjer

u jednoj metodi imam glavni meni a u drugoj neki tekstic.

nakon pozivanja druge metode koja izlista text zelim da pozove prvu metodu u kojoj je glavni meni..

eto nebi trebaloi biti tesko )

i jos nesto. kada napravim metodu koja daje mogucnost da se upise neki textic pomocu cin.getline, zasto

nestane prozorcic kada krenem nesto da upisujem. radi normalno kada je u main() zasto ne sa nekom drugom

void udziuProggy (void)
{
cout <<"izaberite sljedecu opciju.\n";
cout <<"Program je u fazi konstrukcije ... \n";
glavna ();

}

metodom ???

danke

pozdrav
[ filmil @ 21.07.2004. 18:13 ] @
Malo si me zbunio ovim pitanjem, nije baš jasno šta ti treba. Možeš li da pošalješ program koji ti izaziva probleme pa da vidimo?

f
[ djblade @ 21.07.2004. 18:27 ] @
#include <iostream>

using namespace std;
//introduces namespace std

void udziuProggy (void)
{
cout <<"izaberite sljedecu opciju.\n";
cout <<"Program je u fazi konstrukcije ... \n";
glavna ();

}

void upisivanjeTexta(void)
{
char buffer [200]; // ovu funkciju nisam primjenjivao jer nisam nista mogao upisati
cout << ":)\n"; // prozor bi se odma iskljucio
cin.getline (buffer,200);

cout << buffer;
}


void glavna (void)
{
int n=0;

cout << "Glavni meni:\n" ;
cout << "1. Udzi u program.\n";
cout << "2. Novi upis. - Opcija za pisanje kratkih biljeski.\n";
cout << "3. Obrada podataka - Rad sa autima.\n";
cout << "4. Mali rijecnik njemackog.\n";

cin >>n;






switch (n)
{
case 1:

udziuProggy();
glavna ();
break;
case 2:

cout << "Ovdje upisujete svoj tekst:\n";
upisivanjeTexta();
/*evo ovdje pozivam metodu ali kad
je pozovem ne mogu nista upisati, prozor se jednostavno zatvori, sto ne bi bio slucaj kad bi metodu pozivao iz main()*/

break;
default:
cout << "Pogresna tipka";
break;
}
}


int main( void )
{

glavna ();

return 0;
}

oprostite na neuredsnosti, u zurbi je sve bilo i bez pretjeranog razmisljanja :)
[ filmil @ 21.07.2004. 18:48 ] @
Code:
#include <iostream>

using namespace std;
//introduces namespace std

void glavna(void);

void udziuProggy (void)
{
    cout <<"izaberite sljedecu opciju.\n";
    cout <<"Program je u fazi konstrukcije ... \n";
    glavna ();
}

void upisivanjeTexta(void)
{
    char buffer [200];
    cout << ":)\n"; // prozor bi se odma iskljucio
    cin.getline(buffer,200);
    cout << "wrote: " << buffer;


void glavna (void)
{
    int n=0;

    cout << "Glavni meni:\n" ;
    cout << "1. Udzi u program.\n";
    cout << "2. Novi upis. - Opcija za pisanje kratkih biljeski.\n";
    cout << "3. Obrada podataka - Rad sa autima.\n";
    cout << "4. Mali rijecnik njemackog.\n";

    cin >> n ;
    cin.ignore(); // očisti zaostali endl
    switch (n)
    {
    case 1:
        udziuProggy();
        glavna ();
        break;
    case 2:

        cout << "Ovdje upisujete svoj tekst:\n";
        upisivanjeTexta();
/*evo ovdje pozivam metodu ali kad
  je pozovem ne mogu nista upisati, prozor se jednostavno zatvori, sto ne bi bio slucaj kad bi metodu pozivao iz main()*/

        break;
    default:
        cout << "Pogresna tipka";
        break;
    }
}


int main( void )
{

    glavna ();

    return 0;
}

[ djblade @ 22.07.2004. 17:45 ] @
E hvala puno.

i jos nesto sto sam vidio u ovom primjeru.

da li je pametnije da deklarisem sve metode pa nakon toga da ih definisem.??

malo tudzeg znanja i iskustva sa klasama i metodama bi dobro doslo :)

hvala svejedno
[ djblade @ 22.07.2004. 17:52 ] @
#include <iostream>

using namespace std; //introduces namespace std

class oblik
{
protected:
int sirina, duzina;

public:
void postaviVrijednost (int a, int b)
{ sirina = a; duzina =b;}
};


class pravugaonik:public oblik
{
public:
int povrsina (void)
{return (sirina*duzina);} //--- zasto ovdje ne mogu staviti a*b??
};

class trougao :public oblik
{
public:
int povrsina (void)
{return (sirina*duzina/2);} //-- i ovdje takodze a*b.cini mi se logicno.
};

int main( )
{
pravugaonik prav;
trougao trg;

prav.postaviVrijednost(4,2);
trg.postaviVrijednost(3,2);

cout << trg.povrsina()<<endl;
cout<< prav.povrsina();
}


malo me ovo zbunjuje. kod metoda u kojima stavim argumente a i b, stavljam ih u return (a*b).
da li je razlicito u klasa ili sta??
[ filmil @ 22.07.2004. 18:05 ] @
Citat:
djblade:
da li je pametnije da deklarisem sve metode pa nakon toga da ih definisem.??


Nije u pitanju šta je bolje, već šta mora. U tvom primeru funkcija glavna koristi se pre nego što je deklarisana, a to nije dozvoljeno.

Što se tiče drugog pitanja, zašto ne može da se stavi a i b, odgovor je jer u datom kontekstu ne postoje promenljive sa takvim imenom. One se javljaju u nekoj od drugih metoda, ali zbog opsega života (scope) promenljive koje se javljaju u jednoj funkciji, odnosno u jednoj sekvenci { ... } ne vide se spolja. Pogledaj neku knjigu o C++-u za više detalja.

f