Может ли кто-нибудь сказать мне, что означают мои ошибки времени компиляции и помочь мне с ними?Странные ошибки компиляции
Heres одна из ошибок:
C: \ doc1 \ collect2.exe [Error] л.д. возвращается 1 выход статус
Вот текст файла:
T(F) R1 R2 R3 R4
95.0 95.20 66.10 43.10 29.00
96.0 96.10 67.60 43.50 31.20
97.0 97.40 67.00 43.70 30.50
98.0 97.20 69.10 44.10 30.70
99.0 98.90 68.00 44.70 32.80
100.0 99.50 71.10 45.10 31.50
101.0 101.00 71.20 45.30 31.60
102.0 101.60 71.00 45.70 30.50
103.0 101.80 73.10 46.30 32.50
104.0 103.70 73.50 46.60 32.70
105.0 105.60 72.80 47.10 33.60
Вот мой источник
#include <fstream>
#include <iostream>
#include <string>
#include <iomanip>
#include <cmath>
#include <stdlib.h>
using namespace std;
void read();
void slope(double,double,double,double,double,int,double);
void write(double,double,double,double,double,double);
double temp, R1, R2, R3, R4,rsq;
int main()
{
read();
return 0;
}
void read()
{
ifstream indata("c:\\doc1\\temperaturedata.txt");
int indx=0;
if(indata == NULL)
{
cout<< "There is no file go get it from the CD"<< endl;
return;
}
const int columns = 5;
const int rows = 11;
double Ihatearray[rows][columns];
string temparature;
getline(indata, temparature);
for(int i = 0; i < rows; ++i)
{
for (int j = 0; j < columns; ++j)
{
cout << "\t" << flush;
indata >> Ihatearray[i][j];
cout.setf(ios::fixed);
cout << setprecision(2) << Ihatearray[i][j] <<flush;
}
cout << endl;
double temp[20], R1[20],R2[20],R3[20],R4[20];
}
//indata.close();
slope(temp, R1, R2, R3, R4,indx,rsq);
}
void slope(double x[5], double y[], double& m, double& b, int n,double& r)
{
int i;
double xsum = 0., ysum = 0., xave, yave, x2sum = 0., y2sum = 0.,xysum =0.;
for(int i = 0; i < n; i++)
{
xsum += x[i];
ysum += y[i];
x2sum += x[i] * x[i];
y2sum += y[i] * y[i];
xysum += x[i] * y[i];
}
xave=xsum/n;
yave=ysum/n;
m=(xysum-yave*xsum)/(x2sum-xave*xsum);
b=yave-m*xave;
r=(xysum-n*xave*yave)/(sqrt(x2sum-n*xave*xave)*sqrt(y2sum-n*yave*yave));
write (temp, R1, R2, R3, R4,rsq);
}
void write (double temp [], double R1[], double R2[], double R3[],double R4[],double
rsq)
{
//Where I will print out a table of the results.
}
Предполагая, что ОС - это Windows с именем «EXE». Следует помнить две вещи: 1) вы не возвращаете значения, кроме 0 из main(), 2), если вы используете ERRORLEVEL, я считаю, что это ненадежный/запутывающий механизм для получения статуса выхода, который в противном случае требует окружающая среда. В Windows я буду использовать && и || CLI ops как удобный способ определить успех EXE/неудачу; например, c: \> myprog.exe && echo работал! – bvj
Я просто добавил это: void slope (double [], double [], double &, double &, double &, int, double &); теперь он говорит, что [Ошибка] не может преобразовать 'double' в 'double *' для аргумента '1' to 'void slope (double *, double *, double &, double &, double &, int, double &)', можете ли вы объяснить это? – user3059173
Реализация slope() не соответствует объявлению slope(). Ваше первое использование slope() опирается на объявленный синтаксис. – bvj