Programming exercise C

Asked

Viewed 174 times

-1

I made a structure in c that receives : code, age and marital status... How to make him count the number of singles, married and divorced....

# include<stdio.h>

struct basededasos{
    Int código;
    Int idade;
    char estadocivil[50];
} pessoa[10]

int main(){
    int i;

    for (i=0;i<10;i++){
        Printf("Digite código e idade: );
        scanf("%d %d",&pessoa[i].codigo,&pessoa[i].idade);

        Printf("Estado civil: );
        scanf("%s",&pessoa[i].estadocivil);
    }


}
  • C is a case(case sensitivity) sensitive language, that is, the compiler differentiates case from case.

2 answers

1

Instead of keeping the whole word in the member estadocivil use only one character to represent what you want.

Being:

  • S single;
  • C for married;
  • D for divorced;

So you can use a function estadoCivilQuantidade and specify which marital status you want to get the amount in the argument estadoCivil, see an example below:

#include <stdio.h>

#define TAM 6

typedef struct pessoa {
    int codigo;
    int idade;
    char estadoCivil;
} TPessoa;

int estadoCivilQuantidade(TPessoa pessoas[TAM], char estadoCivil);

int main(void) {
    TPessoa pessoas[TAM];
    pessoas[0].codigo = 1;
    pessoas[0].idade = 22;
    pessoas[0].estadoCivil = 'S';

    pessoas[1].codigo = 2;
    pessoas[1].idade = 43;
    pessoas[1].estadoCivil = 'C';

    pessoas[2].codigo = 3;
    pessoas[2].idade = 19;
    pessoas[2].estadoCivil = 'C';

    pessoas[3].codigo = 4;
    pessoas[3].idade = 22;
    pessoas[3].estadoCivil = 'S';

    pessoas[4].codigo = 5;
    pessoas[4].idade = 26;
    pessoas[4].estadoCivil = 'S';

    pessoas[5].codigo = 6;
    pessoas[5].idade = 32;
    pessoas[5].estadoCivil = 'D';

    int solteirosQuantidade = estadoCivilQuantidade(pessoas, 'S');
    int casadosQuantidade = estadoCivilQuantidade(pessoas, 'C');
    int divorciadosQuantidade = estadoCivilQuantidade(pessoas, 'D');

    printf("Solteiros: %d\n", solteirosQuantidade);
    printf("Casados: %d\n", casadosQuantidade);
    printf("Divorciados: %d\n", divorciadosQuantidade);

    return 0;
}

int estadoCivilQuantidade(TPessoa pessoas[TAM], char estadoCivil) {
    int i, quantidade = 0;
    for (i =0; i < TAM; i++) {
        if (pessoas[i].estadoCivil == estadoCivil) {
            quantidade++;
        }
    }
    return quantidade;
}

Exit:

Singles: 3
Married: 2
Divorced and divorced: 1

See working on Repl.it.

0

Use strcmp to compare marital status, and add +1 to the corresponding marital status. So you can do the count you want

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

 struct basededasos{
        Int código;
        Int idade;
        char estadocivil[50];
    } pessoa[10]

    int main(){
        int i,solteiro,casado,divorciado;

        for (i=0;i<10;i++){
            Printf("Digite código e idade: \n");
            scanf("%d %d",&pessoa[i].codigo,&pessoa[i].idade);

            Printf("Estado civil: \n");
            scanf("%s",&pessoa[i].estadocivil);
            if (strcmmp(pessoa[i].idade,"solteiro")==0)
            solteiro++;
            else 
            if (strcmmp(pessoa[i].idade,"casado")==0)
            casado++;
            else 
            if (strcmmp(pessoa[i].idade,"divorciado")==0)
            divorciado++;
        }


    }

Browser other questions tagged

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