Perch questo codice funziona solo con dae con giorno mese e anno diversi e se sono uguali non funziona?
#include <stdio.h>
#include <stdlib.h>
struct date{
int giorno;
int mese;
int anno;
};
void calcolo_data_remota(struct date []);
int main(){
/**
Utilizzare la struttura date dell'esercizio 2. Popolare un vettore di date, quindi visualizzarlo.
Scrivere una funzione che determini la data più remota e quella più recente; scrivere un’altra
funzione che, presa in ingresso la data, la converta in un numero da 1 a 366 in base a quanti
giorni sono trascorsi dal primo gennaio; infine, scrivere una terza funzione che prende due
elementi qualsiasi dell’array e li scambia tra loro.
**/
struct date data[3];
int i;
for(i=0; i<3; i++){
printf("Inserire giorno: ");
scanf("%d", &data[i].giorno);
printf("Inserire mese: ");
scanf("%d", &data[i].mese);
printf("Inserire anno: ");
scanf("%d", &data[i].anno);
}
for(i=0; i<3; i++){
printf("\n%d/%d/%d", data[i].giorno, data[i].mese, data[i].anno);
}
calcolo_data_remota(data);
return 0;
}
void calcolo_data_remota(struct date data[]){
struct date data_remota;
int scelta;
if (data[1].anno != data[2].anno && data[2].anno != data[3].anno && data[1].anno != data[3].anno){
scelta = 0;
}
else
if (data[1].anno == data[2].anno && data[2].anno == data[3].anno){
scelta = 1;
}
else{
if (data[1].anno == data[2].anno && data[2].anno == data[3].anno && data[1].mese == data[2].mese && data[2].mese == data[3].mese)
scelta = 2;
}
switch(scelta){
case 0:
if (data[1].anno <= data[2].anno && data[1].anno <= data[3].anno){
data_remota = data[1];
}
else
if (data[2].anno <= data[1].anno && data[2].anno <= data[3].anno){
data_remota = data[2];
}
else
if (data[3].anno <= data[1].anno && data[3].anno <= data[2].anno){
data_remota = data[3];
}
case 1:
if (data[1].mese <= data[2].mese && data[1].mese <= data[3].mese){
data_remota = data[1];
}
else
if (data[2].mese <= data[1].mese && data[2].mese <= data[3].mese){
data_remota = data[2];
}
else
if (data[3].mese <= data[1].mese && data[3].mese <= data[2].mese){
data_remota = data[3];
}
case 2:
if (data[1].giorno <= data[2].giorno && data[1].giorno <= data[3].giorno){
data_remota = data[1];
}
else
if (data[2].giorno <= data[1].giorno && data[2].giorno <= data[3].giorno){
data_remota = data[2];
}
else
if (data[3].giorno <= data[1].giorno && data[3].giorno <= data[2].giorno){
data_remota = data[3];
}
}
printf("\nLa data piu' remota e' %d/%d/%d", data_remota.giorno, data_remota.mese, data_remota.anno);
}