• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program liczący różnice dni między dwoma chwilami.

Object Storage Arubacloud
0 głosów
374 wizyt
pytanie zadane 7 listopada 2018 w C i C++ przez Damian Wasiak Nowicjusz (140 p.)

Witam koledzy programiści mam za zadanie napisać program który poda różnice między zestawem 2 dat podanych przez użytkownika.Niestety napotkałem problem że funkcja sekundy() nie przelicza mi podanego w formacie R-M-D-G-Min-S na sekundy mam podejrzenia że liczba wykracza poza zakres i dlatego wywala raz -1 a nieraz jakąś inną liczbę ujemną oto cały kod.

Muszę się kierować wytycznymi podanymi w zadaniu takimi jak nazwy zmiennych oraz to że T1 T2  podane przez użytkownika zwane są chwilami,takie wymagania prowadzącego zajęcia.

Schemat działania:

1.Użytkownik podaje liczbę zestawów D,każdy zestaw zawiera 2 daty nazywane chwilami w formacie Rok miesiąc godzina minuta sekunda

2.No i następnie do T1 zostaje przypisany wskażnik z pierwszego elementu tablicy zawierającą dane chwili podanej przez użytkownika i analogiczie do T2 wskaźnik do drugiej chwili.

3.No i tutaj funkcja sekundy powinna zamieniać podane chwile na sekundy lecz tego nie robi.

#include<iostream>
#include <time.h>
using namespace std;
int sekundy(int r,int m,int d,int g,int min,int s )
{
tm czas;
czas.tm_year=r;
czas.tm_mon=m;	
czas.tm_mday=d;	
czas.tm_hour=g;
czas.tm_min=min;	
czas.tm_sec=s;
time_t sekundy=mktime(&czas);
return sekundy;	
}

int * dodaj_dzien()
{   int *wsk;
	int r,m,d,g,min,s,T[6];
	cin>>r>>m>>d>>g>>min>>s;
	T[0]=r;
	T[1]=m;
	T[2]=d;
	T[3]=g;
	T[4]=min;
	T[5]=s;
	wsk=T;
	return wsk;
}
main()
{
int D;
int *T1,*T2;
cin>>D;
	for(int i=0;i<D;i++)
	{
		T1=dodaj_dzien();
		T2=dodaj_dzien();
		cout<<(sekundy(*T2,*T2+1,*T2+2,*T2+3,*T2+4,*T2+5)-(*T1,*T1+1,*T1+2,*T1+3,*T1+4,*T1+5))/86400<<endl ;
	}
}

 

1 odpowiedź

0 głosów
odpowiedź 8 listopada 2018 przez RafalS VIP (122,820 p.)

Na pierwszy rzut oka dodaj dzien zwraca wskaznik do zmiennej lokalnej T ktora przestaje istnieć po wyjściu z funkcji.

*T2+1

Dodales 1 do T2[0]. Napisz to po ludzku: T2[1]

Pomieszales nawiasy:

sekundy(...) - (...)

 

komentarz 8 listopada 2018 przez Damian Wasiak Nowicjusz (140 p.)
Poprawiłem ale to nie zmienia faktu że funkcja sekundy nie zwraca prawidłowo sekund całej chwili

Podobne pytania

0 głosów
2 odpowiedzi 1,059 wizyt
pytanie zadane 5 października 2017 w C i C++ przez krzychu1324 Nowicjusz (140 p.)
+2 głosów
1 odpowiedź 1,010 wizyt
0 głosów
1 odpowiedź 750 wizyt

92,553 zapytań

141,399 odpowiedzi

319,534 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...