Boa tarde, fiz este código, que já está fazendo seus cálculos corretamente. Ele funcioname corretamente caso o usuário insira os dados digitando-os, mas se ele fizer um arquivo com as entradas, o programa irá ficar repetindo o cálculo para a última linha da entrada. Alguém sabe como resolver isso? Agradeço a atenção.
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> struct data { int dia; int mes; int ano; }; int Quociente (int D) { int Q; Q = D/4; return Q; } int Trunca (float V) { int T; T = (int)(2.6 * V - 0.1); return T; } int Resto (int Dv) { int R; R = Dv%7; return R; } int main() { int diasem, mes; struct data DataEnt; scanf("%d %d %d", &DataEnt.dia, &DataEnt.mes, &DataEnt.ano); while(1) { scanf("%d %d %d", &DataEnt.dia, &DataEnt.mes, &DataEnt.ano); if(DataEnt.dia == 0 && mes == 0 && DataEnt.ano == 0) break; else { if(DataEnt.mes > 2) mes = DataEnt.mes - 2; else mes = DataEnt.mes + 10; diasem = Resto( Trunca(mes) + DataEnt.dia + (DataEnt.ano%100) + Quociente(DataEnt.ano%100) + Quociente(DataEnt.ano/100) - 2 * (DataEnt.ano/100)); if(diasem < 0) diasem += 7; switch (diasem) { case 0: printf("%02d/%02d/%d: Domingo\n", DataEnt.dia, DataEnt.mes, DataEnt.ano); break; case 1: printf("%02d/%02d/%d: Segunda-Feira\n", DataEnt.dia, DataEnt.mes, DataEnt.ano); break; case 2: printf("%02d/%02d/%d: Terca-Feira\n", DataEnt.dia, DataEnt.mes, DataEnt.ano); break; case 3: printf("%02d/%02d/%d: Quarta-Feira\n", DataEnt.dia, DataEnt.mes, DataEnt.ano); break; case 4: printf("%02d/%02d/%d: Quinta-Feira\n", DataEnt.dia, DataEnt.mes, DataEnt.ano); break; case 5: printf("%02d/%02d/%d: Sexta-Feira\n", DataEnt.dia, DataEnt.mes, DataEnt.ano); break; case 6: printf("%02d/%02d/%d: sábado\n", DataEnt.dia, DataEnt.mes, DataEnt.ano); break; } } } return 0; }