👤

1. Să se scrie un program care calculează suma a două intervale de timp exprimate
în ore, minute şi secunde.
Exemplu: pentru t1=5 ore 45 min 36 secunde şi
t2=1 ora 30 min 30 secunde
se va afişa: 7 ore 16 min 6 secunde.


Răspuns :

Răspuns:

Pentru a rezolva această problemă, putem defini o structură pentru timp care să conțină trei câmpuri pentru ore, minute și secunde. Apoi, putem citi cele două intervale de timp, să le adunăm și să afișăm rezultatul. Iată un exemplu de cod în C++:

```cpp

#include <iostream>

using namespace std;

// Definim o structură pentru timp

struct Timp {

int ore;

int minute;

int secunde;

};

// Functie pentru adunarea a doua intervale de timp

Timp adunaTimp(Timp t1, Timp t2) {

Timp rezultat;

// Adunăm secundele și ajustăm minutele și orele

rezultat.secunde = (t1.secunde + t2.secunde) % 60;

int transportSecunde = (t1.secunde + t2.secunde) / 60;

// Adunăm minutele și ajustăm orele

rezultat.minute = (t1.minute + t2.minute + transportSecunde) % 60;

int transportMinute = (t1.minute + t2.minute + transportSecunde) / 60;

// Adunăm orele

rezultat.ore = t1.ore + t2.ore + transportMinute;

return rezultat;

}

int main() {

// Declaram si citim cele doua intervale de timp

Timp t1, t2;

cout << "Introduceti intervalul de timp t1 (ore minute secunde): ";

cin >> t1.ore >> t1.minute >> t1.secunde;

cout << "Introduceti intervalul de timp t2 (ore minute secunde): ";

cin >> t2.ore >> t2.minute >> t2.secunde;

// Adunam cele doua intervale de timp

Timp rezultat = adunaTimp(t1, t2);

// Afisam rezultatul

cout << "Suma celor doua intervale de timp este: "

<< rezultat.ore << " ore "

<< rezultat.minute << " minute "

<< rezultat.secunde << " secunde." << endl;

return 0;

}

```

Acest program începe prin declararea unei structuri `Timp` care conține trei câmpuri pentru ore, minute și secunde. Apoi, definește o funcție `adunaTimp` care primește două structuri de timp și returnează suma lor. În funcția `main`, se citesc cele două intervale de timp, se adună și se afișează rezultatul.

Cel mai simplu ar fi sa convertim toate duratele in secunde, sa adunam, apoi sa convertim inapoi la ore, minute, secunde:

#include <iostream>

using namespace std;

int main(){

   // Definirea variabilelor pentru primele interval de timp

   int t1_ore, t1_minute, t1_secunde;

   // Definirea variabilelor pentru al doilea interval de timp

   int t2_ore, t2_minute, t2_secunde;

   // Citirea primului interval de timp

   cout << "Introduceti prima perioada de timp (ore minute secunde): ";

   cin >> t1_ore >> t1_minute >> t1_secunde;

   // Citirea celui de-al doilea interval de timp

   cout << "Introduceti a doua perioada de timp (ore minute secunde): ";

   cin >> t2_ore >> t2_minute >> t2_secunde;

   // Convertirea intervalului de timp în secunde

   int total_secunde_t1 = t1_ore * 3600 + t1_minute * 60 + t1_secunde;

   int total_secunde_t2 = t2_ore * 3600 + t2_minute * 60 + t2_secunde;

   // Calculul sumei totale a intervalului de timp în secunde

   int suma_totala_secunde = total_secunde_t1 + total_secunde_t2;

   // Calculul intervalului de timp rezultat în ore, minute și secunde

   int ore_rezultat = suma_totala_secunde / 3600;

   int minute_rezultat = (suma_totala_secunde % 3600) / 60;

   int secunde_rezultat = suma_totala_secunde % 60;

   // Afisarea rezultatului

   cout << "Suma celor doua intervale de timp este: " << ore_rezultat << " ore " << minute_rezultat << " minute " << secunde_rezultat << " secunde." << endl;

}

Vezi imaginea ANDREI750238