summarize issue (c++)

Hey, I need some help to make my code look little bit smarter. It works as I want it to, but as you can see it looks quite stupid at the moment.

So you guys have some tips how to make it shorter and "better"?

whole code in pastebin : http://pastebin.com/A3EtUJPx

Issues I mainly mean:

1. this int/double hell could be written somehow shorter
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
double lämpötila[LÄMMÖT] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int kaupunki[KAUPLKM] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int valinta = 0;
int kuo_laskuri = 0;
int lah_laskuri = 0;
int lap_laskuri = 0;
int maa_laskuri = 0;
int mik_laskuri = 0;
int oul_laskuri = 0;
int rov_laskuri = 0;
int sav_laskuri = 0;
int tur_laskuri = 0;
int kuo_kierroslaskuri = 1;
int lah_kierroslaskuri = 1;
int lap_kierroslaskuri = 1;
int maa_kierroslaskuri = 1;
int mik_kierroslaskuri = 1;
int oul_kierroslaskuri = 1;
int rov_kierroslaskuri = 1;
int sav_kierroslaskuri = 1;
int tur_kierroslaskuri = 1;
double kuo_lampo;
double lah_lampo;
double lap_lampo;
double maa_lampo;
double mik_lampo;
double oul_lampo;
double rov_lampo;
double sav_lampo;
double tur_lampo;
double kuo_apu = 0;
double lah_apu = 0;
double lap_apu = 0;
double maa_apu = 0;
double mik_apu = 0;
double oul_apu = 0;
double rov_apu = 0;
double sav_apu = 0;
double tur_apu = 0;
double kokolampo = 0;
int yhtlkm = 0;
int hel_laskuri = 0; 
int hel_kierroslaskuri = 1;
double hel_lampo;
double hel_apu = 0;


2. my counter.. if one slot in "define LÄMMÖT 10" is left as zero or not any value is given it dont count
 
kokolampo = ( lämpötila[1] + lämpötila[2] + lämpötila[3] + lämpötila[4] + lämpötila[5] + lämpötila[6] + lämpötila[7] + lämpötila[8] + lämpötila[9] + lämpötila[0] ) / yhtcounter;

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
system("cls");
int counter = 0;
int yhtcounter = 0;
			
if ( lämpötila[0] > 0)
{
counter = counter + 1;
}
if ( lämpötila[1] > 0)
{
counter = counter + 1;
}
if ( lämpötila[2] > 0)
{
counter = counter + 1;
}
if ( lämpötila[3] > 0)
{
counter = counter + 1;
}
if ( lämpötila[4] > 0)
{
counter = counter + 1;
}
if ( lämpötila[5] > 0)
{
counter = counter + 1;
}
if ( lämpötila[6] > 0)
{
counter = counter + 1;
}
if ( lämpötila[7] > 0)
{
counter = counter + 1;
}
if ( lämpötila[8] > 0)
{
counter = counter + 1;
}
if ( lämpötila[9] > 0)
{
counter = counter + 1;
}
yhtcounter = counter;


3. printing "#defines"
1
2
3
4
5
6
7
8
9
10
11
printf("Helsinki     : lämpötila: %.2lf	*C  mittauspisteiden lkm: %d\n" ,lämpötila[0] , kaupunki[0]);
printf("Kuopio       : lämpötila: %.2lf	*C  mittauspisteiden lkm: %d\n" ,lämpötila[1] , kaupunki[1]);
printf("Lahti        : lämpötila: %.2lf	*C  mittauspisteiden lkm: %d\n" ,lämpötila[2] , kaupunki[2]);
printf("Lappeenranta : lämpötila: %.2lf	*C  mittauspisteiden lkm: %d\n" ,lämpötila[3] , kaupunki[3]);
printf("Maarianhamina: lämpötila: %.2lf	*C  mittauspisteiden lkm: %d\n" ,lämpötila[4] , kaupunki[4]);
printf("Mikkeli      : lämpötila: %.2lf	*C  mittauspisteiden lkm: %d\n" ,lämpötila[5] , kaupunki[5]);
printf("Oulu         : lämpötila: %.2lf	*C  mittauspisteiden lkm: %d\n" ,lämpötila[6] , kaupunki[6]);
printf("Rovaniemi    : lämpötila: %.2lf	*C  mittauspisteiden lkm: %d\n" ,lämpötila[7] , kaupunki[7]);
printf("Savonlinna   : lämpötila: %.2lf	*C  mittauspisteiden lkm: %d\n" ,lämpötila[8] , kaupunki[8]);
printf("Turku        : lämpötila: %.2lf	*C  mittauspisteiden lkm: %d\n\n" ,lämpötila[9] , kaupunki[9]);
printf("Keskiarvo    : lämpötila: %.2lf	*C  mittauspisteiden lkm: %d\n\n" , kokolampo , yhtlkm);


Thanks for your time,
Tanhua
Last edited on
For starters, loops can be your best friend. Using them correctly can shorten your code dramatically.
**See flow control: http://www.cplusplus.com/doc/tutorial/control/
**And loops: http://www.cprogramming.com/tutorial/lesson3.html

For the IF statements, you can use SWITCH case statements instead. This may or may not shorten your code (depends on how you use them). Sometimes it allows for better flow control.
**See switch cases: http://www.cprogramming.com/tutorial/lesson5.html

Lastly (and this is purely subjective), you can declare your variables horizontally as opposed to vertically.
Example: int num1, num2, num3;
As opposed to:
int num1;
int num2;
int num3;

If you really need every single one of those variables, its either a long list vertically or a long list horizontally.
However, loops could remove the need for all of those variables.

Have fun coding!
Topic archived. No new replies allowed.