» »

[NALOGA][C++]Razredi in sintakska

[NALOGA][C++]Razredi in sintakska

balocom ::

#include <iostream>
using namespace std;

class Pravokotnik
{
  public:
  void vnesisirina (int a);
  void vnesisirino (int b);
  void izracunobsega (void);
  void povrsina (void);
  

  private:
  int xsirine, yvisina;    
}pravokotnik;

long Pravokotnik.izracunobsega(int y, int x)
{
     return (long) 2*xsirina+2*yvisina;
}

long Pravokotnik.povrsina(int yvisina, int xsirina)
{
     return (long) xsirina*yvisina;
}

  void Pravokotnik.vnesisirino(int x)
{
     private.xsirina = xsirina;
}
void Pravokotnik.vnesivisino(int y)
{
     private.yvisina=y;
}

int main()
{
    int vnos;
    cout << "Vnesi sirino pravokotnika" << endl;
    cin >> vnos;
    pravokotnik.vnossirine(vnos);
    cout << "Vnesi visino";
    cin >> vnos;
    pravokotnik.vnesivisino(vnos);
    cout << "Obseg pravokotnika je " << pravokotnik.izracunobsega() << endl;
    cout << "Površina pravokotnika je " << pravokotnik.povrsina() << endl;
    
    system("Pause");
    return 0;
}


A lahko kdo popravi sintakso?
V svetu brez googla bi bil najbolj uporabljen ukaz v bash-u ukaz man
  • spremenil: balocom ()

snow ::

Metode razreda morajo biti takole:

long Pravokotnik::izracunobsega(int y, int x)
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Zgodovina sprememb…

  • spremenilo: snow ()

Quikee ::

napačno..

void Pravokotnik.vnesisirino(int x)
{
private.xsirina = xsirina;
}
void Pravokotnik.vnesivisino(int y)
{
private.yvisina=y;
}



pravilno..

void Pravokotnik::vnesisirino(int x)
{
xsirina = x;
}
void Pravokotnik::vnesivisino(int y)
{
yvisina=y;
}


....

private:
int xsirine, yvisina;


površnost!
....


long Pravokotnik.povrsina(int yvisina, int xsirina)
{
return (long) xsirina*yvisina;
}


Metoda ne sodi v razred!.. popravek:


long Pravokotnik:povrsina()
{
return (long) xsirina*yvisina;
}




long Pravokotnik.izracunobsega(int y, int x)
{
return (long) 2*xsirina+2*yvisina;
}


spet.. zakaj vhodna parametra x in y če ju v metodi ne uporabljaš? kvečemu..


long Pravokotnik::izracunobsega()
{
return (long) 2*xsirina+2*yvisina;
}


...


class Pravokotnik
{
public:
void vnesisirina (int a);
void vnesisirino (int b);
void izracunobsega (void);
void povrsina (void);


private:
int xsirine, yvisina;
}pravokotnik;


"} pravokotnik;", na koncu razreda ni potreben, mislim, pa da ni nič narobe če je.
+ nimaš definirano kaj metode vračajo v razredu!
+ spet površnost

Prav:


class Pravokotnik
{
public:
void vnesisirino (int x);
void vnesisirino (int y);
long izracunobsega ();
long povrsina ();

private:
int xsirina, yvisina;
};

Zgodovina sprememb…

  • spremenil: Quikee ()

balocom ::

Hvala0:)

Naslednji problem(ček).
int main()
{
    int vnos;
    cout << "Vnesi sirino pravokotnika" << endl;
    cin >> vnos;
     Pravokotnik.vnossirine(vnos); //1. Napaka
    cout << "Vnesi visino";
    cin >> vnos;
     Pravokotnik.vnesivisino(vnos); //2. Napaka
    cout << "Obseg pravokotnika je " << Pravokotnik.izracunobsega() << endl; //3. Napaka
    cout << "Površina pravokotnika je " << Pravokotnik.povrsina() << endl; //4. Napaka
    
    system("Pause");
    return 0;
}


