Exercício de Programação C: Estruturas e Gestão de Hotel

Classificado em Design e Engenharia

Escrito em em português com um tamanho de 2,09 KB

Exercício de Programação em C: Gestão de Ocupação Hoteleira

a) Defina o tipo de dados que considera adequado para guardar a informação relativa à ocupação de um hotel. Assim, para cada quarto é necessário guardar a informação sobre:

  • Número da porta;
  • Nome do cliente (máximo 50 caracteres);
  • Tipo de quarto (1-individual, 2-duplo);
  • Número de noites de permanência.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>

typedef struct hotel {
    int nPorta;
    char nomeCliente[50];
    int tipoQuarto;
    int nNoites;
} HOTEL;

b) Escreva uma função que devolve uma estrutura, do tipo definido na alínea a), preenchida com informação solicitada ao utilizador. Nesta função devem ser feitas proteções aos dados de entrada, nomeadamente:

  • O campo “número da porta” só deve aceitar um valor compreendido entre 1 e 299;
  • O campo “tipo de quarto” só deve aceitar 1 ou 2;
  • O campo “número de noites de permanência” só deve aceitar valores positivos.
HOTEL Guarda_r(void) {
    FILE *fich;
    HOTEL cliente;

    do {
        printf("Insira numero da porta \n");
        scanf("%d", &cliente.nPorta);
    } while(cliente.nPorta < 1 || cliente.nPorta > 299);

    fflush(stdin); //limpar

    printf("Insira o nome do cliente \n");
    gets(cliente.nomeCliente);

    do {
        printf("Insira o tipo de quarto \n");
        scanf("%d", &cliente.tipoQuarto);
    } while(cliente.tipoQuarto != 1 && cliente.tipoQuarto != 2);

    do {
        printf("Insira o numero de noites de permanência \n");
        scanf("%d", &cliente.nNoites);
    } while(cliente.nNoites <= 0);

    fich = fopen("Clientes.dat", "ab"); //abre ficheiro
    fwrite(&cliente, sizeof(HOTEL), 1, fich); //escreve
    fclose(fich);

    return cliente;
}

Entradas relacionadas: