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.
C
is a case(case sensitivity) sensitive language, that is, the compiler differentiates case from case.– Augusto Vasques