Help with decimal places.

Can anyone help me get a certain number to become a double.
I made the part bold and italic below.
I need the average to become a double even though it is at first an int.

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include<iostream>
#include <fstream>
using namespace std;
ifstream infile("in1.dat");
ofstream outfile("out1.txt");
bool validtemperature(int,int,int);
int classify(int,int,int);
double findavg(int,int,int);
int whatseason(double);
bool isvalid(int);
int main()
{
    
    int num1, num2, num3, result, count_valid=0, count_invalid=0;
    int totalgroups=0;
    bool valid;
    
    if(!infile)
    {
         cout << "unable to open file for reading";
    }    
    
    
    
    infile >> num1 >> num2 >> num3;
    while (infile) {
    
    cout<<num1<<" "<<num2<<" "<<num3<<endl;
    valid=validtemperature(num1,num2,num3);
    if (valid==true){
         cout<<"The set of temperatures is valid"<<endl;
         count_valid++;
         classify(num1,num2,num3);
         infile >> num1 >> num2 >> num3;
    }
    else if(valid==false){
              cout<<"The set of temperatures is invalid"<<endl<<endl;
              count_invalid++;
              infile >> num1 >> num2 >> num3;
              }
    totalgroups++;          
    }
    
    
infile.close();
outfile.close();    
system ("pause");
return 0;
}


//Check to see if temperature>=-10 and <=105
bool validtemperature(int x,int y,int z){

    bool validx, validy, validz;

    validx=isvalid(x);
    validy=isvalid(y);
    validz=isvalid(z);
    
    if (validx==true&&validy==true&&validz==true){
         return true;
    }
    else{ 
         return false;
    }
}

//is it valid?
bool isvalid(int x){
     
     
     
     if (x>=-10&&x<=105){
          return true;
     }     
     else if(x<-10){
               cout<<x<<" is too low."<<endl;
               return false;
          }
          else{
               cout<<x<<" is too big."<<endl;
               return false;
          }
     }

//calls find average and then calls whatseason with average
int classify(int x,int y,int z){
    
    double average;
    
    average=findavg(x,y,z);
    whatseason(average);
    
}

//finds average of the 3 intergers from data file
double findavg(int x,int y,int z){
    
    int sum;
    double avg;
    
    sum=x+y+z;
    avg=sum/3;
    
    return avg;
}

//tells you what season it is according to the temperature
int whatseason(double x){
       cout<<"The average is "<<x<<endl;
       
       if(x>=100)
            cout<<"It is roasting season"<<endl<<endl;
       else if(x>=80&&x<100)
                 cout<<"It is summer"<<endl<<endl;
       else if(x>=60&&x<80)
                 cout<<"It is spring"<<endl<<endl;
       else if(x>=40&&x<60)
                 cout<<"It is fall"<<endl<<endl;
       else if(x>=0&&x<40)
                 cout<<"It is winter"<<endl<<endl;
       else if(x<0)
                 cout<<"It is freezin' season"<<endl<<endl;
return 0;
}
`
1
2
3
4
5
int sum;
double avg;
    
sum=x+y+z;
avg=sum/3;

The sum/3 is an integer division so it will truncate anything past the decimal point. To remedy this, you can cast one of the operands in the division to a double, or you can make sum a double.
thank you shacktar!
Topic archived. No new replies allowed.