Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wypisanie pory roku na podstawie daty (podanej przez użytkownika).

Ostatnio zmodyfikowano 2017-06-18 21:10
Autor Wiadomość
BARNI132
Temat założony przez niniejszego użytkownika
Wypisanie pory roku na podstawie daty (podanej przez użytkownika).
» 2017-06-12 20:39:13
Witam,chodzi mi o pomoc w ogarnięciu programu . Temat jak w tytule , na razie mam takie coś :
//29_Wypisanie pory roku na podstawie daty (podanej przez u¿ytkownika).

#include <iostream>
using namespace std;

void data(int d,int m,int r);
void wypisz(int d,int m,int r);

main()
{
int d,m,r;


wypisz(d,m,r);

}
void wypisz(int d,int m,int r)
{
bool poprawnosc=true;
while(poprawnosc)
{
cout<<"Podaj dzien: ";
    cin>>d;
    cout<<"Podaj miesiac: ";
    cin>>m;
    cout<<"Podaj rok: ";
    cin>>r;
    cout<<endl;
    if(m<0&&d<0||r<1900)
    cout<<"Niepoprawna data"<<endl;
    else  if(m>12||d>31)
    cout<<"Niepoprawna data"<<endl;
    else if(m==2&&d>30)
    cout<<"Niepoprawna data"<<endl;
    else  if(m>12||d>31)
    cout<<"Niepoprawna data";
else
poprawnosc = false;
}
data(d,m,r);
}
void data(int d,int m,int r)
{


   if(m>3&&m<6)
        cout<<"wiosna";
    else if(m==3&&d>=21)
        cout<<"wiosna";
    else if(m==6&&d<22)
        cout<<"wiosna";
    else if(m>6&&m<9)
        cout<<"lato";
    else if(m==6&&d>=22)
        cout<<"lato";
    else if(m==9&&d<23)
        cout<<"lato";
    else if(m>9&&m<12)
        cout<<"jesien";
    else if(m==9&&d>=23)
        cout<<"jesien";
    else if(m==12&&d<=20)
        cout<<"jesien";
    else if(m==1)
        cout<<"zima";
    else if(m==2&&d<=28)
        cout<<"zima";
    else if(m==12&&d>=22)
        cout<<"zima";
    else if(m==3&&d<21)
        cout<<"zima";
    else if((r%4==0 && r%100!=0) || r%400==0)  
    {
    if(m==2&&d<=29)
    cout<<"zima";
    else cout<<"Niepoprawna data";
} else cout<<"Niepoprawna data";

cout<<endl;
    system("pause");
   
}

Muszę zrobić to tak ,aby pierwsza funkcja miała 3 argumenty i sprawdzała czy data jest poprawna od 1900 do 2017 zwraca true lub false i 2 funkcja wypisuje pore roku ma 3 argumenty.  Jeżeli ktoś wie jak to szybko ,sprawnie zrobić to proszę o rady. DOstałem jeszcze taką uwagę ,iż main jest przeniesiony do funkcji.
   
P-162453
Kinexity
» 2017-06-12 21:34:46
Najgorszy kod jaki kiedykolwiek widziałem. Jeżeli dopiero zaczynasz programowanie to dużo ćwicz (nie tylko robiąc prace domowe). Zamiast robić kilometrowe warunki łatwiej jest po prostu wyliczyć dzień roku i z tego wyznaczać porę.

C/C++
#include <iostream>
using namespace std;

