Olá!
Estou criando um programa em C, é uma atividade do meu curso, e nesse programa, o usuário irá informar um mês e um ano, e a partir daí, eu preciso imprimir esse determinado mês desse determinado ano, como a folha de um mês, com os dias e tal.
O ano base que eu preciso usar é 1970, o qual o dia 01/01/1970 é uma quinta-feira.
Nesse programa, eu já fiz a a parte da contagem de anos bissextos e tal. Porém, tem uma parte que eu estou travado, é onde eu preciso calcular quando foi o dia 01/01 do ano que o usuário irá digitar, para fazer a contagem e determinar como eu irei imprimir o mes q ele digitar, pois tem a questão do espaçamento e de q em qual dia da semana será o dia 1 desse mes.
Eu não posso usar switch, nem outras funções diferentes das q estão sendo usadas ali.
Eu separei o código por etapas, para ir fazendo aos poucos, pois eu sou iniciante.
Por enquanto, o meu código está assim (algumas partes estão apenas com números de exemplo, apenas para testes):
#include <stdio.h>
#include <math.h>
int main(){
int ano_inicial = 1970; // ano inicial/ano base
int mes_entrada = 0, ano_entrada = 0; // dados fornecidos pelo usuário
int quant_anoBissexto = 0; // contador de ano bissexto
int quant_anoNaoBissexto = 0; // contador de ano não bissexto
int ehBissexto = 0; // identificar se o ano digitado eh bissexto
int dias = 0; // quantidade de dias no mes
// receber as informações do usuário (mes e ano)
scanf("%d %d",&mes_entrada, &ano_entrada);
// saber a quantidade de anos bissextos e não bissextos entre o ano digitado e o ano de 1970
for(int i = ano_inicial; i <= ano_entrada; i++){
if((i%400 == 0)||(i%4 == 0)&&(i%100 !=0)){
quant_anoBissexto++;
}else{
quant_anoNaoBissexto++;
}
}
// saber se o ano digitado eh bissexto
if((ano_entrada%400 == 0)||(ano_entrada%4 == 0)&&(ano_entrada%100 !=0)){
ehBissexto = 1;
}else{
ehBissexto = 0;
}
// declarando a quantidade de dias de cada mes
if(mes_entrada==12){ //dezembro
dias = 31;
}else if(mes_entrada==11){ // novembro
dias = 30;
}else if(mes_entrada==10){ // outubro
dias = 31;
}else if(mes_entrada==9){ // setembro
dias = 30;
}else if(mes_entrada==8){ // agosto
dias = 31;
}else if(mes_entrada==7){ // julho
dias = 31;
}else if(mes_entrada==6){ // junho
dias = 30;
}else if(mes_entrada==5){ // maio
dias = 31;
}else if(mes_entrada==4){ // abril
dias = 30;
}else if(mes_entrada==3){ // marco
dias = 31;
}else if((mes_entrada==2)&&(ehBissexto != 0)){ // fevereiro bissexto
dias = 29;
}else if((mes_entrada==2)&&(ehBissexto == 0)){ // fevereiro não bissexto
dias = 28;
}else if(mes_entrada==1) // janeiro
dias = 31;
// saber qual dia da semana cai o 1 dia do ano digitado
//
// para imprimir o mes e o ano digitado
if(ano_entrada = 1){
printf("Janeiro %d",ano_entrada);
}else if(ano_entrada = 2){
printf("Fevereiro %d",ano_entrada);
}else if(ano_entrada = 3){
printf("Marco %d",ano_entrada);
}else if(ano_entrada = 4){
printf("Abril %d",ano_entrada);
}else if(ano_entrada = 5){
printf("Maio %d",ano_entrada);
}else if(ano_entrada = 6){
printf("Junho %d",ano_entrada);
}else if(ano_entrada = 7){
printf("Julho %d",ano_entrada);
}else if(ano_entrada = 8){
printf("Agosto %d",ano_entrada);
}else if(ano_entrada = 9){
printf("Setembro %d",ano_entrada);
}else if(ano_entrada = 10){
printf("Outubro %d",ano_entrada);
}else if(ano_entrada = 11){
printf("Novembro %d",ano_entrada);
}else if(ano_entrada = 12)
printf("Dezembro %d",ano_entrada);
// para imprimir o calendario
int d=1, inicio=4//exemplo;
printf("do se te qu qu se sa\n");
// imprimir os espacos em branco
for(int i=0; i<inicio; i++){
printf(" ");
}
// imprimir os dias
for(int i=1; i<=5; i++){ // semanas
for(int j=1; j<=7; j++){ // dias da semana
if(d<=30){ //exemplo
printf("%2d ",d);
d++;
}
}
printf("\n");
}
return 0;
} //fecha função main()
Preciso imprimir algo assim: