Ir ao conteúdo

erro com codigo


morpheurei

Posts recomendados

Postado

Galera, alguém pode me ajudar com esse código? Não estou conseguindo achar o erro!!!



//1) Crie o programa Produtos
//a) Crie uma estrutura Produto que tenha como campos código, descrição e valor.

//b) Na função main declare um vetor para conter cinco elementos do tipo e chame as demais funções para execução após serem criadas.

//c) Crie a função preencher os dados (código, descrição e valor) para os cinco produtos.

//d) Crie a função imprimir para mostrar os dados cadastrados.

//e) Crie a função para calcular a soma do valor de todos os produtos.

//f) Crie a função para calcular a media do valor de todos os produtos.

//g) Crie a função para calcular e mostrar o valor do produto mais caro.

//h) Crie a função para calcular e mostrar o valor do produto mais barato.

#include <iostream>
#include <string>
#include <conio.h>
#include <stdlib.h>
using namespace std;

typedef struct produto
{
int codigo;
string descricao;
float valor;
}Produto;

void preencherDados(Produto aux[], int t);
void imprimir(Produto aux[], int t);
void calcSomaProdutos(Produto aux[], int t);
void calcMediaProdutos(Produto aux[], int t);
void calcMaisCaro(Produto aux[], int t);
void calcMaisBarato(Produto aux[], int t);


int main(){
system("color 1f");
Produto vet[2];
preencherDados(vet, 2);
imprimir (vet, 2);
calcSomaProdutos(vet,2);
calcMediaProdutos(vet, 2);
calcMaisCaro(vet, 2);
calcMaisBarato(vet, 2);

system ("pause");
}

void preencherDados(Produto aux[], int t){

for (int i=0; i<t; i++){
cout<<"Digite o codigo do produto"<<endl;
cin>> aux[i].codigo;
cout<< "Digite a descricao do produto : "<<endl;
cin>> aux[i].descricao;
cout<< "Digite o valor do produto : "<<endl;
cin>> aux[i].valor;
}
}

void imprimir(Produto aux[], int t){
for (int i=0; i<t; i++){
cout<<"-----------os dados cadastrados do "<<(i+1)<<"º produto------------"<<endl;
cout<< "Codigo do produto: "<<aux[i].codigo <<endl;
cout<< "Descricao do produto: "<<aux[i].descricao <<endl;
cout<< "Valor do produto: "<<aux[i].valor <<endl;

}
}

void calcSomaProdutos(Produto aux[], int t){
float soma=0;
for (int i=0; i<t; i++){
soma=soma+1;
}

}

void calcMediaProdutos(Produto aux[], int t){
float somamedia=0;
float media=0;
for (int i=0; i<t; i++){
media=somamedia/i;
}
}

void calcMaisCaro(Produto aux[], int t){
float maiscaro=0;
for (int i=0; i<t; i++){
if(aux[i].valor>maiscaro)
maiscaro=aux[i].valor;
}
}
void calcMaisBarato(Produto aux[], int t){
float maisbarato=0;
for (int i=0; i<t; i++){
if(aux[i].valor>maisbarato)
maisbarato=aux[i].valor;
}
}




cout<<"A soma do valor de todos os produtos é: " <<soma<<endl;
cout<<"A media do valor de todos os produtos é: " <<media<<endl;
cout<<"O valor do produto mais caro é: " <<maiscaro<<endl;
cout<<"O valor do produto mais barato é: " <<maisbarato<<endl;

}









//getch();










Postado

Não é exatamente da forma como está pedindo, mas eu resolveria o problema conforme abaixo.

Se você puder usar ponteiro, esse programa pode te ajudar a aplicar isso no seu código.

#include <iostream>
using namespace std;

const int MAX = 5;

typedef struct produto{
int codigo;
string descricao;
float valor;
}PROD;

typedef struct info{
float soma;
float media;
float maior;
float menor;
}INFO;

PROD *cadastra(int);
INFO *calculo(PROD*, int);
void imprime(PROD*, int);

int main(void){
PROD *p;
INFO *i;

p = cadastra(MAX);
cout << endl << "------ IMPRIMINDO REGISTROS --------" << endl;
imprime(p, MAX);
cout << endl << "------ OUTRAS informações ----------" << endl;

i = calculo(p, MAX);

cout << "Mais caro = " << i->maior << endl;
cout << "Mais Barato = " << i->menor << endl;
cout << "Media = " << i->media << endl;
cout << "Soma = " << i->soma << endl;

delete []p;
delete i;
return 0;
}

PROD *cadastra(int t){
int i;
PROD *p = new PROD[t];

for(i = 0; i < t; ++i){
cout << "Entre com o codigo #" << i + 1 << " ";
cin >> p[i].codigo;
cout << "Entre com a descricao #" << i + 1 << " ";
cin.ignore();
getline(cin, p[i].descricao);
cout << "Entre com o valor #" << i + 1 << " ";
cin >> p[i].valor;
cout << endl;
}

return p;
}

INFO *calculo(PROD *p, int t){
INFO *i = new INFO;
int n;
bool ini_menor = true;

i->maior = 0;

for(n = 0; n < t; ++n){
i->soma += p[n].valor;

if (ini_menor == true){
i->menor = p[n].valor;
ini_menor = false;
}

if (p[n].valor > i->maior)
i->maior = p[n].valor;

if (p[n].valor < i->menor)
i->menor = p[n].valor;
}

i->media = i->soma / t;

return i;
}

void imprime(PROD *p, int t){
int i;
for(i = 0; i < t; ++i){
cout << "Codigo: #" << i + 1 << " " << p[i].codigo << endl;
cout << "Descricao: #" << i + 1 << " " << p[i].descricao << endl;
cout << "Valor: #" << i + 1 << " " << p[i].valor << endl;
}
}

