Problem
I am making a celsius to fahrenheit converter and vice versa.
All of my code works perfect but I am not sure how to make the chart the teacher wants.
The output are of 0 to 100 degrees celsius and 32 to 212 degrees fahrenheit.
Here is my code:
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
using std::setw;
int i;
int ftemp;
int ctemp;
int farToC(int a, int b);
int celToF(int a, int b);
int main (int argc, const char * argv[])
{
cout << "Farenheit equivalents of Celsius temperatures: " << endl;
for(i = 0; i < 5; i++)
{
cout << "Celsius Farenheit ";
}
cout << endl;
for(i = 0; i < 101; i++)
{
cout << setw(7) << i << setw(8) << " " << celToF(i, ftemp)<< endl;
}
cout << endl;
cout << "Celsius equivalents of Farenheit temperatures: " << endl;
for(i = 0; i < 5; i++)
{
cout << "Fahrenheit Celsius ";
}
cout << endl;
for(i = 32; i < 213; i++)
{
cout << setw(10) << i << setw(7) << " " << farToC(i, ctemp)<< endl;
}
cout << endl;
}
int farToC(int a, int b)
{
b = (a - 32) * 5 / 9;
return b;
}
int celToF(int a, int b)
{
b = (a * 9/5) + 32;
return b;
}
Here is my output:
Farenheit equivalents of Celsius temperatures:
Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit
0 32
1 33
2 35
3 37
4 39
5 41
6 42
7 44
8 46
9 48
10 50
...
Celsius equivalents of Farenheit temperatures:
Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius
32 0
33 0
34 1
35 1
36 2
37 2
38 3
39 3
40 4
41 5
42 5
...
Here is what my teacher wants:
celsius from 0 to 100 degrees.
Farenheit equivalents of Celsius temperatures:
Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit
0 32 25 77 50 122
1 33 26 78 51 123
2 35 27 80 52 125
3 37 28 82 53 127
4 39 29 84 54 129
5 41 30 86 55 131
6 42 31 87 56 132
7 44 32 89 57 134
8 46 33 91 58 136
9 48 34 93 59 138
10 50 35 95 60 140
...
And the same for fahrenheit but from 32 to 212 degrees…
I know how to align the numbers with the words using setw() but I am not sure how to do columns.
Any ideas or suggestions would be appreciated!
Solution
Thanks everyone for your help. I figured it out after thinking for a minutes!
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
using std::setw;
int i;
int k;
int ftemp;
int ctemp;
int farToC(int a, int b);
int celToF(int a, int b);
int main (int argc, const char * argv[])
{
cout << "Farenheit equivalents of Celsius temperatures: " << endl;
for(i = 0; i < 5; i++)
{
cout << "Celsius Farenheit ";
}
cout << endl;
for(k = 0; k < 25; k++)
{
for(i = 0; i < 101; i+= 25)
{
cout << setw(7) << i+k << setw(10) << celToF(i+k, ftemp) << " " << setw(10);
}
cout<< endl;
}
cout << endl;
cout << "Celsius equivalents of Farenheit temperatures: " << endl;
for(i = 0; i < 5; i++)
{
cout << "Fahrenheit Celsius ";
}
cout << endl;
for(k = 0; k < 45; k++)
{
for(i = 32; i < 213; i += 45)
{
cout << setw(10) << i+k << setw(8) << farToC(i+k, ctemp) << " " << setw(12);
}
cout << endl;
}
cout << endl;
}
int farToC(int a, int b)
{
b = (a - 32) * 5 / 9;
return b;
}
int celToF(int a, int b)
{
b = (a * 9/5) + 32;
return b;
}
My output:
Farenheit equivalents of Celsius temperatures:
Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit
0 32 25 77 50 122 75 167 100 212
1 33 26 78 51 123 76 168 101 213
2 35 27 80 52 125 77 170 102 215
3 37 28 82 53 127 78 172 103 217
4 39 29 84 54 129 79 174 104 219
5 41 30 86 55 131 80 176 105 221
6 42 31 87 56 132 81 177 106 222
7 44 32 89 57 134 82 179 107 224
8 46 33 91 58 136 83 181 108 226
9 48 34 93 59 138 84 183 109 228
10 50 35 95 60 140 85 185 110 230
...
Celsius equivalents of Farenheit temperatures:
Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius Fahrenheit Celsius
32 0 77 25 122 50 167 75 212 100
33 0 78 25 123 50 168 75 213 100
34 1 79 26 124 51 169 76 214 101
35 1 80 26 125 51 170 76 215 101
36 2 81 27 126 52 171 77 216 102
37 2 82 27 127 52 172 77 217 102
38 3 83 28 128 53 173 78 218 103
39 3 84 28 129 53 174 78 219 103
40 4 85 29 130 54 175 79 220 104
...
You’re already printing aligned columns, just not enough of them.
Start by printing out
and think about what you’d have to change in your program to print the chart you want.