-1
Hello I’m having trouble in this question: "Write a program that reads and stores in an array the data of 30 persons. These data are the name of the person, his age, and the full names of the father and mother. Next, the program must identify (and show the indices) people who are related by a great-grandparent and brother-brother. In the case of the brothers, it must be further informed which is the younger of the two." The code is this
#include<string.h>
#define NUM 3
struct pessoa {
char nome[20];
char mae[20];
char pai[20];
int idade;
};
main() {
struct pessoa vetorPessoas[NUM];
int i;
printf("Digite os dados de %d pessoas:\n", NUM);
for (i = 0; i < NUM; i++) {
printf("Digite o nome da pessoa %d: ", i);
fflush(stdin);
gets(vetorPessoas[i].nome);
printf("%s\n", vetorPessoas[i].nome);
printf("Digite o nome da mae da pessoa %d: ", i);
fflush(stdin);
gets(vetorPessoas[i].mae);
printf("%s\n", vetorPessoas[i].mae);
printf("Digite o nome do pai da pessoa %d: ", i);
fflush(stdin);
gets(vetorPessoas[i].pai);
printf("%s\n", vetorPessoas[i].pai);
printf("Digite a idade da pessoa %d: ", i);
fflush(stdin);
scanf("%d", &vetorPessoas[i].idade);
printf("%d\n", vetorPessoas[i].idade);
}
if(!strcmp(vetorPessoas[i].pai, vetorPessoas[i].nome)){
printf("%s e pai de %s\n", vetorPessoas[i].pai, vetorPessoas[i].pai);
}
if(!strcmp(vetorPessoas[i].pai, vetorPessoas[i].pai)){
printf("Eles sao irmaos\n");
if(vetorPessoas[i].idade > vetorPessoas[i].idade){
printf("%s mais velho\n", vetorPessoas[i].idade);
}
else{
printf("%s e mais novo\n", vetorPessoas[i].idade);
}
}
}
The problem is that it shows everything even when I don’t want and I’d like to know how I can fix it.
This if:
if(!strcmp(vetorPessoas[i].pai, vetorPessoas[i].nome)){
is out of a loop. Note that at this point the variable valuei
isNUM
. In addition toif(!strcmp(vetorPessoas[i].pai, vetorPessoas[i].pai)){
you’re comparing a string to itself, there’s no way it could be different– anonimo
I did what you showed and now it doesn’t show which brother is older
– Igor Lima Kock