Postado

Valeu olliver.soul, mas eu estou começando agora com C++ e não vi ainda sobre ponteiros. Os erros que aparecem quando compilo são esses:

91 C:\Modulo III\Alice\dev.C\Produtos.cpp expected constructor, destructor, or type conversion before '<<' token

91 C:\Modulo III\Alice\dev.C\Produtos.cpp expected `,' or `;' before '<<' token

91 C:\Modulo III\Alice\dev.C\Produtos.cpp expected `,' or `;' before '<<' token

92 C:\Modulo III\Alice\dev.C\Produtos.cpp expected `,' or `;' before '<<' token

93 C:\Modulo III\Alice\dev.C\Produtos.cpp expected constructor, destructor, or type conversion before '<<' token

93 C:\Modulo III\Alice\dev.C\Produtos.cpp expected `,' or `;' before '<<' token

94 C:\Modulo III\Alice\dev.C\Produtos.cpp expected constructor, destructor, or type conversion before '<<' token

94 C:\Modulo III\Alice\dev.C\Produtos.cpp expected `,' or `;' before '<<' token

96 C:\Modulo III\Alice\dev.C\Produtos.cpp expected declaration before '}' token

Alguém pode me ajudar a interpretar esses erros? Eu não consegui. Obrigado!

Postado
Parece que são erros de sintaxe.

Pode postar o seu código atual?

O código é esse:


#include <iostream>
#include <string>
#include <conio.h>
#include <stdlib.h>
using namespace std;

typedef struct produto
{
int codigo;
string descricao;
float valor;
}Produto;

void preencherDados(Produto aux[], int t);
void imprimir(Produto aux[], int t);
void calcSomaProdutos(Produto aux[], int t);
void calcMediaProdutos(Produto aux[], int t);
void calcMaisCaro(Produto aux[], int t);
void calcMaisBarato(Produto aux[], int t);


int main(){
system("color 1f");
Produto vet[2];
preencherDados(vet, 2);
imprimir (vet, 2);
calcSomaProdutos(vet,2);
calcMediaProdutos(vet, 2);
calcMaisCaro(vet, 2);
calcMaisBarato(vet, 2);

system ("pause");
}

void preencherDados(Produto aux[], int t){

for (int i=0; i<t; i++){
cout<<"Digite o codigo do produto"<<endl;
cin>> aux[i].codigo;
cout<< "Digite a descricao do produto : "<<endl;
cin>> aux[i].descricao;
cout<< "Digite o valor do produto : "<<endl;
cin>> aux[i].valor;
}
}

void imprimir(Produto aux[], int t){
for (int i=0; i<t; i++){
cout<<"-----------os dados cadastrados do "<<(i+1)<<"º produto------------"<<endl;
cout<< "Codigo do produto: "<<aux[i].codigo <<endl;
cout<< "Descricao do produto: "<<aux[i].descricao <<endl;
cout<< "Valor do produto: "<<aux[i].valor <<endl;

}
}

void calcSomaProdutos(Produto aux[], int t){
float soma=0;
for (int i=0; i<t; i++){
soma=soma+1;
}

}

void calcMediaProdutos(Produto aux[], int t){
float somamedia=0;
float media=0;
for (int i=0; i<t; i++){
media=somamedia/i;
}
}

void calcMaisCaro(Produto aux[], int t){
float maiscaro=0;
for (int i=0; i<t; i++){
if(aux[i].valor>maiscaro)
maiscaro=aux[i].valor;
}
}
void calcMaisBarato(Produto aux[], int t){
float maisbarato=0;
for (int i=0; i<t; i++){
if(aux[i].valor>maisbarato)
maisbarato=aux[i].valor;
}
}

cout<<"A soma do valor de todos os produtos é: " <<soma<<endl;
cout<<"A media do valor de todos os produtos é: " <<media<<endl;
cout<<"O valor do produto mais caro é: " <<maiscaro<<endl;
cout<<"O valor do produto mais barato é: " <<maisbarato<<endl;

}

Postado

morpheurei

Coloque cada linha de "cout" dentro das respectivas funções que possuam a declaração da variável que você quer mostrar e retire "}" do trecho que colei acima.

Isso já deve resolver o problema de compilação.

Postado

ScreenBlack, fiz o que você sugeriu, e resolveu sim o problema da compilação. Agora, cara, estou apanhando com os cálculos da média e do valor mais barato! o cálculo da soma e do valor mais caro deu certo, mas esses dois....se puder me dá uma luz ae nesses raciocínios, eu agradeço!

Obrigado. Segue os trechos:


void calcMediaProdutos(Produto aux[], int t){
float media=0;
float soma;
for (int i=0; i<t; i++){
media=soma/i;
}
cout<<"A media do valor de todos os produtos é: " <<media<<endl;
}

void calcMaisBarato(Produto aux[], int t){
float maisbarato=0;
for (int i=0; i<t; i++){
if(aux[i].valor<maisbarato)
maisbarato=aux[i].valor;
}
cout<<"O valor do produto mais barato é: " <<maisbarato<<endl;
}

Postado

Você pode usar o conceito do código que eu postei acima.

No caso do mais barato, por exemplo.

Antes de

if(aux[i].valor<maisbarato)

Atribua o valor do primeiro índice o vetor para a variável maisbarato. Porém, isso deve ser feito apenas uma vez (no primeiro loop). Por isso crie um flag para verificar.


bool ini_menor = true;

for(n = 0; n < t; ++n){
.
.
.
if (ini_menor == true){
i->menor = p[n].valor;
ini_menor = false;
}
.
.
.
if (p[n].valor < i->menor)
i->menor = p[n].valor;
.
.
.

No caso da média, some todos os elementos do vetor e depois divida pelo contador.

  • Moderador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!