2014-04-05 96 views
0

我在这里不知所措,所以我正在寻找任何提示以指引我朝着正确的方向前进。我不知道如何输入我从华氏温度转换成摄氏温度数组的摄氏度值。为了这个目的,我尝试在另一个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; 
} 
+0

你的'摄氏温度'数组太小。你应该为它分配一大块内存。 – merlin2011

+0

@ merlin2011太小了?那么我应该把它改成'code'double centigrade [12]'code'? – user3465469

+0

'double centigrade [12]'*** – user3465469

回答

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

如果你想在不明确的索引循环工作,然后用std::vector<double> centigrade取代double centigrade[count];,并与更换循环:

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

如果当时就想一个数组回来出于某种原因,你可以使用这个技巧得到一个数组:

double* array_version = &centigrade[0]; 
+0

@dyp,感谢您的建议和更新。 '-pedantic-errors'是一个有用的标志,可以知道。 – merlin2011

+0

是否有无论如何你可以保持基于范围的循环设置? – user3465469

+0

如果你指的是'for(double t:temps)',那么你必须a)维护一个显式索引,或者b)使用'std :: vector'而不是数组,然后使用'push_back()'来添加到它。 – merlin2011

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可以通过找到的临时工大小阵列dynamically..maybe概括for循环

的sizeof(临时工)/ 的sizeof(临时工[0]);

同样对于摄氏阵列相应地分配存储器。

0

我添加了一个新的答案,基于澄清OP的问题,而不是更新我的存在g的答案,因为我觉得上下文更清楚这种方式。

如果你想使用基于范围的循环,避免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; 
} 
相关问题