Function does not recognize the structure created in main

Asked

Viewed 25 times

0

I made a system and created a two Structs to store data of people of a hotel, but when trying to organize them in order of weight the system gives the following error:

line 100 error: incompatible types when assigning to type 'Hotel {aka struct Hotel} from type 'Hospede'

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

struct Hospede{

int codigo;
float peso;
char sexo;

} typedef Hospede;

struct Hotel{

Hospede hotel[10];

}typedef Hotel;


int main (){

Hotel pessoa;
int opcao;

    printf("Entrada de dados");
    scanf("%i", &pessoa.hotel[0].codigo);

    printf("\n\n%i\n\n", pessoa.hotel[0].codigo);



printf("1-Pessoa hospedada mais pesada\n");
printf("2-Pessoa hospedada menos pesada\n");
printf("3-Dados da pessoa hospedada pelo codigo\n");
printf("4-Inserir pessoa na lista\n");
printf("5-Remover pessoa na lista a partir do seu codigo\n");
printf("6-verificar o numero de pessoas que estao hospedadas\n");
printf("7-mostrar dados de todas as pessoas hospedadas\n");
printf("8-SAIR\n\n");

printf("\nSelecione sua opcao: ");

scanf("%i", &opcao);

if(opcao>8 || opcao<1)
{
    printf("Entrada Invalida");
}
else{
    switch(opcao){

            case 1:
                //pessoa mais pesada
                printf("\nescolheu: 1 - pessoa mais pesada\n");
            break;

            case 2:
                //menos pesada
                printf("\nescolheu: 2 -  pessoa menos pesada\n");
            break;

            case 3:
                //dados da pessoa hospedada a partir do codigo
                printf("\nescolheu: 3 - dados da pessoa hospedada pelo codigo\n");
            break;

            case 4:
                //nova pessoa na lista
                printf("\nescolheu: 4 - inserir pessoa na lista\n");
            break;

            case 5:
                //remover pessoa da lista a partir do codigo
                printf("\nescolheu: 5 - remover pessoa na lista\n");
            break;

            case 6:
                //verificar o numero de pessoas hospedadas
                printf("\nescolheu: 6 - verificar o numero de pessoas\n");
            break;

            case 7:
                //mostrar dados de todas as pessoas hospedadas
                printf("\nescolheu: 7 - mostrar dados de todas as pessoas hospedadas\n");
            break;

        }
    }
}

int maisPesada (Hotel todos){

    int fim = 10;
    Hotel auxiliar;
    int x, y;

    for(x=fim-1;x>0;x--){
        for(y=0;y<x;y++){
                if(todos.hotel[y].peso>todos.hotel[(y+1)].peso)
                auxiliar = todos.hotel[y];
                todos.hotel[y]=todos.hotel[(y+1)];
                todos.hotel[(y+1)]=auxiliar;
        }
    }

return 0;

}

1 answer

0

The error was in passing parameters, I was trying to pass data to the wrong structure:

WRONG : auxiliary = all.hotel[y]; CORRECT: auxiliary.hotel[0] = all.hotel[y];

all auxiliary variables were corrected.

Browser other questions tagged

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