Jump to content
IgorExtreme

Struct Família em C

Recommended Posts

Olá estou com problema nesta questão: "Escreva um programa que leia e armazene em um vetor os dados de 30 pessoas. Estes dados são o nome da pessoa, sua idade, e os nomes completos do pai e da mãe. A seguir, o programa deve identificar (e mostrar os índices) das pessoas que estão relacionadas por um parentesco avô-neto e irmão-irmão. No caso dos irmãos, deve ser informado ainda qual é o mais novo dos dois." O código é esse

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

#define NUM 4

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[0].pai, vetorPessoas[1].nome)){
        printf("%s e avo de %s\n", vetorPessoas[1].pai, vetorPessoas[0].nome);
   }
    if(!strcmp(vetorPessoas[2].pai, vetorPessoas[3].nome)){
        printf("%s e avo de %s\n", vetorPessoas[3].pai, vetorPessoas[2].nome);
   }
    }
   /*if(!strcmp(vetorPessoas[i].pai, vetorPessoas[i].nome)){
        printf("%s e pai de %s\n", vetorPessoas[i].pai, vetorPessoas[i].pai);
   }*/
   if(!strcmp(vetorPessoas[0].pai, vetorPessoas[1].pai)){
        printf("Eles sao irmaos\n");
        if(vetorPessoas[0].idade > vetorPessoas[1].idade){
            printf("%s mais velho\n", vetorPessoas[0].idade);
        }
        else{
            printf("%s e mais novo\n", vetorPessoas[1].idade);
        }
    }
   if(!strcmp(vetorPessoas[2].pai, vetorPessoas[3].pai)){
        printf("Eles sao irmaos\n");
        if(vetorPessoas[2].idade > vetorPessoas[3].idade){
            printf("%s mais velho\n", vetorPessoas[2].idade);
        }
       else{
            printf("%s e mais novo\n", vetorPessoas[3].idade);
        }
    }
}

