用C ++制作图表

时间:2011-09-17 21:45:21

标签: c++ charts

问题

我正在向华氏转换器提供摄氏温度,反之亦然。

我的所有代码都很完美,但我不知道如何制作老师想要的图表。

输出为0到100摄氏度,32到212华氏度。

这是我的代码:

#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;
}

这是我的输出:

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
            ...

这是我老师想要的: 摄氏度从0到100度。

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
    ...

华氏温度相同,但从32度到212度......

我知道如何使用setw()将数字与单词对齐,但我不知道如何做列。

任何想法或建议都将不胜感激!


解决方案

感谢大家的帮助。我想了几分钟后想出来了!

#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;
}

我的输出:

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         
...

2 个答案:

答案 0 :(得分:2)

你已经打印了对齐的列,但还不够。

首先打印

Farenheit equivalents of Celsius temperatures:  
Celsius Farenheit Celsius Farenheit Celsius Farenheit Celsius Farenheit  
      0        32       0        32       0        32       0        32  
      1        33       1        33       1        33       1        33
    ...  

并考虑在程序中需要更改哪些内容以打印所需的图表。

答案 1 :(得分:0)

您已经逐行打印,并打印出25行。现在考虑每列与每行的前一列之间的关系:

baseC   toF(baseC)   baseC+numRows   toF(baseC+numRows)     baseC+(2*numRows) ...
baseC+1 toF(baseC+1) baseC+1+numRows toF(baseC+1+numRows) baseC+1+(2*numRows) ...

行数与用于计算循环次数的值相同。

循环变量将处理baseC+X部分。

注意:这是伪代码,所以不要指望它直接工作:)