• 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.

0 głosów
558 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,405 wizyt
pytanie zadane 5 października 2017 w C i C++ przez krzychu1324 Nowicjusz (140 p.)
+2 głosów
1 odpowiedź 1,397 wizyt
0 głosów
1 odpowiedź 1,422 wizyt

93,631 zapytań

142,552 odpowiedzi

323,056 komentarzy

63,137 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2416p. - dia-Chann
  2. 2390p. - DziarnowskiJ
  3. 2317p. - raydeal
  4. 2300p. - Adrian Wieprzkowicz
  5. 2243p. - rucin93
  6. 2242p. - Łukasz Piwowar
  7. 2222p. - CC PL
  8. 2117p. - Łukasz Eckert
  9. 2082p. - Michal Drewniak
  10. 1957p. - Maurycy W
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1377p. - ssynowiec
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...