Pri vnosu in izpisu kjer piše xx. napaka javi : expected primary-expression before '.' token
V svetu brez googla bi bil najbolj uporabljen ukaz v bash-u ukaz man

Quikee ::

Probaj...

int main()
{
    int vnos;
    Pravokotnik pravokotnik;
    cout << "Vnesi sirino pravokotnika" << endl;
    cin >> vnos;
    pravokotnik.vnossirine(vnos);

    cout << "Vnesi visino";
    cin >> vnos;
    pravokotnik.vnesivisino(vnos);

    cout << "Obseg pravokotnika je " << pravokotnik.izracunobsega() << endl;
    cout << "Površina pravokotnika je " << pravokotnik.povrsina() << endl;

    system("Pause");
    return 0;
}


Če še bo kakšna napaka ponovno prilepi celotno kodo, da vidim če je vse OK.

balocom ::

#include<iostream>
using namespace std;
 
 class Pravokotnik
{
public:
void vnesisirino (int x);
void vnesivisino (int y);
long izracunobsega ();
long povrsina ();

private:
int xsirina, yvisina;
};

void Pravokotnik::vnesisirino(int x)
{
xsirina = x;
}
void Pravokotnik::vnesivisino(int y)
{
yvisina=y;
}

 long Pravokotnik::povrsina()
{
return (long) xsirina*yvisina;
}

 long Pravokotnik::izracunobsega()
{
return (long) 2*xsirina+2*yvisina;
}

int main()
{
    int vnos;
    cout << "Vnesi sirino pravokotnika" << endl;
    cin >> vnos;
     Pravokotnik.vnossirine(vnos);
    cout << "Vnesi visino";
    cin >> vnos;
     Pravokotnik.vnesivisino(vnos);
    cout << "Obseg pravokotnika je " << Pravokotnik.izracunobsega() << endl;
    cout << "Površina pravokotnika je " << Pravokotnik.povrsina() << endl;
    
    system("Pause");
    return 0;
}

Z tistim int main-om ni nič bolje, še vedno hoče Pravokotnik.vnossirine(vnos)/Pravokotnik.vnesivisino(vnos)/Pravokotnik.izracunobsega()/Pravokotnik.povrsina() .
V VS C++ Expres Editon javi: C2143: syntax error : missing ';' before '.' kjer imam dano Pravokotnik.vnossirine(vnos)/Pravokotnik.vnesivisino(vnos)/Pravokotnik.izracunobsega()/Pravokotnik.povrsina().
V Dev C++ pa javi isto kot prej:|
V svetu brez googla bi bil najbolj uporabljen ukaz v bash-u ukaz man

Zgodovina sprememb…

  • spremenil: balocom ()

mile ::

se enkrat poglej, kaj ti je Quikee napisal

Gundolf ::

Pravokotnik z malo. Ker Pravokotnik je ime razreda (razred le določa nov tip spremenljivke, ki ga od deklaracije razreda naprej lahko uporabljaš v programu), medtem ko pravokotnik pa je ime spremenljivke tipa Pravokotnik. In v programu delaš le s spremenljivkami.

Jaz ti svetujem, da ne delaš stvari takole na pamet, kjer ne veš kaj ti kateri del programa sploh pomeni ampak si najprej res dobro pogledaš osnove. Predvsem ti očitno delajo probleme razredi. Recimo poglej si tale tutorial.

balocom ::

Pravokotnik z malo.

Kako bi bilo, če bi
Pravokotnik pravokotnik;

delal v prvem poskusu? (zdej dela, koda v prvem in drugem poskusu sta enaki)....
V svetu brez googla bi bil najbolj uporabljen ukaz v bash-u ukaz man


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c++] konstruktorji

Oddelek: Programiranje
295239 (4568) AndrejO
»

c# form

Oddelek: Programiranje
131878 (1392) FuI2cY
»

[C++] Metode

Oddelek: Programiranje
51518 (1350) Klobasa
»

programiranje C

Oddelek: Programiranje
62438 (2300) bozjak
»

Vmesnik v Javi

Oddelek: Programiranje
142277 (2060) Camel

Več podobnih tem