Ir para conteúdo

POWERED BY:

Arquivado

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

734N C354R

logica em algoritmo C++ visual studio 2012

Recommended Posts

pessoal estou no segundo semestre de Sistemas de informaçao durante ums exercicios de aula nao deu pra terminar

mas o mesmo nao estou conseguindo executar nao sei onde encontrar o erro estou utilizando o visual studio 2012 para programar em C++ a linguagem que começamos desde o primeiro semestre to gostando pra caramba das aulas mas to temdo um pouco de dificuldade o codigo este aki:

 

#include <iostream>
#include <string>
using namespace std;
class pessoa{
private:
string nome[30];
string endereco[30];
public:
virtual float calcularnovo(){}
void setnome(){
	cout<<"informe o nome:";
	cin>>nome[30];
}
string getnome(){
	return(nome[30]);
}

void setendereco(){
	cout<<"informe o endereço:";
	cin>>endereco[30];
}
string getendereco(){
	return(endereco[30]);
}
}; 
class pessoafuncionario : public pessoa{
private:
float salario;
float novosalario;
public:
void setsalario(){
	cout<<"informe o salario:";
		cin>>salario;
}
float getsalario(){
return(salario); 
}
float getcalcularnovo(){
	return(novosalario= getsalario() + getsalario() * 0.45+2.30);
}


void getmostrar(){
	cout<<"novo salario: "<<novosalario<<endl;
}

};
class pessoacliente : public pessoa{
private:
float valores;
float novovalor;
float qtdmora;
public:
void setvalores(){
	cout<<"informe o valor:";
		cin>>valores;
}
float getvalores(){
	return(valores);
}
void setnovovalor(){
	cout<<"informe o valor:";
	cin>>novovalor;
}

void setqtdmora(){
	cout<<"informe os dias de atraso:";

	cin>>qtdmora;
}
float getcalcnovovalor(){
    return(valores+(qtdmora*0.02*valores));
}
float getmostrar(){
    return(getcalcnovovalor());
}
};
void main(){
pessoafuncionario pf;
pessoacliente pc;
pf.setnome();
pf.setendereco();
pf.setsalario();
pf.getcalcularnovo();
pf.getmostrar();
cout<<"O valor do Novo salario e: "<<pf.getcalcularnovo();
pc.setvalores();
pc.setnovovalor();
pc.setqtdmora();
pc.getcalcnovovalor();
pc.getmostrar();
cout<<"o valor da nova divida e:"<<pc.getcalcnovovalor();

system("pause")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual erro retorna?

ele retorna este erro e nao compila

 

1>c:\users\slackware\documents\visual studio 2012\projects\exercicios\exercicios\source.cpp(95): fatal error C1075: end of file found before the left brace '{' at 'c:\users\slackware\documents\visual studio 2012\projects\exercicios\exercicios\source.cpp(78)' was matched

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Compartilhar este post


Link para o post
Compartilhar em outros sites

734N C354R,

 

Se o código for exatamente este, está faltando o } da função main.

 

OBS.: Ao postar, observe os erros de português.

 

Espero ter ajudado, FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

734N C354R,

 

Se o código for exatamente este, está faltando o } da função main.

 

OBS.: Ao postar, observe os erros de português.

 

Espero ter ajudado, FLW!

 

 

coloquei a chave la no lugar mas o log de erro este

 

1>------ Build started: Project: exercicios, Configuration: Debug Win32 ------

1> Source.cpp

1>c:\users\slackware\documents\visual studio 2012\projects\exercicios\exercicios\source.cpp(39): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data

1>c:\users\slackware\documents\visual studio 2012\projects\exercicios\exercicios\source.cpp(72): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data

1>c:\users\slackware\documents\visual studio 2012\projects\exercicios\exercicios\source.cpp(9): error C4716: 'pessoa::calcularnovo' : must return a value

========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, vamos parar e ler o que o compilador diz. Não adianta tentar qualquer coisa na louca só pq tem um log de compilação.

 

conversion from 'double' to 'float', possible loss of data

 

Isso quer dizer que você está colocando uma variável do tipo double num espaço alocado p/ float. Double > float. Isso pode levar a representação incorreta (overflow/underflow). Nem é classificado como erro; é só um warning.

 

'pessoa::calcularnovo' : must return a value

 

