将值从一个数组放入另一个数组

时间:2014-04-05 22:11:56

标签: visual-c++ c++11

我在这里不知所措,所以我正在寻找任何提示,指出我正确的方向。我无法弄清楚如何输入我从华氏温度转换为摄氏温度的摄氏温度值。为了这个目的,我尝试在另一个for循环中工作,但它只在第一个for循环计算后输出C的最后一个值。有任何想法吗?提前谢谢。

// Temperature Converter

#include <iostream>
#include <iomanip>

using std::cout;
using std::endl;
using std::setw;

int main()

double temps[] = { 65.5, 68.0, 38.1, 75.0, 77.5, 76.4, 73.8, 80.1, 55.1, 32.3, 91.2, 55.0 };
double centigrade[] = { 0 }, C(0);
int i(0);

cout << setw(13) << "Farenheit " << setw(9) << " Centigrade";
cout << endl;

    for (double t : temps)
    {
      C = (t - 32) * 5 / 9;
      cout << setw(10) << t << setw(12) << C;
      cout << endl;
    }
    for (i = 0; i <= 12; i++)
    {
      centigrade[i] = C;
      cout << centigrade[i] << endl;
    }
return 0;
}

3 个答案:

答案 0 :(得分:1)

以下是基于其他答案的完整工作示例。

#include <iostream>

using std::cout;
using std::endl;

int main() {

    double temps[] = { 65.5, 68.0, 38.1, 75.0, 77.5, 76.4, 73.8, 80.1, 55.1, 32.3, 91.2, 55.0 };
    const int count = sizeof(temps) / sizeof(temps[0]);

    double centigrade[count];

    for (int i = 0; i < count; i++) {
        centigrade[i] = (temps[i] - 32) * 5 / 9;
        cout << centigrade[i] << endl;
    }
    return 0;
}

如果您想在没有显式索引循环的情况下工作,请将double centigrade[count];替换为std::vector<double> centigrade,并将循环替换为:

for (double t : temps)
    centigrade.push_back((t - 32) * 5 / 9);

如果你因某种原因需要一个数组,你可以使用这个技巧来获取一个数组:

 double* array_version = &centigrade[0];

答案 1 :(得分:0)

在第一个循环中将值存储在数组中..

for (i=0;i<=12;i++)
{
     centigrade[i]= (temps[i] - 32) * 5 / 9;
     cout << setw(10) << temps[i] << setw(12) << centigrade[i];
     cout << endl;
}

U可以通过动态查找 temps 数组的大小来推广for循环。可能

  

sizeof (temps)/ sizeof (temps [0]);

还相应地为摄氏数组分配内存。

答案 2 :(得分:0)

我根据对OP问题的澄清添加了一个新的答案,而不是更新我现有的答案,因为我觉得上下文更加清晰。

如果你想使用基于范围的循环,并避免使用std::vector,有一种方法可以做到这一点,但这个解决方案更符合C而非C++的精神。 ,因为它使用指针算法。

#include <iostream>

using std::cout;
using std::endl;

int main() {

    double temps[] = { 65.5, 68.0, 38.1, 75.0, 77.5, 76.4, 73.8, 80.1, 55.1, 32.3, 91.2, 55.0 };
    const int count = sizeof(temps) / sizeof(temps[0]);

    double centigrade[count];
    double * walker = centigrade;

    for (double t : temps)
        *walker++ = (t - 32) * 5 / 9;

    // verify results by printing.    
    for (double t: centigrade)
        cout << t << endl;


    return 0;
}