Ir ao conteúdo
  • Cadastre-se

C Imprimir meses na tela


yasmim7
Ir à solução Resolvido por devair1010,

Posts recomendados

Preciso fazer um programa que analise quantos ml de água tem um reservatório em 1 ano, mas que leve em consideração o quanto foi gasto e o quanto de chuva foi capturado dos meses anteriores, para depois dizer quais meses o reservatório ficou cheio, esvaziou, ou não aconteceu nada.

Consegui salvar os dados de cada mês separadamente e fazer a conta de quanta água tem no reservatório cada mês (levando as considerações acima e fazendo todas as contas certinhas).

O problema é que não consigo escrever na tela para o usuário quais meses o reservatório ficou cheio, esvaziou ou ficou normal. Preciso de ajuda por que não entendo de programação e é de um trabalho de faculdade que vale 30% da  minha nota.

 

No meu projeto o reservatório tem limite máximo de 30ml.

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#define TOTAL 12

int main()
{
	setlocale(LC_ALL, "portuguese");

	int jan,fev,mar,abr,mai,jun,jul,ago,set,out,nov,dez, c, x, y, cont, cont_v = 0, cont_c = 0, cont_n = 0;
	int vetor[12], Vazio[12], cheio[12], normal[12];
	cont = 0;
	char meses[TOTAL] [20];

	strcpy_s(meses [1],"Janeiro" );
	strcpy_s(meses[2], "Fevereiro");
	strcpy_s(meses[3], "Março");
	strcpy_s(meses[4], "Abril");
	strcpy_s(meses[5], "Maio");
	strcpy_s(meses[6], "Junho");
	strcpy_s(meses[7], "Julho");
	strcpy_s(meses[8], "Agosto");
	strcpy_s(meses[9], "Setembro");
	strcpy_s(meses[10], "Outubro");
	strcpy_s(meses[11], "Novembro");
	strcpy_s(meses[12], "Dezembro");


	printf(" O reservatório de Água possui 30ml de limite!\n");

		for (int i = 0; i <= TOTAL; i++)
		{
		
			switch (i)
			{
			case 1: i == 1;
				puts(meses[1]);
				printf("No mês Janeiro o reservatório estava vazio, e os os milimetros de chuva daqueles mês foram: 30mm\n", i);
				printf("Insira os milimetros que foram gastos no mês de Janeiro\n", i);
				scanf_s("%d", &x);
				jan = 30 - x;
				vetor[cont] = jan;
				cont++;
				printf("No mês de janeiro o reservatório ficou com:\t");
				printf("%int\n", jan);
				break;
			case 2: i == 2;
				puts(meses[2]);
				printf("No mês %i os milimetros de chuva foram de: 15mm\n", i);
				printf("Insira os milimetros que foram gastos no mês %i\n", i);
				scanf_s("%d", &x);
				fev = jan + 15 - x;
				printf("%int\n", fev);
				vetor[cont] = fev;
				cont++;
				break;
			case 3: i == 3;
				puts(meses[3]);
				printf("No mês %i os milimetros de chuva foram de: 20mm\n", i);
				printf("Insira os milimetros que foram gastos no mês %i\n", i);
				scanf_s("%d", &x);
				mar = fev + 20 - x;
				printf("%int\n", mar);
				vetor[cont] = mar;
				cont++;
				break;
			case 4: i == 4;
				puts(meses[4]);
				printf("No mês %i os milimetros de chuva foram de: 2mm\n", i);
				printf("Insira os milimetros que foram gastos no mês %i\n", i);
				scanf_s("%d", &x);
				abr = mar + 2 - x;
				printf("%int\n", abr);
				vetor[cont] = abr;
				cont++;
				break;

			case 5: i == 5;
				puts(meses[5]);
				printf("No mês %i os milimetros de chuva foram de: 4mm\n", i);
				printf("Insira os milimetros que foram gastos no mês %i\n", i);
				scanf_s("%d", &x);
				mai = abr + 4 - x;
				printf("%int\n", mai);
				vetor[cont] = mai;
				cont++;
				break;
			case 6: i == 6;
				puts(meses[6]);
				printf("No mês %i os milimetros de chuva foram de: 0mm\n", i);
				printf("Insira os milimetros que foram gastos no mês %i\n", i);
				scanf_s("%d", &x);
				jun = mai - x;
				printf("%int\n", jun);
				vetor[cont] = jun;
				cont++;
				break;
			case 7: i == 7;
				puts(meses[7]);
				printf("No mês %i os milimetros de chuva foram de: 10mm\n", i);
				printf("Insira os milimetros que foram gastos no mês %i\n", i);
				scanf_s("%d", &x);
				jul = jun + 10 - x;
				printf("%int\n", jul);
				vetor[cont] = jul;
				cont++;
				break;
			case 8: i == 8;
				puts(meses[8]);
				printf("No mês %i os milimetros de chuva foram de: 7mm\n", i);
				printf("Insira os milimetros que foram gastos no mês %i\n", i);
				scanf_s("%d", &x);
				ago = jul + 7 - x;
				printf("%int\n", ago);
				vetor[cont] = ago;
				cont++;
				break;
			case 9: i == 9;
				puts(meses[9]);
				printf("No mês %i os milimetros de chuva foram de: 9mm\n", i);
				printf("Insira os milimetros que foram gastos no mês %i\n", i);
				scanf_s("%d", &x);
				set = ago + 9 - x;
				printf("%int\n", set);
				vetor[cont] = set;
				cont++;
				break;
			case 10: i == 10;
				puts(meses[10]);
				printf("No mês %i os milimetros de chuva foram de: 20mm\n", i);
				printf("Insira os milimetros que foram gastos no mês %i\n", i);
				scanf_s("%d", &x);
				out = set + 20 - x;
				printf("%int\n", out);
				vetor[cont] = out;
				cont++;
				break;
			case 11: i == 11;
				puts(meses[11]);
				printf("No mês %i os milimetros de chuva foram de: 6mm\n", i);
				printf("Insira os milimetros que foram gastos no mês %i\n", i);
				scanf_s("%d", &x);
				nov = out + 6 - x;
				vetor[cont] = nov;
				cont++;
				printf("%int\n", nov);
				break;
			case 12: i == 12;
				puts(meses[12]);
				printf("No mês %i os milimetros de chuva foram de: 21mm\n", i);
				printf("Insira os milimetros que foram gastos no mês %i\n", i);
				scanf_s("%d", &x);
				dez = nov + 21 - x;
				vetor[cont] = dez;
				cont++;
				printf("%int\n", dez);
				break;

		

			}

		}

		


	
	
	system("pause");
	return 0;
};

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Acho que não devia se preocupar com a programação antes dos dados. 

 

