Program error C, vector store;

Asked

Viewed 119 times

3

Good evening, I’m doing a program in c that should read 20 entries with data of interviewees.

I managed to elaborate everything, but in the matter of reading this data I have a strange error... (It may be the Turbo C thing)...

In short, I can enter some records and after that falls back to the program menu... (Enter an option...)

My doubts are:

  • This is the best way to store data entry?
  • What I did wrong?

This is the script:

#include <stdio.h>
#include <iostream.h>
#include <conio.h>

/*
    - Nome (máximo de 30 caracteres).
    - Idade.
    - Sexo.
    - Quantidade de filhos.
    - Renda mensal familiar.
*/
    struct infoPessoa{
        char nome[30];
        char sexo;
        int idade;
        int nFilhos;
        float renda_familiar;
    };

    // erro estupido por não encontrar referencia...
    void dummy()
    {
        float f,*fp;
        fp=&f;
    }

    void main ()
    {
        // declaração de variaveis
        const int tamanho=20;
        char opcao;
        int i, escolha_valida;
        int saida = 0;
        infoPessoa entrevistados[tamanho]; // 20 pessoas. 

        while( saida == 0 ) {
            escolha_valida = 0;
            while( escolha_valida == 0 ) {
                printf("C - Cadastrar entrevistados:\nL - Listar entrevistados:\nR - Relatorios:\nS - Sair:\n");
                printf("Digite a opcao:\n");
                scanf("   %c", &opcao );
                if((opcao=='C') || (opcao=='L') || (opcao=='R') || (opcao=='S'))
                    escolha_valida = 1;
                else
                    printf("\007Erro. Opcao do menu invalida.\n");
            }

            switch( opcao ) {
                case 'C' :
                    clrscr();

                    for (i=0; i<20; i++)
                    {
                        printf("Digite o nome do entrevistado %d:\n", i+1 );
                        scanf(" %s",entrevistados[i].nome);

                        printf("Digite o sexo (M) OU (F):\n");
                        scanf(" %c", entrevistados[i].sexo);

                        printf("Digite a idade:\n");
                        scanf(" %d", entrevistados[i].idade);

                        printf("Quantos filhos?:\n");
                        scanf(" %d", entrevistados[i].nFilhos);

                        printf("Valor da renda familiar:\n");
                        scanf(" %f", entrevistados[i].renda_familiar);
                    }
                    break;

                case 'L' :
                    clrscr();


                    break;
                case 'R' :

                    /*
                        Com base nos dados coletados, apresente na tela as seguintes informações:
                        - Percentual de mulheres e homens.
                        - Número de pessoas que ganham acima de 500.00 (quinhentos reais).
                        - Percentual de pessoas que tem ao menos 1 filho.
                        - Número de pessoas que nasceram a partir do ano 2000.
                    */
                    break;
                case 'S': saida = 1; break;
            }
        }
    }   

1 answer

5


In C doesn’t have the library iostream, then use only the stdio.h.

The statement of entrevistados is wrong, as is a struct, should state how

struct infoPessoa entrevistados[tamanho];

The repetition while( escolha_valida == 0 ) is redundant, should not have this line in the code.

Where are you using scanf there should be no space inside the quotation marks:

scanf(" %d", &n) // Errado
scanf("%d", &n) // Correto

You didn’t put the & in reading the char, of int and of float. The string should not have the &.

For the system to read character for sex, use a \n before the %c.

scanf("\n%c", &entrevistados[i].sexo);

Browser other questions tagged

You are not signed in. Login or sign up in order to post.