Isso é um erro de compilação porque o método calcularnovo diz que retorna float, mas na linha 9 ele não retorna nada.

E vamos cuidar também do que escrevemos: string nome[30] não é uma string com 30 posições. É um array de 30 strings. Em C++ string não é um tipo, e sim uma classe.

[/size][/color]
[color=#2E3436][size=2]void setnome() {[/size][/color]
[color="#2E3436"][size="4"]  cout << "Informe o nome:";[/size][/color]
[color="#2E3436"][size="4"]  cin >> nome[30];[/size][/color]
[color="#2E3436"][size="4"]}

Isso não armazena uma string; armazena um char, pois você está definindo uma posição no array de char.

[/size][/color][/font]
[font="Helvetica Neue, Helvetica, Arial, sans-serif"][color="#2e3436"][size="4"]string getnome() {[/size][/color][/font]
[font="Helvetica Neue, Helvetica, Arial, sans-serif"][color="#2e3436"][size="4"]  return nome[30];[/size][/color][/font]
[font="Helvetica Neue, Helvetica, Arial, sans-serif"][color="#2e3436"][size="4"]}

Isso não retorna o nome; retorna o caractere na posição 29 do nome.

O mesmo vale para os métodos getendereco e setendereco.

 

 

float getcalcularnovo() {
  return(novosalario=getsalario() + getsalario() * 0.45 + 2.30);
}

 

Evite, por tudo, atribuição dentro de um return. Só complica a leitura do código.

 

De modo geral, atualizações nas variáveis devem ser realizadas pelos métodos iniciando com set, enquanto que, o retorno dos valores, deve ser feito utilizando-se os métodos iniciados por get. Lembre-se: alta coesão. Método bom é o que não faz de tudo um pouco. Ainda mais numa aplicação tão simples.

 

E main sempre retorna int, e não void.

 

 

#include <iostream>
using namespace std;

class Pessoa {
 protected:
   string nome;
   string endereco;

 public:
   string getNome() {
     return nome;
   }

   void setNome(string aNome) {
     nome = aNome;
   }

   string getEndereco() {
     return endereco;
   }

   void setEndereco(string aEndereco) {
     endereco = aEndereco;
   }
};

class Funcionario : public Pessoa {
 private:
   float salario;

 public:
   void setSalario(float aSalario) {
     if (aSalario < 0) {
       cout << "Não se pode ter salarios menores que zero" << endl;
     } else {
       salario = aSalario;
     }
   }

   float getSalario() {
     return salario;
   }

   float aumentarSalario(float porcentagem = 0.45, float bonus = 2.30) {
     float novoSalario = (1.00 + porcentagem) * getSalario() + bonus;
     return novoSalario;
   }
};

int main(void) {
 Funcionario f1;
 string temp;
 float saltemp;
 cout << "Nome: ";
 cin >> temp;
 f1.setNome(temp);

 cout << "Endereço: ";
 cin >> temp;
 f1.setEndereco(temp);

 cout << "Salario: ";
 cin >> saltemp;
 f1.setSalario(saltemp);

 cout << "Aumentando o salario... " << endl;
 f1.aumentarSalario();
 cout << " Novo salario: " << f1.getSalario();

 return 1;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, vamos parar e ler o que o compilador diz. Não adianta tentar qualquer coisa na louca só pq tem um log de compilação.

 

[/color]

 

Isso quer dizer que você está colocando uma variável do tipo double num espaço alocado p/ float. Double > float. Isso pode levar a representação incorreta (overflow/underflow). Nem é classificado como erro; é só um warning.

 

 

Isso é um erro de compilação porque o método calcularnovo diz que retorna float, mas na linha 9 ele não retorna nada.

E vamos cuidar também do que escrevemos: string nome[30] não é uma string com 30 posições. É um array de 30 strings. Em C++ string não é um tipo, e sim uma classe.

[/size][/color]
[color=#2E3436][size=2]void setnome() {[/size][/color]
[color="#2E3436"][size="4"]  cout << "Informe o nome:";[/size][/color]
[color="#2E3436"][size="4"]  cin >> nome[30];[/size][/color]
[color="#2E3436"][size="4"]}

Isso não armazena uma string; armazena um char, pois você está definindo uma posição no array de char.

%5

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.