Escreva seu programa em torno dos dados.

 

Você tem uma ideia do que quer mostrar? Em geral as telas hoje em dia são no formato 16:9 como as TV. Saindo de um formato 4:3 que durou décadas.

 

Então se você tem os dados e uma ideia do que quer apresentar, podia escrever isso em uma planilha ou slide usando um desses programas de apresentação, como os do Google --- Planilhas e Apresentações são dois desses programas. que são grátis e rodam em qualquer navegador, e montar um protótipo com os dados. A partir daí fica muito mais fácil escrever um programa. Use esse formato no planilha ou no Slide para ir distribuindo os dados na tela

 

Uma parte da tela podia ter a série histórica, com cores mostrando a tendência. Uma linha de tendência, os dados de capação e tal. Cores podem também mostrar a tendência dos índices de captação em relação à media.

 

Sobre o programa

 

Acho que não devia usar um menu ou ficar lendo dados da tela. É muito chato pra quem vai usar. Leia de um arquivo. é muito mais simples.

 

Não precisa escrever tudo isso:

	strcpy_s(meses [1],"Janeiro" );
	strcpy_s(meses[2], "Fevereiro");
	strcpy_s(meses[3], "Março");
	strcpy_s(meses[4], "Abril");
	strcpy_s(meses[5], "Maio");
	strcpy_s(meses[6], "Junho");
	strcpy_s(meses[7], "Julho");
	strcpy_s(meses[8], "Agosto");
	strcpy_s(meses[9], "Setembro");
	strcpy_s(meses[10], "Outubro");
	strcpy_s(meses[11], "Novembro");
	strcpy_s(meses[12], "Dezembro");

