Kezdőoldal » Számítástechnika » Programozás » Miért nem fordul le a következ...

Miért nem fordul le a következő c++ program?

Figyelt kérdés

using namespace std;


int napok[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };


class Datum{

private:

int ev, ho, nap;

public:

Datum(string inDatum){

ev = atoi(inDatum.substr(0, 4).c_str());

ho = atoi(inDatum.substr(4, 2).c_str());

nap = atoi(inDatum.substr(6, 2).c_str());


if ((ev % 4 == 0 && ev % 100 != 0) || ev % 400 == 0) napok[1] = 29;

else napok[1] = 28;

}


void kiir(){

cout << "Eredmeny: " << ev << ho << nap;

}



// Datum + int

Datum operator+(int x){

cout << ev << "." << ho << "." << nap << ". + " << x << " nap" << " = ";

int ujnap = nap + x;

int ujho = ho;

int ujev = ev;


while (ujnap>napok[ujho - 1]){

ujnap -= napok[ujho - 1];

if (ujho<12) ujho++;

else {

ujho = 1;

ujev++;

if ((ujev % 4 == 0 && ujev % 100 != 0) || ujev % 400 == 0) napok[1] = 29;

else napok[1] = 28;

}

}

string back = (to_string(ujev)) + (to_string(ujho)) + (to_string(ujnap));

return Datum(back);

cout << ujev << "." << ujho << "." << ujnap << "." << endl << endl;

}

// Datum - int

Datum operator-(int x){

cout << ev << "." << ho << "." << nap << ". - " << x << " nap" << " = ";

int ujnap = nap - x;

int ujho = ho;

int ujev = ev;


while (ujnap<1){

if (ujho>1) ujho--;

if (ujho == 1){

ujho = 12;

ujev--;

if ((ujev % 4 == 0 && ujev % 100 != 0) || ujev % 400 == 0) napok[1] = 29;

else napok[1] = 28;

}

ujnap += napok[ujho - 1];

}

string back = (to_string(ujev)) + (to_string(ujho)) + (to_string(ujnap));

return Datum(back);

cout << ujev << "." << ujho << "." << ujnap << "." << endl << endl;

}


int operator-(Datum x){

cout << ev << "." << ho << "." << nap << ". -" << x.ev << "." << x.ho << "." << x.nap << " = ";

int napszam = 0, ujnapszam = 0, j;

for (int i = 1; i<ho; i++) napszam += napok[i - 1];

napszam += nap;

for (int i = 1; i<x.ho; i++) ujnapszam += napok[i - 1];

ujnapszam += x.nap;

if (ev>x.ev){

for (int i = 1; i <= (ev - x.ev); i++){

if ((ev % 4 == 0 && ev % 100 != 0) || ev % 400 == 0) napszam += 366;

else napszam += 365;

}

}

int back = napszam - ujnapszam;

return back;

cout << napszam << " - " << ujnapszam << " = " << napszam - ujnapszam << " nap kulonbseg" << endl << endl;

}


void Datum::szamol(){

char *tomb[] = { "kedd", "szerda", "csutortok", "pentek", "szombat", "vasarnap", "hetfo" };

Datum x("20090120");

int napszam = 0;

for (int i = 1; i < ho; i++) napszam += napok[i - 1];

napszam += nap;

napszam -= x.nap;

if (ev > x.ev){

for (int i = x.ev; i < ev; i++){

if ((ev % 4 == 0 && ev % 100 != 0) || ev % 400 == 0) napszam += 366;

else napszam += 365;

}

}

int ered = napszam % 7;

cout << "Nap: " << tomb[ered] << endl;

}


};



int main(){



Datum datum1("20101231");

Datum datum2("20100110");

Datum datum3("00000000");

datum3 = datum1 + 1;

datum3.kiir();

int kul = datum1 - datum2;

cout << "datum1 es datum2 kulonbsege: " << kul;



system("pause");

return 0;

}



2015. jan. 17. 15:25
 1/8 A kérdező kommentje:

A számol függvénynél hibát jelez a fordító.

error: extra qualification 'Datum::' on member 'szamol'

2015. jan. 17. 15:28
 2/8 anonim ***** válasza:

83. sorban Datum:: nem kell

Elejére #include <cstdlib>

#include <string>


a system("pause") miatt

2015. jan. 17. 15:29
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
#include <iostream> is kell.
2015. jan. 17. 15:31
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:

így sem működik ha azt leveszem akkor a main-ben jelez hibát a fordító

az include-ok ott vannak

2015. jan. 17. 15:50
 5/8 anonim ***** válasza:
Nekem így fut, de még azt javasolnám, hogy a char* helyett is string-et használj, mert arra warningokat ad, hogy konverziókat végez.
2015. jan. 17. 15:59
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:

Nekem erre a két sorra hibát ír

Datum datum1(20101231);

Datum datum2(20100110);


invalid con... int to const char*

2015. jan. 17. 16:11
 7/8 anonim ***** válasza:
Igen, mert azokat idézőjelbe (") kell tenni. (A kérdésben amúgy még úgy volt.)
2015. jan. 17. 16:31
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:

Oh tényleg, így már jó :D

Köszönöm szépen a segítséget! :D

2015. jan. 17. 16:52

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!