Give selling total for each month then display months with highest and lowest values.

Is there a way of doing this program without using lots of nested if's?

I wrote the following, trying to use array, but it didn't work for minValue (which always display the value of first month):

#include <iostream>
using namespace std;
int mes=12,Min=0,Max=65535,x;
float totVenda1,totVenda2,totVenda3,totVenda4,totVenda5,totVenda6, totVenda7,totVenda8,totVenda9,totVenda10,totVenda11,totVenda12;//venda=selling
int main()
{
cout<<"\n***Exercise 3***\n";
cout<<"\nQual o valor de venda em janeiro? ";//what selling value in january?
cin>>totVenda1;
cout<<"\nQual o valor de venda em fevereiro? ";//what selling value in february?
cin>>totVenda2;
cout<<"\nQual o valor de venda em marco? ";//etc
cin>>totVenda3;
cout<<"\nQual o valor de venda em abril? ";
cin>>totVenda4;
cout<<"\nQual o valor de venda em maio? ";
cin>>totVenda5;
cout<<"\nQual o valor de venda em junho? ";
cin>>totVenda6;
cout<<"\nQual o valor de venda em julho? ";
cin>>totVenda7;
cout<<"\nQual o valor de venda em agosto? ";
cin>>totVenda8;
cout<<"\nQual o valor de venda em setembro? ";
cin>>totVenda9;
cout<<"\nQual o valor de venda em outubro? ";
cin>>totVenda10;
cout<<"\nQual o valor de venda em novembro? ";
cin>>totVenda11;
cout<<"\nQual o valor de venda em dezembro? ";
cin>>totVenda12;
int Array[] = {totVenda1,totVenda2,totVenda3,totVenda4,totVenda5, totVenda6,totVenda7,totVenda8,totVenda9,totVenda10,totVenda11, totVenda12};
int maxValue=1;
for (int i=1; i<13;i++)
{
if (Array[i] > maxValue)
maxValue = Array[i];
}
if (maxValue==1)
maxValue=totVenda1;
else if (maxValue==2)
maxValue=totVenda2;
else if (maxValue==3)
maxValue=totVenda3;
else if (maxValue==4)
maxValue=totVenda4;
else if (maxValue==5)
maxValue=totVenda5;
else if (maxValue==6)
maxValue=totVenda6;
else if (maxValue==7)
maxValue=totVenda7;
else if (maxValue==8)
maxValue=totVenda8;
else if (maxValue==9)
maxValue=totVenda9;
else if (maxValue==10)
maxValue=totVenda10;
else if (maxValue==11)
maxValue=totVenda11;
else if (maxValue==12)
maxValue=totVenda12;
cout<<"\nThe month with highest value: "<<maxValue;

int minValue=1;
for (int i=1; i<13;i++)
{
if (Array[i] < minValue)
minValue = Array[i];
}
if (minValue==1)
minValue=totVenda1;
else if (minValue==2)
minValue=totVenda2;
else if (minValue==3)
minValue=totVenda3;
else if (minValue==4)
minValue=totVenda4;
else if (minValue==5)
minValue=totVenda5;
else if (minValue==6)
minValue=totVenda6;
else if (minValue==7)
minValue=totVenda7;
else if (minValue==8)
minValue=totVenda8;
else if (minValue==9)
minValue=totVenda9;
else if (minValue==10)
minValue=totVenda10;
else if (minValue==11)
minValue=totVenda11;
else if (minValue==12)
minValue=totVenda12;
cout<<"\nThe month with lowest value: "<<minValue;
return 0;
}
teste
Rodrigo,

Estou estudando C++ e vi sua mensagem sobre "maquina de voto", nao consegui postar lá por isso estou colocando o código modificado aqui ok ? Está funcional agora, espero ter ajudado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <curses.h>

