Ir ao conteúdo
  • Cadastre-se

Ajuda com exercício struct


kor1

Posts recomendados

Bem pessoal, to tentando terminar esse programa mas tem alguns erros que não sei como mais resolver. Um é no case 4, que quando pede para desocupar o imóvel, dar um resultado errado.


#include <iostream.h>
#include <string.h>

using namespace std;
struct TFicha{
char propri[20], codigo[4], bairro[10];
float valor, valortotal, meses, mesesloc;

};

int main()

{int MAX = 3;
int cont = 0;
struct TFicha vetimovel[MAX];
float valortotal;
char p_codigo[4], status;
float mesesloc;
int opcao,posicao,x;

do
{ system("CLS");

cout<< "Menu \n";
cout<< "1. Cadastrar Imovel \n";
cout << "2. Consultar Imovel \n";
cout << "3. Alugar Imovel \n";
cout << "4. Desocupacao do Imovel \n";
cout << "5. Listar \n";
cout << "6. SAIR \n";

cout << "Informe a opcao desejada: ";
cin >> opcao;

system("CLS");

switch (opcao)
{

case 1:
if (cont == MAX)
{cout<<"Cadastro cheio \n";}
else
{ cout<< "Cadastro de Imovel \n";

cout<< "Codigo:";
cin>> vetimovel[cont].codigo;

cout<< "Nome do proprietario: ";
cin>> vetimovel[cont].propri;

cout<< "Bairro:";
cin>> vetimovel[cont].bairro;

status = 'L';

cout<<"Preco do Aluguel:";
cin>> vetimovel[cont].valor;

cont++;
}

break;

case 2:

cout<< "Consultar Imovel \n";
cout<< "Informe o seu codigo:";
cin>> p_codigo;
posicao = -1;
for (x=0; x <cont; x++)

{if (strcmp(p_codigo,vetimovel[x].codigo) == 0)
{ posicao = x; }
}

if (posicao == -1)
{cout << "Imovel nao cadastrado \n.";}
else
{ cout << "\n bairro: " <<vetimovel[posicao].bairro;
cout << "\n preco do Alugel: " <<vetimovel[posicao].valor;
cout<< "\n Status:" <<status<<endl;

{if (status=='A')

cout<<"Meses Alugado:"<<vetimovel[x].meses<<endl;

} }
break;


case 3:
cout<< "Alugar Imovel \n";
cout<< "Informe o codigo:";
cin>> p_codigo;

posicao = -1;
for (x=0; x < cont; x++)

{ if (strcmp(p_codigo, vetimovel[x].codigo) == 0)
{ posicao = x;}
}

if (posicao == -1)
{cout << "Imovel nao cadastrado \n.";}

else
{if (status=='A')
cout << "Imovel ja alugado \n";
else
{if (status== 'L')
cout << "Nome do proproetario:" <<vetimovel[posicao].propri<< endl;
cout << "Meses que ficara locado:"<<vetimovel[posicao].mesesloc;
status='A';}
}
break;

case 4:
cout<< "Desocupacao do Imovel \n";
cout<< "Informe o codigo:";
cin>> p_codigo;

posicao = -1;
for (x=0; x < cont; x++)
{ if (strcmp(p_codigo, vetimovel[x].codigo) == 0)
{ posicao = x; }
}

if (posicao == -1)
{ cout << "Imovel nao cadastrado \n."; }

else
{if (status=='L')
cout << "Este imovel nao esta alugado \n";}


{if (status=='A')
status='L';

vetimovel[posicao].valortotal = vetimovel[posicao].valor*mesesloc;

cout << "\n Valor total a ser pago: \n" << vetimovel[posicao].valortotal<<endl;

}


break;

case 5:
for(x=0;x<cont;x++)
{ cout << "\n proprietario...: " << vetimovel[x].propri;
cout << "\n codigo...: " << vetimovel[x].codigo ;
cout << "\n bairro...: " << vetimovel[x].bairro;
cout << "\n valor...: " << vetimovel[x].valor<<endl;
}
break;

case 6:
cout << "Programa encerrado....\n\n";
break;

default:
cout << "\n\n OPCAO INVALIDA \n";
break;


}
system("PAUSE");


}while (opcao !=6);
}

Link para o comentário
Compartilhar em outros sites

1° Está usando biblioteca depreciada: http://cmaisdescomplicado.blogspot.com.br/2011/06/vivendo-e-aprendendo-iostream-ou.html

2° Misturou tudo dentro da main é um cambalacho, fui refatorar o negócio tive que por variável global senão ia perder 1h arrumando.

3° Você não terminou o código, quando aluga e não pergunta por quantos meses.

4° Seu código tem if/else errados. (aqui está seu problema, no meio da muvuca como achar?!)

