Olá. Sou novo aqui e na área de programação. To tendo aulas de linguagem de programação e to tendo dificuldade (que acho que seja lógica) em desenvolver o programa que o professor pediu. Basicamente é para testarmos e aprendermos a manipular funções, parâmetros e algumas coisas mais simples. O programa que uso é o Dev C++. E to mexendo em linguagem C.
Aqui vai o programa:
1) Elabore um programa de um hotel. Este programa precisa conter um menu com 6 opções:
[1] Alterar o valor da estadia
[2] Fazer Check-In
[3] Fazer Check-Out
[4] Atualizar as Lotacoes
[5] Relatorio Diario
[6] Sair
Cada opção deve ter um tipo de função estabelecida.
[1] - Em alterar estadia, é necessário que pergunte o valor novo da estadia. E este valor será usado para todo o resto do programa.
[2] - Fazer check-in é para armazenar o nome do hospede, o tempo que ficará no hotel (em dias), o código da pessoa. (Se for 1, a pessoa fica no quarto de codigo 1. Caso a pessoa saia, esse número 1 é liberado e se torna 0. O 1 é só para estabelecer que naquela posição que o hospede foi hospedado, está livre.)
[3] - Fazer check-out é para pegar os dados do hospede armazenado no vetor de estrutura, utilizado em check-in, e faz todo o calculo. Total de dias hospedados, o valor da conta, liberação do quarto (mudar para 0)
[4] - Por enquanto não é necessário.
[5] - Também não.
Tenho dificuldade em usar os valores armazenados nas funções em outras funções, pois dá como se a variável fosse inexistente. Eu não entendo como usar ponteiros nesse caso, para passar valor. To preocupado, pois tenho medo de não me suceder neste área, por não entender o que se passa nos programas. =[
#include <stdio.h>
#include <stdlib.h>
//Definindo os dados dos hospedes
typedef struct HospedeCadastro{
char Nome[80];
int Estadia, NumeroQuarto, Codigo;
}Cadastro;
//Alterando o valor da estadia
typedef struct ValorEstadia(){
float TotalDebito2;
if (TempoEstadia < 15)
TotalDebito2 = 50 + TempoEstadia*4;
if (TempoEstadia = 15)
TotalDebito2 = 50 + TempoEstadia*3.60;
if(TempoEstadia > 15)
TotalDebito2 = 50 + TempoEstadia*3;
return(TotalDebito2);
};
int achaProximoLivre(Cadastro *cli){
int x;
for(x=0; x<1000;x++){
if(cli[x].Codigo==-1)
break;
return(x);
}
}
void inicializarClientes(Cadastro *cli){
int x;
for (x=0; x<1000;x++)
cli[x].Codigo=-1;
}
void MenuHotel(){
int Opcao, I, Quantidade, TotalDeHospedes;
Cadastro Clientes[1000];
inicializarClientes(Clientes);
while(Opcao!=6){
system("cls");
printf("******** Menu ********\n\n");
printf("[1] Alterar o valor da estadia");
printf("\n[2] Fazer Check-In");
printf("\n[3] Fazer Check-Out");
printf("\n[4] Atualizar as Lotacoes");
printf("\n[5] Relatorio Diario");
printf("\n[6] Sair");
printf("\n\nOpcao escolhida: ");
scanf("%d", &Opcao);
fflush(stdin);
switch(Opcao){
case 1:{
// ValorEstadia();
break;
}
case 2:{
system("cls");
int x = achaProximoLivre(Clientes);
printf("O proximo quarto livre é o %d");
printf("\nQual o numero do quarto que sera hospedado: ");
scanf("%d", &Clientes[x].NumeroQuarto);
fflush(stdin);
printf("\nNome do hospede responsavel pelo quarto %d: ", Clientes[x].NumeroQuarto);
gets(Clientes[x].Nome);
break;
}
case 3:{
break;
}
case 4:{
break;
}
case 5:{
break;
}
case 6:{
continue;
}
}
}
}
int main(void) {
char Atendente[80];
int I;
printf("Qual seu nome: ");
gets(Atendente);
printf("Seja bem-vindo(a), %s.", Atendente);
for(I=0;I<1079999999;I++);
MenuHotel();
}