Ir para conteúdo
Fórum Script Brasil
  • 0

PROBLEMA COM PONTEIROS - AJUDA


Arduin

Pergunta

 

///Bom dia galera! Estou rodando este script e estou tendo problema para editar o dias solicitados. Podem me ajudar?

///Obrigado!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TRUE 1
#define FALSE 0
#define TTT 2

typedef struct
{
float temp, press;
int chuva, mm_prec, edi;
char nome[200];
}eventos_atm;

void ler_eve(eventos_atm *est) {
printf("Digite o nome do Coletor:\n");
fflush(stdin);
gets(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);


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 %i", i);
     ler_eve(&est);
}

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[TTT];
int i, valor;


for (i=0; i<TTT; i++) {
    printf("Dia %i\n\n", i+1);
    ler_eve(&vetor);
}

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 - 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 %d", i, vetor[mm_prec);
        printf("\n");
     break;

     case 4 :
        printf ("******************* Obrigado!!!*******************\n\n");
     break;

    default :
       printf ("Valor invalido!\n");
  }}while(valor != 4);

}

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
///Obrigado!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TRUE 1
#define FALSE 0
#define TTT 2

typedef struct {
    float temp, press;
    int chuva, mm_prec, edi;
    char nome[200];
} eventos_atm;

void ler_eve ( eventos_atm *est ) {
    printf ( "Digite o nome do Coletor:\n" );
    fflush ( stdin );
    gets ( 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 );
    
    
    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 %i", i );
    ler_eve ( est );
}

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[TTT];
    int i, valor;
    
    
    for ( i = 0; i < TTT; i++ ) {
        printf ( "Dia %i\n\n", i + 1 );
        ler_eve ( &vetor[i] );
    }
    
    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 - 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 );
                if ( i > 0 && i < 8 ){
                    exi_eve ( vetor[i - 1] );
                }else{
                    printf("O valor está fora do intervalo permitido.");
                }
                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 %d", i, vetor[i].mm_prec );
                printf ( "\n" );
                break;
                
            case 4 :
                printf ( "******************* Obrigado!!!*******************\n\n" );
                break;
                
                default :
                printf ( "Valor invalido!\n" );
        }
    } while ( valor != 4 );
    
}

Se tiver alguma duvida pergunte

Link para o comentário
Compartilhar em outros sites

  • 0
20 minutos atrás, vangodp disse:

///Obrigado!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TRUE 1
#define FALSE 0
#define TTT 2

typedef struct {
    float temp, press;
    int chuva, mm_prec, edi;
    char nome[200];
} eventos_atm;

void ler_eve ( eventos_atm *est ) {
    printf ( "Digite o nome do Coletor:\n" );
    fflush ( stdin );
    gets ( 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 );
    
    
    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 %i", i );
    ler_eve ( est );
}

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[TTT];
    int i, valor;
    
    
    for ( i = 0; i < TTT; i++ ) {
        printf ( "Dia %i\n\n", i + 1 );
        ler_eve ( &vetor[i] );
    }
    
    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 - 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 );
                if ( i > 0 && i < 8 ){
                    exi_eve ( vetor[i - 1] );
                }else{
                    printf("O valor está fora do intervalo permitido.");
                }
                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 %d", i, vetor[i].mm_prec );
                printf ( "\n" );
                break;
                
            case 4 :
                printf ( "******************* Obrigado!!!*******************\n\n" );
                break;
                
                default :
                printf ( "Valor invalido!\n" );
        }
    } while ( valor != 4 );
    
}

Se tiver alguma duvida pergunte

Oi! Mas continua lendo a função edi_eve, ele dá problema em acessar a memória...

Link para o comentário
Compartilhar em outros sites

  • 0
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." );
    }
}

Pensei que você iria arrumar o resto >_<, mas parece que você nem tentou.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...