Beleza cara? Fiz esse código rapidinho... roda, mas a parte final de ordenação/escrita está com falhas. Estou sem tempo para mexer mais, mas deve ajudar. Flws... PS: Eu fiz para dois produtos para facilitar os testes, mas em quant você altera à vontade. Se quebrar mais a cabeça, pode fazê-lo "genérico" - para qualquer quant de produtos - ótimo exercício, você precisaria de usar ponteiros Boa sorte
#include <iostream>
#include <stdlib.h>
#define QUANT 2
char lista[QUANT];
double pc[QUANT], pv[QUANT], lucro[QUANT], lucro2[QUANT];
int confirma=1, indice[QUANT];
void main(void)
{
// Solicita ao usuario a entrada dos dados
do {
cout<<endl<<"Por favor, escreva o codigo do produto e seus respectivos precos de compra e venda"<<endl;
for(int temp=0;temp<QUANT;temp++)
cin>>lista[temp]>>pc[temp]>>pv[temp];
cout<<endl<<"A lista desejada é essa:"<<endl;
for(int temp=0;temp<QUANT;temp++)
cout<<lista[temp]<<"\t"<<pc[temp]<<"\t"<<pv[temp]<<endl;
cout<<endl<<"Confirma? (digite 0 para sim)"<<endl;
cin>>confirma;
}
while(confirma!=0);
// Calculo lucro
for (int temp=0;temp<QUANT;temp++)
{
lucro[temp]=(pv[temp] -pc[temp])*100;
lucro[temp]=(lucro[temp])/pc[temp];
lucro2[temp]=lucro[temp];
};
// Ordenacao - bem simples
for(int temp=0;temp<QUANT;temp++)
{
for(int temp2=0;temp2<QUANT;temp2++)
{
indice[temp]=temp;
VOLTA: if (lucro2[temp]<=lucro[temp2])
{
indice[temp]=temp2;
lucro2[temp]=lucro[temp2];
if(temp=QUANT-1) goto VOLTA;
};
};
}
// Escrita
cout<<endl<<"O lucro que produto tras é, na ordem decrescente:"<<endl;
for(int temp=0;temp<QUANT;temp++)
{
cout<<lista[indice[temp]]<<"\t"<<lucro[indice[temp]]<<" %\t"<<pc[indice[temp]]<<"\t"<<pv[indice[temp]]<<endl;
cout<<indice[temp]<<temp;
};
system("PAUSE");
}