5° Desocupar o imovel não tem a mínima condição de representar algo real, não tem como contar o tempo, nem entrada de quantos meses o inquilino ficou.

Você está usando apenas CIN e COUT do C++, um híbrido do mal.

O trecho abaixo deve te dar alguma perspectiva, mas não irei dar nenhum suporte nessa coisa que você criou.


#include <iostream>
#include <string.h>

using namespace std;

struct TFicha{
char propri[20], codigo[4], bairro[10];
float valor, valortotal, meses, mesesloc;

};

const int MAX = 3;

struct TFicha vetimovel[MAX];
char p_codigo[4], status;
float mesesloc;
int posicao,x;
int opcao;
int cont = 0;

void xpto()
{
switch (opcao)
{
case 1:
if (cont == MAX)
{
cout<<"Cadastro cheio \n";
}
else
{
cout << "Cadastro de Imovel" << endl;

cout << "Codigo:";
cin >> vetimovel[cont].codigo;

cout << "Nome do proprietario: ";
cin >> vetimovel[cont].propri;

cout << "Bairro:";
cin >> vetimovel[cont].bairro;

status = 'L';

cout <<"Preco do Aluguel:";
cin >> vetimovel[cont].valor;

cont++;
}
break;
case 2:
cout << "Consultar Imovel \n";
cout << "Informe o seu codigo:";
cin >> p_codigo;
posicao = -1;

for (x=0; x <cont; x++)
{
if (strcmp(p_codigo,vetimovel[x].codigo) == 0)
{
posicao = x;
}
}

if (posicao == -1)
{
cout << "Imovel nao cadastrado." << endl;
}
else
{
cout << "\n bairro: "
<< vetimovel[posicao].bairro;
cout << "\n preco do Alugel: "
<< vetimovel[posicao].valor;
cout << "\n Status:"
<< status<<endl;

if (status=='A')
cout << "Meses Alugado:"
<< vetimovel[x].meses
<< endl;
}
break;


case 3:
cout << "Alugar Imovel \n";
cout << "Informe o codigo:";
cin >> p_codigo;

posicao = -1;
for (x=0; x < cont; x++)
{
if (strcmp(p_codigo, vetimovel[x].codigo) == 0)
{
posicao = x;
}
}

if (posicao == -1)
{
cout << "Imovel nao cadastrado." << endl;
}
else
{
if (status=='A')
cout << "Imovel ja alugado." << endl;
else if (status== 'L')
{

cout << "Nome do proproetario:"
<< vetimovel[posicao].propri
<< endl;

cout << "Meses que ficara locado:"
<< vetimovel[posicao].mesesloc;

status='A';
}
}
break;

case 4:
cout << "Desocupacao do Imovel \n";
cout << "Informe o codigo:";
cin >> p_codigo;

posicao = -1;

for (x=0; x < cont; x++)
{
if (strcmp(p_codigo, vetimovel[x].codigo) == 0)
{
posicao = x;
}
}

if (posicao == -1)
{
cout << "Imovel nao cadastrado." << endl;
}
else
{
if (status=='L')
cout << "Este imovel nao esta alugado." << endl;
else if (status=='A')
{
status='L';

vetimovel[posicao].valortotal = vetimovel[posicao].valor * mesesloc;

cout << endl
<< "Valor total a ser pago:"
<< endl
<< vetimovel[posicao].valortotal
<< endl;
}
}
break;
case 5:
for(x=0;x<cont;x++)
{
cout << "\n proprietario...: " << vetimovel[x].propri;
cout << "\n codigo...: " << vetimovel[x].codigo ;
cout << "\n bairro...: " << vetimovel[x].bairro;
cout << "\n valor...: " << vetimovel[x].valor<<endl;
}
break;
case 6:
cout << "Programa encerrado....\n\n";
break;
default:
cout << "\n\n OPCAO INVALIDA \n";
break;


}
}

int main()
{
do
{
cout<< "Menu \n";
cout<< "1. Cadastrar Imovel \n";
cout << "2. Consultar Imovel \n";
cout << "3. Alugar Imovel \n";
cout << "4. Desocupacao do Imovel \n";
cout << "5. Listar \n";
cout << "6. SAIR \n";

cout << "Informe a opcao desejada: ";
cin >> opcao;

xpto();

}while (opcao !=6);

}

Link para o comentário
Compartilhar em outros sites

valeu cara, é porque to aprendendo sozinho e tem muita coisa que fico perdido e vou na tentativa e erro.

E acho mais fácil usar cout/cin do que printf/sanf.

Estou ligado que tem muita gente nessa situação, por isso criei um exemplo para as pessoas enxergarem o que é possível fazer versus o que elas estão fazendo.

Claro que ninguém vai aprender a programar em um fórum, mas as vezes as pessoas precisam de um indicador.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...