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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
422 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,262 wizyt
pytanie zadane 5 października 2017 w C i C++ przez krzychu1324 Nowicjusz (140 p.)
+2 głosów
1 odpowiedź 1,127 wizyt
0 głosów
1 odpowiedź 1,159 wizyt

93,195 zapytań

142,211 odpowiedzi

322,061 komentarzy

62,519 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 3316p. - dia-Chann
  2. 3251p. - Łukasz Piwowar
  3. 3243p. - Łukasz Eckert
  4. 3222p. - CC PL
  5. 3167p. - Tomasz Bielak
  6. 3157p. - Łukasz Siedlecki
  7. 3133p. - rucin93
  8. 3110p. - Maurycy W
  9. 3028p. - Adrian Wieprzkowicz
  10. 2992p. - Mikbac
  11. 2490p. - Marcin Putra
  12. 2467p. - Michał Telesz
  13. 2427p. - Michal Drewniak
  14. 2372p. - Anonim 3619784
  15. 1949p. - rafalszastok
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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...