使用for循环c ++的温度表

时间:2016-02-15 23:24:53

标签: c++ c++11

编码的新手,我在这个问题上已经停留了一段时间。我需要制作一个以摄氏度输入温度的程序和一个输入总共20行的增量。在这个过程中,它转换为华氏,开尔文和兰金。这一切都很好,但我无法通过输入来增加值。

例如,应该看起来:

在Cel中输入温度:50

输入增量:5

  Cel   Far   Kel  Rank

1 - 50 ................................

2 - 55 ..............................

3 - 60 ..............................

。 。 。

20 - 150 .............................

我无法让值增加。正在阅读我的笔记并在网上查看以了解问题但没有运气。

#include <iostream>
#include <math.h>
#include <iomanip>

using namespace std;
int main()
{
    int CELS; // celsius entry
    int x; // x = input value for increment
    double FAH = (CELS * (9.0 / 5) + 32); // farenheit conversion
    double KEL = (CELS + 273.15); // kelvin conversion
    double RANK = ((CELS + 273.15) * (9.0 / 5)); // rankine conversion

    cout << "Enter the temperature in celsius: ";
    cin >> CELS;
    while ((CELS < -273.15) || (CELS > 5000))
    {
        cout << "ERROR: out of range." << endl;
        cout << "Enter the temperature in celsius: ";
        cin >> CELS;
    }
    cout << "Enter the increment value: ";
    cin >> x;
    cout << endl;
    cout << "         #      Cels       Fahr     Kel       Rank" << endl;

    cout << right;
    for (int i = 1; i <= 20; i++)
    { //
        for (double j = CELS; j <= CELS; x++)
        { //
            for (double k = (CELS * (9.0 / 5) + 32);
                    k <= (CELS * (9.0 / 5) + 32); x++)
            {
                for (double m = (CELS + 273.15); m <= (CELS + 273.15); x++)
                {
                    for (double n = ((CELS + 273.15) * (9.0 / 5));
                            n <= ((CELS + 273.15) * (9.0 / 5)); x++)
                    {

                        cout << setw(10) << i << setw(10) << j << setw(10) << k
                                << setw(10) << m << setw(10) << n << endl;
                    }
                }
            }
        }
    }
}

忽略为什么我在for循环中有我的公式。公式没有使用声明的变量,所以刚才这样做了。

3 个答案:

答案 0 :(得分:0)

你需要一个for循环,递增x。 (嵌套的for循环是一个错误)

从您需要的one,single for循环开始:通过输出表的行计算的那个。

在循环体中,计算该行所需的一切,并输出它。

这样的事情:

malloc()

答案 1 :(得分:0)

计算必须在您更改CELS值的循环中。 应该有一个循环。结果看起来像这样。见live demo

for (int i = 1; i <= 20; i++, CELS+=x)
{ 
    double FAR = (CELS * (9.0 / 5) + 32); // farenheit conversion
    double KEL = (CELS + 273.15); // kelvin conversion
    double RANK = ((CELS + 273.15) * (9.0 / 5)); // rankine conversion

    cout << setw(10) << i   << setw(10) << CELS << setw(10) << FAR 
         << setw(10) << KEL << setw(10) << RANK << endl;
}

答案 2 :(得分:0)

您可以使用一些用户定义的函数来计算从摄氏度到其他单位的转换。

然后你只需要一个循环:

#include <iostream>
#include <iomanip>

using std::cout;
using std::cin;
using std::setw;

// define some constant
const double zero_point = 273.15;
constexpr double factor = 9.0 / 5.0;
const double max_cels = 5000;

// farenheit conversion
double cels_to_far( double cels ) {
    return cels * factor + 32.0;
}

// kelvin conversion
double cels_to_kel( double cels ) {
    return cels + zero_point;
}

// rankine conversion
double cels_to_ran( double cels ) {
    return ( cels + zero_point ) * factor;
}

int main()
{
    double temp_cels;
    double delta_t;

    cout << "Enter the temperature in celsius: ";
    cin >> temp_cels;
    while ((temp_cels < -zero_point) || (temp_cels > 5000)) {
        cout << "ERROR: out of range.\n";
        cout << "Enter the temperature in celsius: ";
        cin >> temp_cels;
    }
    cout << "Enter the increment value: ";
    cin >> delta_t;
    cout << "\n         #      Cels      Fahr       Kel      Rank\n";

    // output loop
    for ( int i = 0; i < 20; ) { 
        cout << setw(10) << ++i << std::fixed << std::setprecision(2)
            << setw(10) << temp_cels 
            << setw(10) << cels_to_far(temp_cels) 
            << setw(10) << cels_to_kel(temp_cels)
            << setw(10) << cels_to_ran(temp_cels) << std::endl;
        temp_cels += delta_t;
    }
}

输出与预期一致(50摄氏度,增量为5°):

 #      Cels      Fahr       Kel      Rank
 1     50.00    122.00    323.15    581.67
 2     55.00    131.00    328.15    590.67
 3     60.00    140.00    333.15    599.67
 4     65.00    149.00    338.15    608.67
 5     70.00    158.00    343.15    617.67
 6     75.00    167.00    348.15    626.67
 7     80.00    176.00    353.15    635.67
 8     85.00    185.00    358.15    644.67
 9     90.00    194.00    363.15    653.67
10     95.00    203.00    368.15    662.67
11    100.00    212.00    373.15    671.67
12    105.00    221.00    378.15    680.67
13    110.00    230.00    383.15    689.67
14    115.00    239.00    388.15    698.67
15    120.00    248.00    393.15    707.67
16    125.00    257.00    398.15    716.67
17    130.00    266.00    403.15    725.67
18    135.00    275.00    408.15    734.67
19    140.00    284.00    413.15    743.67
20    145.00    293.00    418.15    752.67