Miért nem fordul le a következő c++ program?
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;
}
A számol függvénynél hibát jelez a fordító.
error: extra qualification 'Datum::' on member 'szamol'
83. sorban Datum:: nem kell
Elejére #include <cstdlib>
#include <string>
a system("pause") miatt
így sem működik ha azt leveszem akkor a main-ben jelez hibát a fordító
az include-ok ott vannak
Nekem erre a két sorra hibát ír
Datum datum1(20101231);
Datum datum2(20100110);
invalid con... int to const char*
Oh tényleg, így már jó :D
Köszönöm szépen a segítséget! :D
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!