O problema é que ele mostra quase tudo menos a parte se tal irmão é mais velho que o outro

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Sharank
      Strcat Function In C++
       
      I'm new to C and C++ programming, can anyone give me a hint on what I'm doing wrong here. I'm trying to write to concat function that takes to pointers to chars and concatenates the second to the first. The code does do that, but the problem is that it adds a bunch of junk at the end.
       
      For instance, when passing the arguments - "green" and "blue", the output will be "greenblue" plus a bunch of random characters. I also wrote the strlen function that strcat uses, which I will provide below it for reference. I'm using the online compiler at InterviewBit The exact instructions and specification is this:
       
      int main(int argc, char** argv)
      {
      const int MAX = 100;
       
      char s1[MAX];
      char s2[MAX];
       
      cout << "Enter your first string up to 99 characters. ";
      cin.getline(s1, sizeof(s1));
      int size_s1 = strlen(s1);
      cout << "Length of first string is " << size_s1 << "\n";
       
      cout << "Enter your second string up to 99 characters. ";
      cin.getline(s2, sizeof(s2));
      int size_s2 = strlen(s2);
      cout << "Length of second string is " << size_s2 << "\n";
      cout << " Now the first string will be concatenated with the second
      string ";
      char* a = strcat(s1,s2);
       
      for(int i = 0; i<MAX; i++)
      cout <<a;
       
      // system("pause");
      return 0;
      }
       
      //strcat function to contatenate two strings
      char* strcat(char *__s1, const char *__s2)
      {
      int indexOfs1 = strlen(__s1);
      int s2L = strlen(__s2);
      cout <<s2L << "\n";
      int indexOfs2 = 0;
      do{
      __s1[indexOfs1] = __s2[indexOfs2];
      indexOfs1++;
      indexOfs2++;
      }while(indexOfs2 < s2L);
       
       
      return __s1;
      }
       
      //Returns length of char array
      size_t strlen(const char *__s)
      {
      int count = 0;
      int i;
      for (i = 0; __s != '\0'; i++)
      count++;
      return (count) / sizeof(__s[0]);
       
      }
    • By Elizandro Veloso
      Preciso de ajuda em um projeto, esse projecto , precisa alterar, guardar as fichas, como  faço para alterar, guardar etc ?
       
      switch(menu) { case 'c': case 'C': printf("\n-----------------------------------------------------------\n"); printf("\t\t Ficha de Componentes\n"); printf("-----------------------------------------------------------\n"); componente = inserirComponente(componente); break; case 'p': case 'P': printf("\n-----------------------------------------------------------\n"); printf("\t\t Posto de Trabalho\n"); printf("-----------------------------------------------------------\n"); posto = inserirPostoTrabalho(posto); break; case 'f': case 'F': printf("\n-----------------------------------------------------------\n"); printf("\t\t Ficha de Funcionário\n"); printf("-----------------------------------------------------------\n"); funcionario = inserirFuncionario(funcionario); break; case 'o': case 'O': printf("\n-----------------------------------------------------------\n"); printf("\t\t Ficha das Operações\n"); printf("-----------------------------------------------------------\n"); operacao = inserirOperacao(operacao); break; case 'e': case 'E': printf("\n-----------------------------------------------------------\n"); printf("\t\t Ficha de Empresa\n"); printf("-----------------------------------------------------------\n"); empresa = inserirEmpresa(empresa); break; case 's': case 'S': printf("\n-----------------------------------------------------------\n"); printf("\t\t Obrigado e volte sempre\n"); printf("-----------------------------------------------------------\n"); break; default: printf("\n---------------------------------------------------------------\n"); printf("\t\t A instruçao inserida não existe no Menu!!\n\n\t\t Aguarde para digitar novamente...\n"); printf("-----------------------------------------------------------------\n"); sleep(4); system("cls"); } }while(menu != 'S' && menu != 's');
       
    • By roberson abalaid
      #include <stdio.h>
      #include <stdlib.h>
      int arr[3][5];
      int main(){
          
          printf("Favor inserir os dados...\n");
          
          for(int i = 0; i < 3; i++){
              for(int j = 0; j < 5; j++){
                  scanf("%d", &arr[j]);
              }
          }
          
            printf("os valores inseridos foram...\n");
          
          for(int i = 0; i < 3; i++){
              for(int j = 0; j < 5; j++){
                  printf("  %d  ", arr[j]);
              }
              printf("\n");
          }
          return 0;
      }
    • By marceloDiegues
      Olá, amigos.
      Por favor,  me ajude com a seguintes perguntas.
       
      Qual a complexidade de um projeto desse?
      Qual o preçp de um projeto desse tipo?
       
      Quero contratar algum profissional para criar um site que tenha as seguintes funcionabilidades:
       
      1- Cadastro de usuário;
      2- Login e senha;
      3- O site seria muito parecido com o www.qconcursos.com, o usuário resolveria questões online.
      Contudo, haveria a possibilidade de criar salas tipo aqueles bate-papo da &nbsp;UOL.
      Então, o usuário criaria salas de estudos, em que , resolveria questões e conseguiria se comunicar por chat com usuários que estejam na mesma sala.
       
      Exemplo em anexo:
       
       
       
       

    • By ricardo Oliv3ira
      Um cano cilíndrico de raio R1 vai ser usado para guardar outros dois canos de raio R2 e R3. Caso os dois últimos canos caibam dentro do primeiro, seu programa deve imprimir “Coube”. Caso contrário imprima “Não coube”.
      #include <stdio.h> int main(void) { float R1,R2,R3; printf("digite o 1º tamanho:"); scanf("%f",R1); printf("digite o 2º tamanho"); scanf("%f",R2); printf("digite o 3º tamanho"); scanf("%f",R3); if(R2,R3<R1){ printf("Coube"); } else(R2,R3>R1){ printf("Não Coube"); } return 0; }  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.