用C++制作图表

Making a Chart in C++

本文关键字:C++      更新时间:2023-10-16

问题

我正在制作一个从摄氏度到华氏度的转换器,反之亦然。

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

输出温度为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         
...

您已经在打印对齐的列,只是列数不够。

从打印开始

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

想想你必须在程序中更改什么才能打印出你想要的图表。

您已经一行一行打印出来了,并且打印出了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部分。

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

相关文章:
  • 没有找到相关文章