Ich habe gerade ein Programm geschrieben, aber ich weiß nicht, warum alle For-Schleifen in meinem Programm nicht funktionieren. Hier ist mein Programm:Warum For-Schleifen funktionieren nicht in meinem Programm?
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtMath>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
#define NMAX 41
#define sum NMAX+2
double_t Xi = 0, Xf = 2;
#define DELX (Xf - Xi)/(NMAX-1)
// Sample input data
quint32 Nmax = NMAX;
quint32 Uinf = 10;
quint32 KASE = 0;
double_t Cnu = 0.0002, X[NMAX] , S[sum] , Ue[NMAX] , Y[NMAX] , DELx = DELX , Cf=0 , Vsum=0 , F1=0 , F2=0 , Y2=1 , DUDS=0 , Const=0 , SThetha=0 , R0=0 , Thetha=0 , BLan=0 , H1=0 , S1=0 , Dels=0;
quint32 i=0;
QString text = " Thwaites-Walz Method\n Input: Nmax , Cnu , Uinf , KASE\n";
text.append(" ");
QString str = QVariant(Nmax).toString();
text.append(str);
text.append(" ");
str = QVariant(Cnu).toString();
text.append(str);
text.append(" ");
str = QVariant(Uinf).toString();
text.append(str);
text.append(" ");
str = QVariant(KASE).toString();
text.append(str);
text.append(" \n");
for(i=0 ; i == Nmax ; i++) {
X[i] = Xi + (i - 1)*DELx;
if(KASE==0){Y[i]=0;}
if(X[i]<1){Ue[i]=10;}
else {
Ue[i] = 10.5-(X[i]/2);
}
}
i=0;
S[1]=0;
for(i=2 ; i == Nmax ; i++){
S[1]=S[i-1]+(X[i]-X[i-1]);
}
i=0;
for(i=1 ; i==Nmax ; i++){
if(KASE==2){
Y2=Y[i]*Y[i];
}
F2 = Y2*qPow(Ue[i],5);
if(i==1){
goto chehel;
}
if(i==2 && 1 <= KASE){
goto chehel;
}
Vsum = Vsum + (0.5*(F1+F2)*(S[i]-S[i-1]));
if(Ue[i]!= 0){
DUDS = (Ue[i] - Ue[i-1])/(S[i] - S[i-1]);
}
Const = 0.45*Cnu/(F2*Ue[i]);
SThetha = Const*Vsum;
goto navad;
chehel:
DUDS = (Ue[2]-Ue[1])/S[2];
SThetha = 0;
if(KASE==1){DUDS=2*Uinf/R0;}
if(KASE==1){SThetha=0.075*Cnu/DUDS;}
if(KASE==2){DUDS=3*Uinf/2/R0;}
if(KASE==2){SThetha=0.056*Cnu/DUDS;}
navad:
Thetha = qSqrt(SThetha);
BLan = SThetha*DUDS/Cnu;
if(BLan < 0){
goto navadshesh;
}
H1 = 2.61-(3.75*BLan)+(5.24*BLan*BLan);
S1 = 0.22+(1.57*BLan)-(1.8*BLan*BLan);
goto navadhaft;
navadshesh:
H1 = 2.088+0.0731/(0.14+BLan);
S1 = 0.22+(1.402*BLan)+0.018*BLan/(0.107+BLan);
navadhaft:
Dels = Thetha*H1;
if(i > 1 && Ue[i] != 0){
Cf = 2*Cnu*S1/(Ue[i]*Thetha);
}
if(BLan <= -0.09){
text.append(".....Separation at or before S=");
str = QVariant(S[i]).toString();
text.append(str);
text.append(" \n");
}
str = QVariant(i).toString();
text.append(str);
text.append(" ");
str = QVariant(S[i]).toString();
text.append(str);
text.append(" ");
str = QVariant(Dels).toString();
text.append(str);
text.append(" ");
str = QVariant(Thetha).toString();
text.append(str);
text.append(" ");
str = QVariant(H1).toString();
text.append(str);
text.append(" ");
str = QVariant(Cf).toString();
text.append(str);
text.append(" \n");
F1=F2;
}
ui->textEdit->setText(str);
ui->textEdit->setText("Walz program\n N | S | DELTS | THETA | H | Cf |\n 564565");
ui->textEdit->setText(text);
}
Wenn ich es in Qt debuggen, springt der debuger über die Schleifen. Ich verstehe nicht warum? was ist das Problem? dies ist die Ausgabe, die ich bekomme, wenn ich das Programm und klicken Sie auf „berechnen“ laufen:
Es klingt, funktioniert das Programm nur bis zum ersten For-Schleife.
Können Sie Ihren Code richtig formatieren? Warum benutzt du auch GOTOS? – Rafael
Sie könnten ein besseres Frageformat haben ... –