Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
vinieis

Problema com struct na função

Recommended Posts

Fala Galera, Beleza!
To fazendo um projeto e falta apenas 2 funções para acabar mas travou por buscar uma struct na função

Função:

adicionar_produtos_quartos (struct hotel *banco, int tamanho, struct produtos *dados,int p)(linha 93 até 140)
Não to conseguindo armazenar aqueles dados para depois listar eles...

#include <stdio.h>#include <stdlib.h>#include <strings.h>#include <locale.h>struct produtos    {        char products[10];        float preco;        int quantidade;    };struct hotel    {       int quarto;       int senha;       int dias;       float dispesas;       struct produtos pedidos[3];       int estado;    };int quarto_ocup(int num, struct hotel *banco, int tamanho)    {        int i;        for (i=0;i<tamanho;i++){            if (banco[i].quarto == num){                printf ("\nQuarto já OCUPADO! Por favor, informe outro!\n");                return 0;            }        }        return 1;    }int add_quarto (struct hotel *banco, int tamanho) // opção 1 Adicione um quarto    {        int k=0,i;        int ocupado;        for(i=0;i<tamanho;i++)            {                if (banco[i].estado==0)                    {                        while (k==0)                            {                                k=1;                                printf("\n\t------| ADICIONE UM QUARTO |------\n\n");                                printf ("Informe o número do quarto: ");                                scanf ("%d",&ocupado);                                if (quarto_ocup (ocupado,banco,tamanho)) // quarto_ocup == 1                                    banco[i].quarto=ocupado;//banco[2].quart                                else                              k=0;                            }                        printf ("Informe a nova Senha: ");                        scanf ("%d",&banco[i].senha);                        printf("Informe a quantidade de dias: ");                        scanf("%d",&banco[i].dias);                        getch();                        banco[i].estado=1;                        return;                    }            }    printf ("TODOS os quartos OCUPADOS!\n");    getch();}int verificacao_quarto (int num, struct hotel *banco, int tamanho, int *o)    {        int i;        for (i=0;i<tamanho;i++){            if (banco[i].quarto == num){                *o=i;                return 1;            }        }        return 0;        }int adicionar_produtos_quartos (struct hotel *banco, int tamanho, struct produtos *dados,int p)    {       int o, k=0, i, l=0,t=0;       char produto[10];       while(k==0)       {            printf ("Informe o nome do produto/serviço: ");            scanf ("%s", produto);                for (i=0; i<tamanho;i++)                {                    if (strcmp(dados[i].products,produto)==0){                    while (t==0){                    if (banco[p].pedidos[l].quantidade>0){                        l++;                    }                    else                       t=1;                    }                    strcpy(banco[p].pedidos[l].products,produto);                    printf("Teste 0  \n");                    printf("informe a quantidade do produto: ");                    scanf("%d", &banco[p].pedidos[l].quantidade);                    printf("Teste 1 \n");                    printf("%d \n",banco[p].pedidos[l].quantidade);                    printf("Teste 2 \n");                    banco[p].dispesas= banco[p].pedidos[l].quantidade*dados[i].preco;                    printf("Teste 3 \n");                    printf("%.2f",banco[p].dispesas);                    k=1;                    getch();                    return;                    }                }                if(strcmp(dados[i].products,produto)!=0)                 {                    printf ("\n\tProduto NÃO cadastrado!\n\n");                    k=0;                 }       }    }int add_pedido (struct hotel *banco, int tamanho, struct produtos *dados) // opção 2 Adicione um pedido ao quarto    {        int k=0;        int o;        char products[10];        int quarto,senha,produto;           while(k==0){                printf("\n\t------| ADICIONE UM PEDIDO AO QUARTO |------\n\n");                printf("Informe o número do quarto: ");                scanf ("%d",&quarto);                if (verificacao_quarto(quarto,banco,tamanho,&o))                {                        printf("Informe a senha: ");                        scanf ("%d",&senha);                        if(banco[o].senha==senha)                        k=1;                        else                        {                            printf("Senha inválida!");                            k=0;                        }                    adicionar_produtos_quartos(products,3,dados,o);                }                else                {                    printf ("Este quarto NÃO foi cadastrado!");                    k=0;                }            getch();           }    }int informar_despesas_quarto (struct hotel *banco, int o)    {        int i;        printf("\nNÚMERO DO QUARTO: %3d",banco[o].quarto);        for (i=0;i<3;i++){        printf("\nomea DO produto: %s", banco[o].pedidos[i].products);        printf("\npreco do produto: %f", banco[o].pedidos[i].preco);        printf("\nquantidade do produto: %2d", banco[o].pedidos[i].quantidade);        }        printf("\nDISPESAS: %.2f", banco[o].dispesas);        getch();    }int listar_despesas (struct hotel *banco, int tamanho, struct produtos *dados) // opção 3 Listar as Despesas do Hospede    {        int quarto,senha;        int o,k=0;        while(k==0){            printf("\n\t------| LISTAR AS DESPESAS DO HOSPEDE|------\n\n");            printf("informe o número do quarto: ");            scanf("%d", &quarto);            if (verificacao_quarto(quarto,banco,tamanho,&o))                    {                        printf("Informe a senha: ");                        scanf ("%d",&senha);                        if(banco[o].senha==senha)                            {                                k=1;                                informar_despesas_quarto(banco,o);                            }                        else                        {                            printf("Senha inválida!");                            k=0;                        }                    }                }    }int serv_ocup(char *palavra, struct produtos *estoque, int tamanho)    {        int i;        for (i=0;i<tamanho;i++){          if (strcmp (estoque[i].products,palavra) == 0){                printf ("\nProduto/serviço já CADASTRADO!\n");                return 0;            }        }        return 1;    }int add_serv_prod (struct produtos *estoque,int tamanho, int *i) // opção 4 Adicionar um Serviço / produto no estoque    {        char des_prod[10];        int k=0,opc,j;       while (k==0)       {           k=1;            printf("\n\t------| ADICIONAR UM SERVIÇO / PRODUTO NO ESTOQUE |------\n\n");            printf ("Você deseja ADICIONAR ou MODIFICAR o valor de um produto? 1 - ADICIONAR 2 - MODIFICAR ");            scanf("%d", &opc);            switch (opc)            {                case 1:            printf ("\nInforme o nome do produto que deseja (%d): ",*i+1);            scanf (" %[^\n]s",des_prod);            if (serv_ocup(des_prod,estoque,tamanho))                    { // qurto_ocup == 1                        strcpy( estoque[*i].products,des_prod);                        printf("\nInforme o valor do produto: ");                        scanf("%f", &estoque[*i].preco);                        *i+=1;                    }                else                    k=0;            break;            case 2: printf ("\nInforme o nome do produto que deseja: ");            scanf (" %[^\n]s",des_prod);                    for (j=0; j<3; j++)                    if (strcmp(estoque[j].products,des_prod)==0){                        printf("Informe o NOVO preço: ");                        scanf("%f", &estoque[j].preco);                        printf ("NOVO Valor Cadastrado!");                    }                    break;            default: printf ("Opção inválida!");                    break;            }         getch();       }    }int excluir_um_quarto (struct hotel *banco,int tamanho)     {         int opc,quarto,i,k=0;;            printf ("Deseja Excluir um quarto? 1 - SIM  2 - NÃO");            scanf("%d",&opc);            switch (opc)            {                case 1:                    while (k==0)                      {                        printf("Informe o número do Quarto: ");                        scanf ("%d",&quarto);                        for (i=0;i<tamanho;i++)                            {                                if(banco[i].quarto==quarto)                                    {                                        banco[i].dispesas=0;                                        banco[i].quarto=0;                                        banco[i].senha=0;                                        banco[i].estado=0;                                        banco[i].dias=0;                                        printf("Informação do quarto EXCLUIDA com SUCESSO!");                                        k=1;                                        getch();                                        break;                                    }                                    else                                        k=0;                            }                            if(k==0)                            printf("\n\tQuarto Não Encontrado/inexistente!\n\n");                      }                      break;            case 2: return;                break;            default: printf ("Opcão Inválida!");                     getch();                break;            }     }int excluir_todos_quartos(struct hotel *banco,int tamanho)    {        int opc,i;        printf ("Você deseja excluir informações de TODOS os QUARTOS? 1 - SIM  2 - NÃO ");        scanf("%d",&opc);        switch (opc)        {        case 1:        for (i=0;i<tamanho;i++)            {                banco[i].dispesas=0;                banco[i].quarto=0;                banco[i].senha=0;                banco[i].estado=0;                banco[i].dias=0;            }            printf ("\n\tTODAS as informações foram EXCLUIDAS!");            getch();            break;        case 2:  return;            break;         default: printf ("Opção inválida!");                    break;        }    }/*int ler (struct hotel *banco)    int i;        for(i=0;i<=3;i++)            printf ("%d      |    ",banco[i].dias);*/int menu()    {        int opc;        do{            printf("\tMENU");            printf ("\n1 - Adicione um quarto");            printf ("\n2 - Adicione um pedido ao quarto");            printf ("\n3 - Listar as Despesas do Hospede");            printf ("\n4 - Adicionar um Serviço / produto no estoque");            printf ("\n5 - Excluir informações de um quarto");            printf ("\n6 - Excluir informações de TODOS os quartos");            printf ("\n7 - Sair");            printf ("\nEscolha uma opção: ");            scanf ("%d",&opc);            if (opc<1 || opc>7)            {                 printf("Opção inválida. Digite uma opção de 1-7!\n");                 getch();                  system("cls");            }        }while(opc<1 || opc>7);        return opc;    }main (){    setlocale(LC_ALL, "Portuguese");    int opcao,add=0,serv=0,i;    struct hotel hospede[3];// hospede[0] hospede[1] hospede[2]    struct produtos itens[3]; // itens    for (i=0; i<3;i++)        hospede[i].estado=0;        do{            system("cls");            opcao=menu();            switch (opcao)                {                   case 1:                        add_quarto(hospede,3);                        break;                   case 2: add_pedido(hospede,3,itens);                        break;                   case 3: listar_despesas(hospede,3,itens);                        break;                   case 4: if (serv==3)                           {                              printf ("\n\tEstoque LOTADO!\n\n");                              break;                           }                       add_serv_prod(itens,3,&serv);                   break;                   case 5: excluir_um_quarto(hospede,3);                        break;                   case 6:  excluir_todos_quartos(hospede,3);                        break;                }      //ler(hospede);        // printf("%.2f",hospede[0].dispesas);                   // getch();        }while(opcao!=7);getch();return 0;}
Editado por vinieis

