Prezados,
Estou tentando salvar os dias bons em um vetor chamado dias_bons e dias ruins em um vetor chamado de dias_ruins.
Entretando, não consegui imprimir os valores na função "do".
O problema é que só está salvando o último vetor rrodado.
Alguém pode ajudar?
Grato!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TRUE 1
#define FALSE 0
typedef struct
{
float temp, press;
int chuva, mm_prec, dia_bom, dia_ruim, neblina;
char nome[200];
}eventos_atm;
void ler_eve(eventos_atm *est) {
printf("Digite o nome do Coletor:\n");
scanf("%s", &est->nome);
printf("Qual a temperatura:\n");
scanf("%f",&est->temp);
printf("Qual a pressao atmosferica:\n");
scanf("%f",&est-> press);
printf("Houve chuva?\n1 para sim e 0 para não.\n");
scanf("%d",&est->chuva);
printf("Houve neblina?\n1 para sim e 0 para não\n");
scanf("%d", &est->neblina);
if (est->chuva == TRUE) {
printf("Quantos mm de precipitacao:\n");
scanf("%d",&est->mm_prec);
}
else if( est->chuva >= '3') {
printf("Valor invalido...\nEditar conteudo com o valor correto.\n\n");
}
}
void edit_eve ( eventos_atm *est ) {
int i;
printf ( "Qual dia a ser editado:\nEntre 1 e 2.\n" );
scanf ( "%d", &i );
printf ( "Dia %d\n", i );
if ( i > 0 && i < 8 ) {
ler_eve ( &est[i-1] );
} else{
printf ( "O valor está fora do intervalo permitido." );
}
}
void exi_eve (eventos_atm *est) {
printf("nome: %s\n", est->nome);
printf("temperatura: %.2f\n", est->temp);
printf("pressao: %.2f\n", est->press);
printf("mm_prec: %d\n", est->mm_prec);
printf("\n");
}
int main() {
eventos_atm *vetor, *dias_bons, *dias_ruins;
int i, valor, dias, dr, db;
printf("Quantos dias deseja gravar na memoria?\n");
scanf("%i", &dias);
vetor=(eventos_atm*)malloc(sizeof(eventos_atm)*dias);
dr = 0;
db = 0;
for (i=0; i<dias; i++) {
printf("Dia %i\n\n", i+1);
ler_eve(&vetor[i]);
if (vetor[i].chuva==TRUE || vetor[i].neblina == TRUE) {
dr = dr+1;
}
else {
db = db+1;
}
}
dias_bons=(eventos_atm*)malloc(sizeof(eventos_atm)*db);
dias_ruins=(eventos_atm*)malloc(sizeof(eventos_atm)*dr);
for (i=0; i<dias; i++) {
if (vetor[i].chuva==TRUE || vetor[i].neblina == TRUE) {
dias_ruins = &vetor[i];
}
else{
dias_bons = &vetor[i];
}
}
free(vetor);
free(dias_bons);
free(dias_ruins);
do
{
printf("Escolha uma das opcoes: \n");
printf("1 - Editar dia\n");
printf("2 - Exibir dia\n");
printf("3 - Exibir mm precipit\n");
printf("4 - Exibir dias bons\n");
printf("5 - Exibir dias ruins\n");
printf("6 - Exibir vetores bom\n");
printf("7 - Exibir vetor ruins\n");
printf("8 - Sair\n");
scanf("%d", &valor);
printf("\n");
switch (valor)
{
case 1 :
edit_eve(&vetor[0]);
break;
case 2 :
printf("Qual dia para exibir? [1-7]\n");
scanf("%d", &i);
printf("Dia %d\n", i);
exi_eve(&vetor[i-1]);
break;
case 3 :
printf("Qual dia para ver quantidade de mm de precipitacao? [1-7]\n");
scanf("%d", &i);
printf("Dia %d\n", i);
printf("A precipitacao no dia %d foi de\n", i);
printf("\n");
break;
case 4 :
printf("O numero de dias bons são: %d\n\n", db);
break;
case 5 :
printf("O numero de dias ruins são: %d\n\n", dr);
break;
case 6:
for (i=0; i<db; i++ )
printf("nome: %s\n", dias_bons[i].nome);
printf("temperatura: %.2f\n", dias_bons[i].temp);
printf("pressao: %.2f\n", dias_bons[i].press);
printf("mm_prec: %d\n", dias_bons[i].mm_prec);
printf("\n");
break;
case 7:
for (i=0; i<dr; i++ )
printf("nome: %s\n", dias_ruins[i].nome);
printf("temperatura: %.2f\n", dias_ruins[i].temp);
printf("pressao: %.2f\n", dias_ruins[i].press);
printf("mm_prec: %d\n", dias_ruins[i].mm_prec);
printf("\n");
break;
case 8 :
printf ("******************* Obrigado!!!*******************\n\n");
break;
default :
printf ("Valor invalido!\n");
}}while(valor != 8);
}