程序进入无限循环

Program going into an infinite loop

本文关键字:无限循环 程序      更新时间:2023-10-16

这是我在这里的第一个问题,所以我很高兴能得到一些关于我用来解决问题的样式的支持:)。这是完成的程序,它的主要目的是将给定的单词一分为二,并创建单词来代替原始单词。替换的单词是从其起源开始构建的,将它们一分为二,并从单词的第一个字母开始的前半部分取偶数。以下是完整的代码:

#include <iostream>
#include <string>
#include <cstdio>
#include <math.h>
using namespace std;
void obcinaczSlow(int);
int main(){
    int ilosc;
    cout << "Prosze o podanie ilosci prob: ";
    cin>>ilosc;
    cout << endl;
    obcinaczSlow(ilosc);
    cin.ignore();
    cin.get();
    return 0;
}
void obcinaczSlow(int ilosc_prob){
    int i=0,j=0,dlugosc_slowa=0,dlugosc_polowy=0;
    string *tablica_slow,budowane_slowo,aktualne_slowo,dodane;
    tablica_slow = new string [ilosc_prob];
    cout << "Prosze o podanie " << ilosc_prob << " slow" << endl;
    cin.sync();
    for(i=0;i<ilosc_prob;i++){
        cout << "Prosze o podanie slowa numer: " << i+1 << endl;
        cin>>aktualne_slowo;
        tablica_slow[i] = aktualne_slowo;
    }
    for(i=0;i<ilosc_prob;i++){
        aktualne_slowo = tablica_slow[i];
        cout << "Aktualne slowo do przerobienia: " << aktualne_slowo << endl;
        dlugosc_slowa = aktualne_slowo.length();
        cout << "Dlugosc slowa do przerobienia: " << dlugosc_slowa << endl;
        dlugosc_polowy = floor(dlugosc_slowa/2);
        cout << "Dlugosc polowy slowa int: " << dlugosc_polowy << endl;
        budowane_slowo.clear();
        dodane.clear();
        cout << "Budowane slowo to: " << budowane_slowo << endl;
        for(j=0;j<=dlugosc_polowy;j=+2){
        dodane = aktualne_slowo.at(j);
        budowane_slowo.append(dodane);
        }
        tablica_slow[i] = budowane_slowo;
    }
    cout << "Slowa po transformacji wygladaja nastepujaco: " << endl;
    for(i=0;i<ilosc_prob;i++){
    cout << "Slowo o numerze " << i+1 << " : " << tablica_slow[i]  << endl;
    }
    delete [] tablica_slow;
    cin.sync();
}

当程序到达循环时,问题就出现了,循环应该使用字符串类中的".at"方法附加j索引所指向的字母。我甚至试着调试都找不到解决方案。你能帮我吗:)?

您在这里有一个打字错误

for(j=0;j<=dlugosc_polowy;j=+2)

我想你指的是+=而不是=+

for(j=0;j<=dlugosc_polowy;j+=2)

否则,您只是一次又一次地将2分配给j

您的错误是颠倒两个字符:
更改:

 `j=+2` to `j+=2`
   ^^        ^^   

(它的编写方式j被赋予值2,然后在它的剩余生命中保持不变。)

for(j=0;j<=dlugosc_polowy;j=+2){
    dodane = aktualne_slowo.at(j);
    budowane_slowo.append(dodane);
}

将j=+2替换为j+=2

for(j=0;j<=dlugosc_polowy;j+=2){
    dodane = aktualne_slowo.at(j);
    budowane_slowo.append(dodane);
}