Compartilhar este post


Link para o post
Compartilhar em outros sites

Reescrevi seu código e deixei a estrutura p/ você completar.

 

#include <stdio.h>#include <string.h>/* Definições de tamanho */#define MAX_PRODUTOS_DESC 10#define MAX_PEDIDOS_QUARTO 3#define MAX_QUARTOS 5#deifne MAX_ESTOQUE 5/* Definições usadas como variáveis. */#define INVALIDO -1#define QUARTO_INEXISTENTE -1enum opcao {LER_INFO_QUARTO, CADASTRAR_PEDIDO_QUARTO, LISTAR_DESPESAS_QUARTO, CADASTRAR_ESTOQUE, EXCLUIR_INFO_QUARTO, EXCLUIR_ALL_INFO_QUARTOS, SAIR};struct produto {	char descricao[MAX_PRODUTOS_DESC];	float preco;	unsigned int quantidade;};struct quarto {	int numero;	float despesas;	int duracao_estadia;	char ocupado;	struct produto pedidos[MAX_PEDIDOS_QUARTO]; 	/* OUTRA FORMA DE IMPLEMENTAR É UTILIZAR struct produto **, REFERENCIANDO DIRETAMENTE O ENDERECO DE MEMORIA 	 * DOS PRODUTOS EM ESTOQUE. ISSO EVITA FICAR PROCURANDO POR INDICES. */}; struct hotel {	struct quartos[MAX_QUARTOS];	struct produto estoque[MAX_ESTOQUE];	char sem_vagas;	int tamanho_estoque;}; void iniciar_hotel(struct hotel * h) {	iniciar_quartos(h->quartos);	iniciar_estoque(h->estoque);	h->sem_vagas = 0;	h->tamanho_estoque = 0;}void iniciar_estoque(struct produto * e) {	for(int i=0; i<MAX_ESTOQUE; i++) {		e[i].preco = 0.0F;		e[i].descricao[0] = '\0';		e[i].quantidade = 0;	}}void iniciar_quartos(struct hotel * h) {	for(int i=0; i<MAX_QUARTOS; i++) {		h->quarto[i].numero = QUARTO_INEXISTENTE;		h->quarto[i].despesas = 0.0F;		h->quarto[i].ocupado = 0;	}} int primeiro_quarto_desocupado(struct quarto * q) {	int i;	for(i=0; i<MAX_QUARTOS && !q[i].ocupado; i++);	return i;}int primeiro_espaco_disponivel(struct quarto * q) {	int i;	for(i=0; i<MAX_QUARTOS && q[i].numero != QUARTO_INEXISTENTE; i++);	return i;}int existe_quarto(int numero_quarto, struct quarto * q) {	int i;	for(i=0; i<MAX_QUARTOS && q[i].numero != numero_quarto; i++);	if (q[i].numero == numero_quarto) return 1;	return 0;}void ler_info_quarto(struct quarto *q) {	if (primeiro_espaco_disponivel(q) == MAX_QUARTOS) {		puts("Não há espaço para mais quartos.");	} else {		int numero_quarto;		printf("Informe o número do quarto: ");		scanf("%d%*c", &numero_quarto);		if (existe_quarto(numero_quarto, q)) {			puts("Esse quarto já existe. Informe outro número.");		} else {			int pos = primeiro_quarto_desocupado(q);			q[pos].numero = numero_quarto;			puts("Informação lida com sucesso.");		}	}}int produto_em_estoque(char * desc, struct produto * e, int tamanho_estoque) {	int i;	for(i=0; i<tamanho_estoque && strcasecmp(desc, e[i].descricao); i++);	return i;}void adicionar_estoque(struct hotel * h) {	if (h->tamanho_estoque == MAX_ESTOQUE) {		puts("Não há espaço no estoque.");	} else {		char desc_produto[MAX_PRODUTOS_DESC];		float preco_produto;		int qtde_produto;		printf("Informe a descrição do produto: ");		fgets(desc_produto, MAX_PRODUTOS_DESC, stdin);		(*strrchr(desc_produto, '\n')) = '\0';		int pos = produto_em_estoque(descricao, h->estoque, h->tamanho_estoque);		if (pos < h->tamanho_estoque) {			puts("Produto/serviço já cadastrado.");		} else {			printf("Informe o preço do produto: ");			scanf("%f%*c", &preco_produto);			printf("Informe a quantidade: ");			scanf("%d%*c", &qtde_produto);			h->estoque[pos].preco = preco_produto;			h->estoque[pos].quantidade = qtde_produto;			strncpy(h->estoque[pos].descrica, desc_produto, strlen(desc_produto));			puts("Produto adicionado com sucesso.");		}	}}int localizar_quarto(int numero_quarto, struct quarto * q) {	int i;	for(i=0; i<MAX_QUARTOS && q[i].numero != numero_quarto; i++);	return i;}void cadastrar_pedido(struct hotel * h) {	int num_quarto;	printf("Informe o número do quarto: ");	scanf("%d%*c", &num_quarto);	if (!existe_quarto(num_quarto, h->quartos)) {		puts("Quarto inexistente.");	} else {		int pos = localizar_quarto(num_quarto, h->quartos);		if (!h->quartos[pos].ocupado) {			puts("Não é possível cadastrar pedidos em um quarto vazio.");		} else {			// RESTANTE DO CODIGO PARA CADASTRO DE PEDIDO			// LOGICA SEMELHANTE AO CADASTRO DE PRODUTOS.		}	}}void listar_despesas_quarto(struct quarto * q, struct estoque * e) {	int num_quarto;	printf("Informe o número do quarto: ");	scanf("%d%*c", &num_quarto);	// Verifique se o quarto existe.	// Retorne a posição do quarto.	if (!q[pos].ocupado) {		puts("Quarto desocupado. Nenhuma despesa.");	} else {		int i;		for(i=0; i<MAX_PEDIDOS_QUARTO; i++) {			if (strlen(q[i].descrição)) { //Se há descrição				// Pesquise a descricao no estoque, retornando a posicao da mesma.				// Com a posicao do produto, acesse os membros da struct pedido do estoque para imprimir as informações.			}		}	}}int compara_opcao_principal(int opcao) {	if (opcao < LER_INFO_QUARTO || opcao > SAIR)		return INVALIDO;	return opcao;}int entrada_opcao(int (*func)(int)) {	int opcao;	scanf("%d%*c", &opcao);	return func(opcao);	}void menu_principal() {	puts("*** MENU PRINCIPAL ***");	printf("%d - Adicione um quarto\n", LER_INFO_QUARTO);	printf("%d - Adicione um pedido ao quarto\n", CADASTRAR_PEDIDO_QUARTO);	printf("%d - Listar as despesas do hóspede\n", LISTAR_DESPESAS_QUARTO);	printf("%d - Adicionar um serviço / produto no estoque\n", CADASTRAR_ESTOQUE);	printf("%d - Excluir informações de um quarto\n", EXCLUIR_INFO_QUARTO);	printf("%d - Excluir informações de TODOS os quartos\n", EXCLUIR_ALL_INFO_QUARTOS);	printf("%d - Sair\n", SAIR);	printf(">> ");}  int main(void) {	int opcao = INVALIDO;	struct hotel meu_hotel; 	iniciar_hotel(&meu_hotel);	while (opcao != SAIR) {		menu_principal();		opcao = entrada_opcao_principal(compara_opcao_principal);		if (opcao == INVALIDO) {			puts("Opção inválida. Tente novamente.");		} else if (opcao != SAIR) {			switch (opcao) {				case LER_INFO_QUARTO:					ler_info_quarto(&(meu_hotel->quartos));					break;				case CADASTRAR_PEDIDO_QUARTO:					cadastrar_pedido(&meu_hotel);					break;				case LISTAR_DESPESAS_QUARTO:					listar_despesas_quarto(&(meu_hotel->quartos));					break;				case CADASTRAR_ESTOQUE:					adicionar_estoque(&meu_hotel);					break;			}		}	return 0;}
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Nossa, MUITO obrigado isis, nem sei como agradecer irei analisar o código qualquer coisa pergunto :)

     

     

    Reescrevi seu código e deixei a estrutura p/ você completar.

     

    #include <stdio.h>#include <string.h>/* Definições de tamanho */#define MAX_PRODUTOS_DESC 10#define MAX_PEDIDOS_QUARTO 3#define MAX_QUARTOS 5#deifne MAX_ESTOQUE 5/* Definições usadas como variáveis. */#define INVALIDO -1#define QUARTO_INEXISTENTE -1enum opcao {LER_INFO_QUARTO, CADASTRAR_PEDIDO_QUARTO, LISTAR_DESPESAS_QUARTO, CADASTRAR_ESTOQUE, EXCLUIR_INFO_QUARTO, EXCLUIR_ALL_INFO_QUARTOS, SAIR};struct produto {	char descricao[MAX_PRODUTOS_DESC];	float preco;	unsigned int quantidade;};struct quarto {	int numero;	float despesas;	int duracao_estadia;	char ocupado;	struct produto pedidos[MAX_PEDIDOS_QUARTO]; 	/* OUTRA FORMA DE IMPLEMENTAR É UTILIZAR struct produto **, REFERENCIANDO DIRETAMENTE O ENDERECO DE MEMORIA 	 * DOS PRODUTOS EM ESTOQUE. ISSO EVITA FICAR PROCURANDO POR INDICES. */}; struct hotel {	struct quartos[MAX_QUARTOS];	struct produto estoque[MAX_ESTOQUE];	char sem_vagas;	int tamanho_estoque;}; void iniciar_hotel(struct hotel * h) {	iniciar_quartos(h->quartos);	iniciar_estoque(h->estoque);	h->sem_vagas = 0;	h->tamanho_estoque = 0;}void iniciar_estoque(struct produto * e) {	for(int i=0; i<MAX_ESTOQUE; i++) {		e[i].preco = 0.0F;		e[i].descricao[0] = '\0';		e[i].quantidade = 0;	}}void iniciar_quartos(struct hotel * h) {	for(int i=0; i<MAX_QUARTOS; i++) {		h->quarto[i].numero = QUARTO_INEXISTENTE;		h->quarto[i].despesas = 0.0F;		h->quarto[i].ocupado = 0;	}} int primeiro_quarto_desocupado(struct quarto * q) {	int i;	for(i=0; i<MAX_QUARTOS && !q[i].ocupado; i++);	return i;}int primeiro_espaco_disponivel(struct quarto * q) {	int i;	for(i=0; i<MAX_QUARTOS && q[i].numero != QUARTO_INEXISTENTE; i++);	return i;}int existe_quarto(int numero_quarto, struct quarto * q) {	int i;	for(i=0; i<MAX_QUARTOS && q[i].numero != numero_quarto; i++);	if (q[i].numero == numero_quarto) return 1;	return 0;}void ler_info_quarto(struct quarto *q) {	if (primeiro_espaco_disponivel(q) == MAX_QUARTOS) {		puts("Não há espaço para mais quartos.");	} else {		int numero_quarto;		printf("Informe o número do quarto: ");		scanf("%d%*c", &numero_quarto);		if (existe_quarto(numero_quarto, q)) {			puts("Esse quarto já existe. Informe outro número.");		} else {			int pos = primeiro_quarto_desocupado(q);			q[pos].numero = numero_quarto;			puts("Informação lida com sucesso.");		}	}}int produto_em_estoque(char * desc, struct produto * e, int tamanho_estoque) {	int i;	for(i=0; i<tamanho_estoque && strcasecmp(desc, e[i].descricao); i++);	return i;}void adicionar_estoque(struct hotel * h) {	if (h->tamanho_estoque == MAX_ESTOQUE) {		puts("Não há espaço no estoque.");	} else {		char desc_produto[MAX_PRODUTOS_DESC];		float preco_produto;		int qtde_produto;		printf("Informe a descrição do produto: ");		fgets(desc_produto, MAX_PRODUTOS_DESC, stdin);		(*strrchr(desc_produto, '\n')) = '\0';		int pos = produto_em_estoque(descricao, h->estoque, h->tamanho_estoque);		if (pos < h->tamanho_estoque) {			puts("Produto/serviço já cadastrado.");		} else {			printf("Informe o preço do produto: ");			scanf("%f%*c", &preco_produto);			printf("Informe a quantidade: ");			scanf("%d%*c", &qtde_produto);			h->estoque[pos].preco = preco_produto;			h->estoque[pos].quantidade = qtde_produto;			strncpy(h->estoque[pos].descrica, desc_produto, strlen(desc_produto));			puts("Produto adicionado com sucesso.");		}	}}int localizar_quarto(int numero_quarto, struct quarto * q) {	int i;	for(i=0; i<MAX_QUARTOS && q[i].numero != numero_quarto; i++);	return i;}void cadastrar_pedido(struct hotel * h) {	int num_quarto;	printf("Informe o número do quarto: ");	scanf("%d%*c", &num_quarto);	if (!existe_quarto(num_quarto, h->quartos)) {		puts("Quarto inexistente.");	} else {		int pos = localizar_quarto(num_quarto, h->quartos);		if (!h->quartos[pos].ocupado) {			puts("Não é possível cadastrar pedidos em um quarto vazio.");		} else {			// RESTANTE DO CODIGO PARA CADASTRO DE PEDIDO			// LOGICA SEMELHANTE AO CADASTRO DE PRODUTOS.		}	}}void listar_despesas_quarto(struct quarto * q, struct estoque * e) {	int num_quarto;	printf("Informe o número do quarto: ");	scanf("%d%*c", &num_quarto);	// Verifique se o quarto existe.	// Retorne a posição do quarto.	if (!q[pos].ocupado) {		puts("Quarto desocupado. Nenhuma despesa.");	} else {		int i;		for(i=0; i<MAX_PEDIDOS_QUARTO; i++) {			if (strlen(q[i].descrição)) { //Se há descrição				// Pesquise a descricao no estoque, retornando a posicao da mesma.				// Com a posicao do produto, acesse os membros da struct pedido do estoque para imprimir as informações.			}		}	}}int compara_opcao_principal(int opcao) {	if (opcao < LER_INFO_QUARTO || opcao > SAIR)		return INVALIDO;	return opcao;}int entrada_opcao(int (*func)(int)) {	int opcao;	scanf("%d%*c", &opcao);	return func(opcao);	}void menu_principal() {	puts("*** MENU PRINCIPAL ***");	printf("%d - Adicione um quarto\n", LER_INFO_QUARTO);	printf("%d - Adicione um pedido ao quarto\n", CADASTRAR_PEDIDO_QUARTO);	printf("%d - Listar as despesas do hóspede\n", LISTAR_DESPESAS_QUARTO);	printf("%d - Adicionar um serviço / produto no estoque\n", CADASTRAR_ESTOQUE);	printf("%d - Excluir informações de um quarto\n", EXCLUIR_INFO_QUARTO);	printf("%d - Excluir informações de TODOS os quartos\n", EXCLUIR_ALL_INFO_QUARTOS);	printf("%d - Sair\n", SAIR);	printf(">> ");}  int main(void) {	int opcao = INVALIDO;	struct hotel meu_hotel; 	iniciar_hotel(&meu_hotel);	while (opcao != SAIR) {		menu_principal();		opcao = entrada_opcao_principal(compara_opcao_principal);		if (opcao == INVALIDO) {			puts("Opção inválida. Tente novamente.");		} else if (opcao != SAIR) {			switch (opcao) {				case LER_INFO_QUARTO:					ler_info_quarto(&(meu_hotel->quartos));					break;				case CADASTRAR_PEDIDO_QUARTO:					cadastrar_pedido(&meu_hotel);					break;				case LISTAR_DESPESAS_QUARTO:					listar_despesas_quarto(&(meu_hotel->quartos));					break;				case CADASTRAR_ESTOQUE:					adicionar_estoque(&meu_hotel);					break;			}		}	return 0;}

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×