Pode usar assim

    const char* _mes[12] =
    { "Janeiro", "Fevereiro", "Marco", "Abril",
        "Maio", "Junho", "Julho", "Agosto",
        "Setembro", "Outubro", "Novembro", "Dezembro"
    };

Mais simples e em tempo de compilação. Não há razão para chamar uma função strcpy_s() para carregar valores que já conhece em um vetor A CADA VEZ QUE RODAR SEU PROGRAMA. Não faz sentido.

 

Veja esses dados de exemplo da SABESP da minha cidade

 

http://mananciais.sabesp.com.br/Situacao

sabesp.png.956220e0d84629b73a1360e4a7e34f91.png

 

Algo assim mais um gráfico talvez ;) ia parecer sério

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@yasmim7 @yasmim7     você quer escrever se o total de ML de chuva de cada mês e se o reservatório está   cheio   vazio ou com a mesma quantidade do mês anterior ,  então você pode usar vetores para facilitar , e seu código com algumas modificações poderia ser assim   :

#include <stdio.h>     // biblioteca de entrada e saida de dados
#include <locale.h>    // biblioteca para idioma
#include <string.h>    // biblioteca para usar string e funções afim
#define TOTAL 12       // valor fixo
int main(){
    setlocale(LC_ALL, "portuguese");// idioma portugues Brasil
    int x,reservatorio=0,           // variáveis
        ml_chuva[12]={
            30,15,20,2,4,0,
            10,7,9,20,6,21
        },r_ant,i;
    char meses[TOTAL][20]={         // matriz de char preenchida
        "Janeiro"  ,
        "Fevereiro",
        "Março"    ,
        "Abril"    ,
        "Maio"     ,
        "Junho"    ,
        "Julho"    ,
        "Agosto"   ,
        "Setembro" ,
        "Outubro"  ,
        "Novembro" ,
        "Dezembro"
    } ;
    printf(" O reservatório de Água possui 30ml de limite!\n");                            // limite do reservatorio
    printf("No mês Janeiro o reservatório estava vazio .\n\n");                            // vazio igual a zero
    for( i=0; i<TOTAL; i++ ){                                                              // totoal de meses
        printf("No mês %s os milimetros de chuva foram de : %d mm\n",meses[i],ml_chuva[i]);// quantidade de chuva
        r_ant = reservatorio;                                                              // r_ant igual ao conteudo do reservatorio
        reservatorio += ml_chuva[i];                                                       // o reservatorio recebe os ml de chuva desse mês
        printf("Insira os milimetros que foram gastos no mês %s ",meses[i]);               // quanto gastou
        scanf("%d",&x);                                                                    // pega a quantidade gasta
        reservatorio -= x;                                                                 // reservatorio perdeu essa quantidade de agua gasta
        printf("Em %s O Reservatorio Ficou Com %d ML . ",meses[i],reservatorio);           // escreve o Mês e a quantidade de agua desse mês
        if(reservatorio >= 30)printf("Cheio !");                                           // se no reservator tem mais de 30 ML então está cheio
        else                                                                               // senão
            if(reservatorio == r_ant )printf("Normal !");                                  // se reservatorio igual ao que tinha no mês passado ,
                                                                                           // então quantidade normal
            else                                                                           // senão
                if(reservatorio <= 0 )printf("Vazio !");                                   // se reservatori for zero ou negativo , então está vazio
        printf("\n\n");                                                                    // pula duas linhas na tela
    }
    system("pause");                                                                       // espera até pressionar alguma tecla
    return 32768;                                                                          // retorna para o windows
};

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!