Witam mam program który wypisuje datę podaną przez użytkownika w formacie dd-mm-rrrr tzn ja podaje np tak 2 2 2012 program wyświetla 2 luty 2012 z wykorzystaniem funkcji strcpy i teraz mam pytanie jak zrobić aby wyświetlał i również datę o miesiąc później tzn ja podaje 2 2 2012 a on ma mi wyświetlić 2 marzec 2012 mam już zrobiony wskaźnik do struktury data w której mam tablice z miesiącami i zmienne rok i dzień.
Mogę i nawet tak już robiłem tylko że mam narzucone odgórnie że mam to zrobić z wykorzystaniem wskaźników i nie mam pomysłu jak wskazać kolejny element rekordu własnie z wykorzystaniem wskaźników.
Pokaż mi swój kod to postaram ci pomóc.
O to kod:
#include <iostream>
#include <string.h>
using namespace std;
struct data
{
short int dzien;
char miesiac[12];
short int rok;
};
int main()
{
short int n;
char miesiace[12][12]={"Styczen","luty","Marzec","Kwiecien","Maj","Czerwiec","lipiec","Sierpien","Wrzesien","Pazdziernik","listopad","grudzien"};
data podana;
cout<<"Podaj dzien\n " ;
cin>> podana.dzien;
cout<<"Podaj miesiac\n";
cin>> n;
cout<<"Podaj rok";
cin>> podana.rok;
strcpy(podana.miesiac, miesiace[n-1]);
cout<<"Biezaca data : " <<podana.dzien<< " " <<podana.miesiac<<" " <<podana.rok;
cin.ignore();
getchar();
return 0;
}
jak zrobić aby wyświetlał i również datę o miesiąc później
strcpy(podana.miesiac, miesiace[n % 12]);
mam już zrobiony wskaźnik do struktury
ale że gdzie?
strcpy(podana.miesiac, miesiace[n-1]);
cout<<"Biezaca data : " <<podana.dzien<< " " << podana.miesiac<<" " <<podana.rok;
if(n == 12) {
n = 0;
}
strcpy(podana.miesiac, miesiace[n]);
cout<<"Biezaca data : " <<podana.dzien<< " " <<podana.miesiac<<" " <<podana.rok;;
Wskaźnik miałem ale potem jeszcze kombinowałem wiec żeby nie wysyłać wam sałaty-zamiast kodu to pousuwałem to dobra dzięki wszystkim coś nad tym popracuje jeszcze ważne ze działa tak jak chciałem :)
A jeszcze tak z ciekawości zapytam jak to rozwiązać właśnie z użyciem wskaźnika do struktury data?
Różnica jest dość spora przy użyciu wskaźników. Ale w Twoim programie składniowo już znacznie mniejsza. Użycie new i delete oraz odwołanie się do składowych przez operator ->
data * podana = new data;
podana->dzien = .....
(....)
delete podana;
Funktor napisał(a):
jak zrobić aby wyświetlał i również datę o miesiąc później
Jak to ma działać? Np. mając datę 31.01.2012 to "miesiąc później" będzie jaką datą?
adf88 napisał(a):
Funktor napisał(a):
jak zrobić aby wyświetlał i również datę o miesiąc później
Jak to ma działać? Np. mając datę 31.01.2012 to "miesiąc później" będzie jaką datą?
Oczywiście 29.02.2012 ;)
Dziękuje Sarrus.