Ir ao conteúdo
  • Cadastre-se
kor1

Ajuda com exercício struct

Recommended Posts

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);
}

Compartilhar este post


Link para o post
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);

}

  • Curtir 1

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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.

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

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





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

×