Così, giusto per provare ho provato a fare così:
#include <iostream>
#include <cstdlib>
using namespace std;
int calcoloDiff(int giorniSTot, int giorniPTot)
{
int differenzaG;
if (giorniPTot > giorniSTot)
differenzaG = giorniPTot - giorniSTot;
else
differenzaG = giorniSTot - giorniPTot;
return differenzaG;
}
int main()
{
int mese, giorno, giorniMese = 0;
cout << "Primo giorno e mese: ";
cin >> giorno >> mese;
#pragma region primoMese
switch (mese)
{
case 1:
giorniMese = giorniMese + 31;
case 2:
giorniMese = giorniMese + 28;
case 3:
giorniMese = giorniMese + 31;
case 4:
giorniMese = giorniMese + 30;
case 5:
giorniMese = giorniMese + 31;
case 6:
giorniMese = giorniMese + 30;
case 7:
giorniMese = giorniMese + 31;
case 8:
giorniMese = giorniMese + 31;
case 9:
giorniMese = giorniMese + 30;
case 10:
giorniMese = giorniMese + 31;
case 11:
giorniMese = giorniMese + 30;
case 12:
giorniMese = giorniMese + 31;
}
#pragma endregion primoMese
int giorniPTot = giorniMese - giorno;
cout << "Secondo giorno e mese: ";
cin >> giorno >> mese;
giorniMese = 0;
#pragma region secondoMese
switch (mese)
{
case 1:
giorniMese = giorniMese + 31;
case 2:
giorniMese = giorniMese + 28;
case 3:
giorniMese = giorniMese + 31;
case 4:
giorniMese = giorniMese + 30;
case 5:
giorniMese = giorniMese + 31;
case 6:
giorniMese = giorniMese + 30;
case 7:
giorniMese = giorniMese + 31;
case 8:
giorniMese = giorniMese + 31;
case 9:
giorniMese = giorniMese + 30;
case 10:
giorniMese = giorniMese + 31;
case 11:
giorniMese = giorniMese + 30;
case 12:
giorniMese = giorniMese + 31;
}
#pragma endregion secondoMese
int giorniSTot = giorniMese - giorno;
cout << calcoloDiff(giorniSTot, giorniPTot) << endl;
system("pause");
return 0;
}
Cosa cambia? Se metto per esempio giorniMese = 30, 31 ecc... la differenza non è mai giusta e poi senza break non esegue anche le istruzioni che vengono dopo? Voglio dire, se io metto 1 gennaio e 31 dicembre è giusto che vengano eseguite tutte le istruzioni fino a far arrivare giorniMese a 364, ma se io metto per esempio aprile non arriva sempre a 364?