gpt4 book ai didi

C++ 采用华氏温度数组,将它们转换为摄氏温度,然后将摄氏温度添加到新数组中

转载 作者:行者123 更新时间:2023-11-30 00:46:02 25 4
gpt4 key购买 nike

您好,这是我第一次使用 Stackoverflow,所以如果我不明白我的问题,请提前致歉。我有一个类作业,需要获取华氏温度数组,将它们转换为摄氏温度,然后将这些转换后的数字放入另一个相同大小的数组中。我的问题似乎与内存位置和从华氏数组获取实际值并执行算术转换该值有关。我已经搜索了一段时间,试图找到更多关于这方面的信息,因为它看起来很基本,但由于某种原因找不到任何帮助,因此我加入 Stackoverflow 的原因。任何帮助或建议(包括那些让我大吃一惊的建议)或教程链接都将不胜感激。

#include <string>
#include <iostream>
using namespace std;

void toCelsius(double fahrenheitTemps[],double *celsiusTemps,int n){

for (int i = 0; i < n; i++) {
*(celsiusTemps + i) = (((*(fahrenheitTemps + i)) - 32)*(5 / 9));
cout << ((*(fahrenheitTemps + i) - 32)*(1.8)) << endl;

}

}
void PrintResults(double tF[], double tC[], int n) {

cout << "Fahrenheit Temps: ";
for (int i = 0; i < n; i++) {
cout << tF[i] << " ";
}
cout << endl;

cout << "Celsius Temps: ";
for (int i = 0; i < n; i++) {
cout << tF[i] << " "; //This was my main issue and mistake (it should be tC) view update to see corrected code
}
cout << endl;
}

int main(){
double tempF[] = { 33.5,67.5,67.5,88.0,46.0,94.5,77.5,83.0,95.0,80.5 }, tempC[10];
double * ptrTempF, * ptrTempC;
*ptrTempF = &tempF;
ptrTempC = tempC;

for (int i = 0; i < 10; i++) {
*(tempC + i) = (*(tempF + i) - 32)*(5 / 9);
cout << tempC << " " << tempC[i] << endl;
}

toCelsius(tempF, tempC, 10);
PrintResults(tempF, tempC, 10);
}

更新:我只是个彻头彻尾的白痴,你们所建议的一切都真正解决了我遇到的一些错误问题。然而数组 tempC 的原因看起来输出没有变化是因为我输入了函数 printResults cout << tF[i] << " ";其中cout << tC[i] << " ";本来应该。我的输出看起来使它看起来好像从那时起就没有任何工作。

这是代码的工作形式,以防万一有人用谷歌搜索并希望看到工作代码:

#include <string>
#include <iostream>
using namespace std;

void toCelsius(double fahrenheitTemps[],double * &celsiusTemps,int n){ //I think & made a difference

for (int i = 0; i < n; i++) {
celsiusTemps[i] = ((fahrenheitTemps[i] - 32.0)*(5.0 / 9.0));
}

}

void PrintResults(double tF[], double tC[], int n) {

cout << "Fahrenheit Temps: ";
for (int i = 0; i < n; i++) {
cout << tF[i] << " ";
}
cout << endl;

cout << "Celsius Temps: ";
for (int i = 0; i < n; i++) {
cout << tC[i] << " ";
}
cout << endl;
}

int main(){
double tempF[] = { 33.5,67.5,67.5,88.0,46.0,94.5,77.5,83.0,95.0,80.5 }, tempC[10];
double * ptrTempC;
ptrTempC = tempC;

toCelsius(tempF, ptrTempC, 10);
PrintResults(tempF, tempC, 10);
}

最佳答案

 double * ptrTempF, * ptrTempC;
*ptrTempF = &tempF;

ptrTempf 是指向 double 的指针。因此 *ptrTempF 是 double 。

抛开这是未定义的行为,取消引用未初始化的指针,此分配尝试将指向 double 组的指针分配给 double 组。那当然是没有意义的。作业实际上应该是:

ptrTempF = tempF;

第二个错误:

*(celsiusTemps + i) = (((*(fahrenheitTemps + i)) - 32)*(5 / 9));

"5/9"是整数除法,计算结果为 0。您需要将其设为 double 除法:

*(celsiusTemps + i) = (((*(fahrenheitTemps + i)) - 32)*(5.0 / 9));

关于C++ 采用华氏温度数组,将它们转换为摄氏温度,然后将摄氏温度添加到新数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40065154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com