表达式必须具有指针对象类型错误?

时间:2016-10-25 04:18:53

标签: visual-c++

[更新代码Pictutre] [1]有人可以帮我理解我在这段代码中对我的数组做错了吗?它为我的所有数组变量

给出了同样的错误

我不知道如何在不添加5张图片的情况下向您显示整个代码,我试图捕获所有重要信息

好的,我已在下面发布了代码

#include <iostream>
#include <math.h>
#include <iomanip>
#include <fstream>
#include <string>

using namespace std;
int main() {
// output for a single input driving frequency 

double m, c1, c2, k1, k2, r, Y;
m = c1 = c2 = k1 = k2 = r = Y = 0;
//input values for the case
cout << "Mass: ";
cin >> m;
cout << "c1: ";
cin >> c1;
cout << "c2: ";
cin >> c2;
cout << "k1: ";
cin >> k1;
cout << "k2: ";
cin >> k2;
cout << "r: ";
cin >> r;
cout << "Y: ";
cin >> Y;
//solve for the equivlent values 
double ceq, keq, wn, dampratio, staticamp;
ceq = c1 + c2;
keq = k1 + k2;

wn = 0;
wn = sqrt(keq / m);
dampratio = ceq / (2 * sqrt(m*keq));

//Determine the Case
double cas = 0;
cout << "Which Case (1-5): ";
cin >> cas;

double Fo, alpha, w, t;

if (cas == 2) {
    Fo = Y*k2;
}
else {
    w = r*wn;
    t = 0;
    Fo = 0;
    Fo = Y*sqrt((k2*k2 + pow((c2*w), 2)));

    alpha = atan(-c2*w / k2);
}
//Static amplitude 
staticamp = 0;
staticamp = Fo / keq;

double Xp = (Fo / keq) / (sqrt(pow((1 - r*r), 2) + pow((2 * dampratio*r), 2)));
double phi = atan((ceq*w) / (keq - m*w*w));
double xp = Xp*sin(w*t - phi);

double H, Td, Ftwall, Ftbase;

//Displacement Transmissiblity
Td = 0;
Td = (Fo / (Y*keq)) / (sqrt(pow((1 - r*r), 2) + pow((2 * dampratio*r), 2)));

//Frequanecy Response
H = 0;
H = 1 / (sqrt(pow((1 - r*r), 2) + pow((2 * dampratio*r), 2)));

//Force Transmissibilty to the bang
Ftbase = 0;
Ftbase = (Xp*sqrt(pow((k1 - keq*r*r), 2) + pow((c1*wn*r), r))) / (Y*k2);

//Force Transmissibilty to the wall 
Ftwall = 0;
Ftwall = (Xp*sqrt((k1*k1) + pow((c1*r*wn), 2))) / (Y*k2);

if (cas == 5) {
    cout << "\nCase: " << cas << endl << endl;
    cout << "Wn: " << wn << endl;
    cout << "Damping Ratio: " << dampratio << endl;
    cout << "Amplitude: " << staticamp << endl;
    cout << "Frequency Response: " << H << endl;
    cout << "Phase Angle: " << phi << endl;
    cout << "Displacement Transmissibilty: " << Td << endl;
    cout << "Force Tranmissibility to the base: " << Ftbase << endl;
}
else {
    cout << "\nCase: " << cas << endl << endl;
    cout << "Wn: " << wn << endl;
    cout << "Damping Ratio: " << dampratio << endl;
    cout << "Amplitude: " << staticamp << endl;
    cout << "Frequency Response: " << H << endl;
    cout << "Phase Angle: " << phi << endl;
    cout << "Displacement Transmissibilty: " << Td << endl;
    cout << "Force Tranmissibility to the base: " << Ftbase << endl;
    cout << "Force Transmissibilty to the wall: " << Ftwall << endl;
}

//*****************************Section 1.2 **********************************************


// 1.2 output for a range of driving frequencies 
//input values for the case
cout << "Mass: ";
cin >> m;
cout << "c1: ";
cin >> c1;
cout << "c2: ";
cin >> c2;
cout << "k1: ";
cin >> k1;
cout << "k2: ";
cin >> k2;
cout << "Y: ";
cin >> Y;

//solve for the equivlent values 
ceq = keq = 0;
ceq = c1 + c2;
keq = k1 + k2;

wn = 0;
wn = sqrt(keq / m);                  //natural frequency
dampratio = ceq / (2 * sqrt(m*keq)); // damping ratio 

                                     //Determine the Case
cas = 0;
cout << "Which Case (1-5): ";
cin >> cas;

double  staticamp[200], Xp[200], xp[200], Fo[200], phi[200], w[200];
double alpha[200], Td[200], H[200], Ftbase[200], Ftwall[200], r[200];

r[1] = .1;

for (int i = 0; i<200; i++) {

    if (cas == 2) {
        Fo = Y*k2;
    }
    else {
        w = r[i] * wn;
        t = 0;
        Fo = 0;
        Fo = Y*sqrt((k2*k2 + pow((c2*w), 2)));

        alpha[i] = atan(-c2*w / k2);
    }
    //Static amplitude 
    staticamp[i] = 0;
    staticamp[i] = Fo / keq;

    Xp[i] = (Fo / keq) / (sqrt(pow((1 - r[i] * r[i]), 2) + pow((2 * dampratio*r[i]), 2)));
    phi[i] = atan((ceq*w) / (keq - m*w*w));
    xp[i] = Xp*sin(w*t - phi);

    //Displacement Transmissiblity
    Td[i] = 0;
    Td[i] = (Fo / (Y*keq)) / (sqrt(pow((1 - r[i] * r[i]), 2) + pow((2 * dampratio*r[i]), 2)));

    //Frequanecy Response
    H[i] = 0;
    H[i] = 1 / (sqrt(pow((1 - r[i] * r[i]), 2) + pow((2 * dampratio*r[i]), 2)));

    //Force Transmissibilty to the bang
    Ftbase[i] = 0;
    Ftbase[i] = (Xp*sqrt(pow((k1 - keq*r[i] * r[i]), 2) + pow((c1*wn*r[i]), r[i]))) / (Y*k2);

    //Force Transmissibilty to the wall 
    Ftwall[i] = 0;
    Ftwall[i] = (Xp*sqrt((k1*k1) + pow((c1*r[i] * wn), 2))) / (Y*k2);

    //increment r
    r[i + 1] = r[i] + .1;
}

ofstream Data(" 1.2 Case 1 .txt");                      // File Creation to import in text file to graph  
for (int i = 0; i > 200; i++) {                         //NEED TO CHANGE FILE NAME FOR NEW DATA SET
    Data << r[i] << "," << H[i] << "," << phi[i] << "," << Td[i] << "," << Ftbase[i] << "," << Ftwall[i] << endl;
}

//************************* Section 2 ****************

cout << "\t\tSection 2" << endl << endl;
//input values for the case
cout << "Mass: ";
cin >> m;
cout << "c1: ";
cin >> c1;
cout << "c2: ";
cin >> c2;
cout << "k1: ";
cin >> k1;
cout << "k2: ";
cin >> k2;
cout << "r: ";
cin >> r;
cout << "Y: ";
cin >> Y;
//solve for the equivlent values 
ceq = c1 + c2;
keq = k1 + k2;

wn = 0;
wn = sqrt(keq / m);
dampratio = ceq / (2 * sqrt(m*keq));

//Determine the Case

cout << "Which Case (1-5): ";
cin >> cas;



if (cas == 2) {
    Fo = Y*k2;
}
else {
    w = r*wn;
    t = 0;
    Fo = 0;
    Fo = Y*sqrt((k2*k2 + pow((c2*w), 2)));

    alpha = atan(-c2*w / k2);
}
//Static amplitude 
staticamp = 0;
staticamp = Fo / keq;

Xp = (Fo / keq) / (sqrt(pow((1 - r*r), 2) + pow((2 * dampratio*r), 2)));
phi = atan((ceq*w) / (keq - m*w*w));
xp = Xp*sin(w*t - phi);

//Displacement Transmissiblity
Td = 0;
Td = (Fo / (Y*keq)) / (sqrt(pow((1 - r*r), 2) + pow((2 * dampratio*r), 2)));

//Frequanecy Response
H = 0;
H = 1 / (sqrt(pow((1 - r*r), 2) + pow((2 * dampratio*r), 2)));

//Force Transmissibilty to the bang
Ftbase = 0;
Ftbase = (Xp*sqrt(pow((k1 - keq*r*r), 2) + pow((c1*wn*r), r))) / (Y*k2);

//Force Transmissibilty to the wall 
Ftwall = 0;
Ftwall = (Xp*sqrt((k1*k1) + pow((c1*r*wn), 2))) / (Y*k2);

if (cas == 5) {
    cout << "\nCase: " << cas << endl << endl;
    cout << "Wn: " << wn << endl;
    cout << "Damping Ratio: " << dampratio << endl;
    cout << "Amplitude: " << staticamp << endl;
    cout << "Frequency Response: " << H << endl;
    cout << "Phase Angle: " << phi << endl;
    cout << "Displacement Transmissibilty: " << Td << endl;
    cout << "Force Tranmissibility to the base: " << Ftbase << endl;
}
else {
    cout << "\nCase: " << cas << endl << endl;
    cout << "Wn: " << wn << endl;
    cout << "Damping Ratio: " << dampratio << endl;
    cout << "Amplitude: " << staticamp << endl;
    cout << "Frequency Response: " << H << endl;
    cout << "Phase Angle: " << phi << endl;
    cout << "Displacement Transmissibilty: " << Td << endl;
    cout << "Force Tranmissibility to the base: " << Ftbase << endl;
    cout << "Force Transmissibilty to the wall: " << Ftwall << endl;
}



return 0;
}

0 个答案:

没有答案