Как исправить ошибку во время выполнения «ошибка сегментации» в C ++ - PullRequest
0 голосов
/ 30 сентября 2019

Это код для определения, является ли вторая строка шифром первой или нет. Чтобы найти его, я сохраняю шифровальный сдвиг в другой переменной, а затем сравниваю все соответствующие буквы строк, чтобы проверить, имеют ли они одинаковый сдвиг.

#include<iostream>
#include<string>
using namespace std;
int main(){
    int q;
    cin>>q;
    int cip[q],flag[q];
    string s[q],t[q];
    for(int i=0;i<q;i++){
        cin>>s[i];
        cin>>t[i];
    }
    for(int i=0;i<q;i++){
        cip[i]=(s[i][1]+t[i][1])%26;
    }
    for(int i=0;i<q;i++){
        for(int j=0;j<s[i].size();i++){
            if((s[i][j]+t[i][j])%26==cip[i]){
                flag[i]=1;
            }
            else flag[i]=0;;
        }
    }
    for(int i=0;i<q;i++){
        if(flag[i]==1){
            cout<<cip[i];
        }
        else cout<<flag[i]-1;
    }
}

ошибка времени выполнения: ошибка сегментации

1 Ответ

2 голосов
/ 30 сентября 2019

Этот блок кода неправильный:

for(int i=0;i<q;i++){
    for(int j=0;j<s[i].size();i++){
        if((s[i][j]+t[i][j])%26==cip[i]){
            flag[i]=1;
        }
        else flag[i]=0;;
    }
}

строка

for(int j=0;j<s[i].size();i++)

, изменяющая его на j ++, должна исправить ошибку сегментации.

...