Ae galera to com um grande problema eu tenho um trabalho que deve ser entregue até quarta feira e não to conseguindo resolver, eu sei que ele não é muito dificil pra que já manja de programar, a sua descrição é um pouco extensa mas o que deve ser resolvido não é muita coisa, pois era uma prova nossa da faculdade, então quem souber e puder ajudar eu não sei nem como agradecer. abaixo a descrição do exercício e o seu código.
Pergunta
jededaya
Ae galera to com um grande problema eu tenho um trabalho que deve ser entregue até quarta feira e não to conseguindo resolver, eu sei que ele não é muito dificil pra que já manja de programar, a sua descrição é um pouco extensa mas o que deve ser resolvido não é muita coisa, pois era uma prova nossa da faculdade, então quem souber e puder ajudar eu não sei nem como agradecer. abaixo a descrição do exercício e o seu código.
instruçoes:
instruçoes para resolver o trab
codigo:
#include <stdlib.h>
#include <string.h>
#define MAXIMOVEIS 100 // número máximo de imóveis na lista
#define MAXCOMODOS 20 // número máximo de comodos em um imóvel
enum tipoc { // tipo de comodo
dormitorio = 1, cozinha, banheiro, sala, garagem, outro, nulo = 0
};
typedef struct {
float area; // área deste comodo
enum tipoc tipo; // tipo de comodo: 1 se for dormitorio, 2 se cozinha, ...
} comodo;
struct imovel {
char end[50]; // endereço
comodo comodos[MAXCOMODOS]; // comodos do imóvel
float areac; // área construída
float aluguel; // valor do aluguel
} info[MAXIMOVEIS];
void cria_lista(void);
void insere(void);
void apaga(void);
void imprime(void);
int menu(void);
int livre(void);
void imprimecomodo(comodo c);
void ler_string(char palavra[100], int tamanho);
void aumenta(void);
void salva(void); // QUESTAO 1
void carrega(void); // QUESTAO 2
float areas(void); // QUESTAO 3
int aumentaalugueis(struct imovel *maiscaro,float taxa); // QUESTAO 4
int main(void) {
int escolha;
cria_lista();
for( ; ; ) {
escolha = menu();
switch(escolha) {
case 1:
insere();
break;
case 2:
apaga();
break;
case 3:
imprime();
break;
case 4:
salva();
break;
case 5:
carrega();
break;
case 6:
areas();
break;
case 7:
aumenta();
break;
case 8:
exit(0);
break;
}
}
}
void salva(void) {
// Resolva a QUESTAO 1 aqui!
}
void carrega(void) {
// Resolva a QUESTAO 2 aqui!
}
float areas(){
// Resolva a QUESTAO 3 aqui!
}
int aumentaalugueis(struct imovel * maiscaro,float taxa){
// Resolva a QUESTAO 4 aqui!
}
void aumenta(void){
float taxa;
int cont;
struct imovel x;
printf("Aumento dos aluguéis!\n");
printf("Digite a taxa (%%) do reajuste: ");
scanf("%f",&taxa);
cont = aumentaalugueis(&x,taxa);
printf("%d alugueis reajustados com sucesso!\n",cont);
printf("-- O aluguel mais caro é %.2f\n",x.aluguel);
printf("-- Endereco: %s\n",x.end);
}
void cria_lista(void) {
int i;
for( i=0; i<MAXIMOVEIS; i++)
info.end[0]='';
// endereço = '' usado para representar nenhum imovel
// válido cadastrado nessa posição da lista
}
int menu(void) {
int c=0;
do {
printf("\n-- MENU:\n");
printf("\t 1. Inserir um imovel\n");
printf("\t 2. Excluir um imovel\n");
printf("\t 3. Listar imoveis cadastrados\n");
printf("\t 4. Salvar dados (questao 1)\n");
printf("\t 5. Carregar dados (questao 2)\n");
printf("\t 6. Calcular areas (questao 3)\n");
printf("\t 7. Reajustar alugueis (questao 4)\n");
printf("\t 8. Sair\n");
printf("-- Digite sua escolha: ");
scanf("%d", &c);
} while(c<=0 || c>8);
getchar();
return c;
}
void ler_string(char palavra[100], int tamanho) {
int i = 0;
char c;
c = getchar();
while ((c != '\n') && (i < tamanho)) {
palavra[i++] = c;
c = getchar();
}
palavra = '';
if (c != '\n') {
c = getchar();
while((c != '\n') && (c != EOF)) {
c = getchar();
}
}
}
void insere(void) {
int posicao;
int c,i;
posicao=livre();
if(posicao == -1) {
printf("\nEstrutura Cheia!!"); return;
}
printf("-- Imovel %d:\n", posicao);
printf("\t Endereco: ");
ler_string(info[posicao].end, 50);
printf("\t Número de Comodos (0-%d): ",MAXCOMODOS);
scanf("%d", &c);
for(i = 0;i<c;i++){ // lê comodos válidos
printf("Comodo %d TIPO:\n",i+1);
printf("\t 1. Dormitorio\n");
printf("\t 2. Cozinha\n");
printf("\t 3. Banheiro\n");
printf("\t 4. Sala\n");
printf("\t 5. Garagem\n");
printf("\t 6. Outro\n");
printf("-- Digite sua escolha: ");
scanf("%d", &info[posicao].comodos.tipo);
printf("-- Digite a AREA (m2) do comodo %d: ",i+1);
scanf("%f", &info[posicao].comodos.area);
}
for(i=c;i<MAXCOMODOS;i++){
info[posicao].comodos.tipo = 0; // atribui nulo aos comodos restantes
}
printf("-- Digite o valor do aluguel do imovel %d: ",posicao);
scanf("%f", &info[posicao].aluguel);
}
int livre(void) {
int i;
for( i=0; info.end[0] && i< MAXIMOVEIS; i++);
if( i == MAXIMOVEIS )
return -1;
return i;
}
void apaga(void) {
int posicao;
printf("Número do Registro: ");
scanf("%d",&posicao);
if(posicao >=0 && posicao < MAXIMOVEIS)
info[posicao].end[0]='';
}
void imprime(void) {
int i,j;
for( i=0; i < MAXIMOVEIS; i++)
if(info.end[0] != '') {
printf("-- Imovel %d:\n", i);
printf("\t Endereco: %s\n", info.end);
printf("\t Area construida: %.2f\n", info.areac);
printf("\t COMODOS:\n");
for(j = 0;j<MAXCOMODOS;j++){
imprimecomodo(info.comodos[j]);
}
printf("\t Aluguel: %.2f\n", info.aluguel);
}
}
void imprimecomodo(comodo c){
switch(c.tipo){
case 1:
printf("\t -- Dormitorio (%.2fm2)\n",c.area);
break;
case 2:
printf("\t -- Cozinha(%.2fm2)\n",c.area);
break;
case 3:
printf("\t -- Banheiro(%.2fm2)\n",c.area);
break;
case 4:
printf("\t -- Sala(%.2fm2)\n",c.area);
break;
case 5:
printf("\t -- Garagem(%.2fm2)\n",c.area);
break;
case 6:
printf("\t -- Outro(%.2fm2)\n",c.area);
break;
}
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.