bool data( int d, int m, int r );
void wypisz( int d, int m, int r );
const int dni_mies[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

void main()
{
    unsigned int d, m, r;
    wypisz( d, m, r );
}

void wypisz( int d, int m, int r )
{
    unsigned int dzien_roku = 0;
    cout << "Podaj dzien, miesiac i rok: ";
    cin >> d >> m >> r;
    if( data( d, m, r ) ) {
        cout << "Data prawidlowa" << endl;
        /*
        Tutaj już sobie sam wstawisz obliczanie pory roku - tylko nie kopiuj poprzedniego rozwiązania, bo to donikąd nie prowadzi.
        */
    }
    else {
        cout << "Data nieprawidlowa" << endl;
    }
    system( "pause" );
}

bool data( int d, int m, int r ) //Tą funkcję wywaliłbym całkowicie ale skoro ci potrzebna...
{
    return( d >= 1 && m >= 1 && d <=( r % 4 == 0 && m == 2 ? 29: dni_mies[ m - 1 ] ) && r >= 1900 && r <= 2017 );
}
P-162457
BARNI132
Temat założony przez niniejszego użytkownika
» 2017-06-13 00:40:18
Coś mi tu nie gra ,nawet jak skopiuje obliczanie pory roku z mojego nie mogę tego programu skompilować. Da radę coś z tym zrobić ,żeby to jakoś wyglądało?
P-162460
latajacaryba
» 2017-06-13 00:56:34
Kinexity
      Tutaj już sobie sam wstawisz obliczanie pory roku - tylko nie kopiuj poprzedniego rozwiązania, bo to donikąd nie prowadzi

Ty
  nawet jak skopiuje obliczanie pory roku z mojego nie mogę tego programu skompilować.

Aha.

Skoro nie mozesz go skompilować to wstaw logi. Najlepiej cały kod ktory chcesz skompilowac i logi.
P-162463
Kinexity
» 2017-06-13 07:33:44
Spróbuj zmienić typ zwracany przez main (nie wszystkie kompilatory obsługują
void main() { }
) i przełóż funkcje ponad main (usuń też wtedy ich deklaracje stamtąd). Jeżeli kod u ciebie nie działa to prawdopodobnie znaczy, że w twoim kompilatorze prawdopodobnie nie zostało zaimplementowano coś, co jest w VS2017 (korzystam z niego i u mnie działa).
P-162469
karambaHZP
» 2017-06-13 08:39:38
nie mogę tego programu skompilować
Wklejaj treści błędów. Jak mamy ci pomóc, jeśli nie wiemy co nie działa?
P-162470
BARNI132
Temat założony przez niniejszego użytkownika
» 2017-06-18 21:10:20
Ogólnie jestem na początku nauki programowania i wszystkiego uczę się od zera. Dla mnie najlepsze jest to ,że program działa ,a nie jak jest napisany jeszzce gdy sam go pisałem. Co do tego programu uwaga od prowadzącego"pierwsza funkcja ma 3 argumenty i sprawdza  czy data jest poprawna zwraca true false  tylko sprawdzanie"- chodzi mi tylko ,żeby to ktoś wszsytko sprawdził czy się zgadza.
#include <iostream>
using namespace std;

bool data( int d, int m, int r );
void wypisz( int d, int m, int r );
void pora_roku(int dzien,int miesiac);
const int dni_mies[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

 main()
{
    int d, m, r;
    wypisz( d, m, r );
}

 void wypisz( int d, int m, int r )
{
    unsigned int dzien_roku = 0;
    cout << "Podaj dzien, miesiac i rok: ";
    cin >> d >> m >> r;
    if( data( d, m, r ) ) {
        cout << "Data prawidlowa" << endl;
    pora_roku(d,m);
    }
    else {
        cout << "Data nieprawidlowa" << endl;
    }
    system( "pause" );
}

bool data( int d, int m, int r )
{
    return( d >= 1 && m >= 1 && d <=( r % 4 == 0 && m == 2 ? 29: dni_mies[ m - 1 ] ) && r >= 1900 && r <= 2100 );
}

void pora_roku(int dzien,int miesiac)
{
switch(miesiac)
{
case 1:
cout << "Zima " << endl;
break;
case 2:
cout << "Zima " << endl;
break;
case 3:

if(dzien < 20) cout << "Zima " << endl;
else cout << "Wiosna " << endl;

break;
case 4:
cout << "Wiosna " << endl;
break;
case 5:
cout << "Wiosna " << endl;
break;
case 6:

if(dzien < 21) cout << "Wiosna " << endl;
else cout << "Lato " << endl;

break;
case 7:
cout << "Lato " << endl;
break;
case 8:
cout << "Lato " << endl;
break;
case 9:

if(dzien < 22) cout << "Lato " << endl;
else cout << "Jesien " << endl;

break;
case 10:
cout << "Jesien " << endl;
break;
case 11:
cout << "Jesien " << endl;
break;
case 12:

if(dzien < 21) cout << "Jesien " << endl;
else cout << "Zima " << endl;

break;
}
}

P-162666
« 1 »
  Strona 1 z 1