我在这里不知所措,所以我正在寻找任何提示,指出我正确的方向。我无法弄清楚如何输入我从华氏温度转换为摄氏温度的摄氏温度值。为了这个目的,我尝试在另一个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 :(得分: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 = ¢igrade[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;
}