int input,cand1,cand2,nulo,total,g,vg,pc_1,pc_2,pc_n;
int main(int argc, char **argv)
{
cand1=0,cand2=0,nulo=0,pc_1=0,pc_2=0,pc_n=0; do
{
printf("\nSEGUNDO TURNO\n\n");
printf("1. Candidato 1\n");
printf("2. Candidato 2\n");
printf("3. Nulo\n");
printf("4. Sair\n"); // Acrescentei uma opção de saida aqui...
printf("\nSeleção: ");
scanf("%i",&input);

switch ( input )
{
case 1: cand1++;    
break;
case 2: cand2++;
break;
case 3: nulo++;
break;
default: printf("Erro, digito invalido! Digite novamente\n");
break;
case 4: printf("Saindo..."); // Mostrei uma mensagem de saida aqui...
break;
}
}
while (input != 4);
total=cand1+cand2+nulo;
g=1; vg=cand1;
if (cand2 > vg) {g = 2; vg = cand2;}
if (nulo > vg) {g = 3; vg = nulo;}
printf("\nNumero do Vencedor = %i", g); // Mudei algumas formatações abaixo...
printf("\nTotal de Eleitores Validos = %i", total);
printf("\n\nNumero de Votos por Candidato\n");
printf("\nCand1 = %i", cand1);
printf("\nCand2 = %i", cand2);
printf("\nNulos = %i", nulo);
printf("\n\nPercentual de Votos\n");
pc_1=cand1*100/total;
pc_2=cand2*100/total;
pc_n=nulo*100/total;
printf("\npercentual cand1 = %i", pc_1);
printf("\npercentual cand2 = %i", pc_2);
printf("\npercentual nulo = %i", pc_n);
return 0;
}
Rodrigo,

Cara estou com insonia e resolvi pensar no seu probleminha com C++;)´ e minha solução foi :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>

using namespace std;

char *mes[]={"Janeiro","Fevereiro","Março","Abril","Maio","Junho",
"Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"};

int i, indice_menor=0, indice_maior=0;
const float Max=100000;
float valor, menor_valor=Max, maior_valor=0;

int main()
{

cout<<"\n***Exercise 3***\n";
for (i=0;i<12;i++){

	cout << "\nQual o valor da venda em " << mes[i] << " ?" << endl;
	cin >> valor;
	if (valor > maior_valor){maior_valor = valor;indice_maior = i;}
	else if (valor < menor_valor){menor_valor = valor;indice_menor = i;}		
}
 	cout<<"\nThe month with highest value is  " << mes[indice_maior] << "  com o valor de " << maior_valor;
 	cout<<"\nThe month with lowest value is  " << mes[indice_menor] <<  "  com o valor de " << menor_valor;
return 0;
}  
Achei um erro no código para o programa desse tópico, na linha 5: "lista2-ex3-v2.cpp:10:60: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]"

Corrigi adicionando const antes de char. Perfeitinho! :D Muuuuuito obrigado!


----------------------------

I found a mistake in the code, line 5: "lista2-ex3-v2.cpp:10:60: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]"

Corrected it adding const before char. Perfect! :D Thanks a looot!



EDIT: Changing the code a bit...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* EXERCÍCIO 3 DA LISTA 2
 * Receber por digitação os valores de vendas totais de cada um dos
 * 12 meses de 2011. Ao final informar qual o número do mês em que
 * houve o maior valor de venda e o de menor valor de venda.*/
#include <iostream>

using namespace std;

const char *mes[]={"Janeiro","Fevereiro","Março","Abril","Maio","Junho",
"Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"};

int i, indice_menor=0, indice_maior=0;
const float Max=100000;
float valor, menor_valor=Max, maior_valor=0;

int main()
{

cout<<"\n***Exercicio 3***\n";
for (i=0;i<12;i++){

	cout << "\nQual o valor da venda em " << mes[i] << " ?" << endl;
	cin >> valor;
	if (valor > maior_valor){maior_valor = valor;indice_maior = i;}
	else if (valor < menor_valor){menor_valor = valor;indice_menor = i;}		
}
	if (maior_valor==1)
 	cout<<"\nO mes com maior venda total foi " << mes[indice_maior] << ", no valor de " << maior_valor << " real.";
 	else cout<<"\nO mes com maior venda total foi " << mes[indice_maior] << ", no valor de " << maior_valor << " reais.";
 	if (menor_valor==1)
 	cout<<"\nO mes com menor venda total foi " << mes[indice_menor] <<  ", no valor de " << menor_valor << " real.";
 	else cout<<"\nO mes com menor venda total foi " << mes[indice_menor] <<  ", no valor de " << menor_valor << " reais.";
return 0;
} 
Last edited on
Thanks Rodrigo,

I have appreciated your hint, I have not tried to search for a solution, because this message is a warning not an error, but you is correct, better than one warning is zero "warnings" .
Thanks a lot !



Valeu pela dica Rodrigo, eu nao me importei com a mensagem pois se tratava de um warning do gcc, mas já corrigi o erro e ficou show. Muito obrigado. Abraços
Last edited on
Topic archived. No new replies allowed.