программа заканчивается после цикла for в c ++ - PullRequest
0 голосов
/ 11 ноября 2018

почему эта программа работает только до первого цикла for, а затем останавливается?

Он не запускает второй для цикла, а также пропускает system («пауза») . Может кто-нибудь объяснить, что не так в моем коде? Я хочу сделать два массива строк: strgs1 и strgs2 длины a и b , а затем принять ввод от пользователя для каждого элемента массивов. Это мой код:

#include <cstdio>
#include <iostream>
#include <string>
using namespace std;

int main(){
    int a,b;
    cin>>a>>b;
    string strgs1[a-1], strgs2[b-1];

    for(int i = 0;i < a;i++){
        cin>>strgs1[i];
    }        
    for(int j = 0;j < b;j++){
        cin>>strgs2[j];
    }
    system("pause");
    return 0;
}

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Предположим, вы вводите = 3. Размер массива a-1 = 2. Цикл повторяется i = 0, i = 1, i = 2. Но это 3 элемента, а ваш вектор имеет только размер 2!

Кроме того, используйте std :: vector. Некоторые компиляторы допускают массивы непостоянного размера, но они не переносимы.

0 голосов
/ 11 ноября 2018

Во-первых, вы используете статические массивы string strgs1[a-1], strgs2[b-1]; с размерами, не постоянными во время компиляции.Это плохая идея.Я бы посоветовал вместо этого использовать std :: vector.

Второй момент: размеры, которые вы используете для своих массивов, не очень хороши.Например, размер вашего первого массива a-1, и вы пытаетесь вставить в него a строк (от 0 до a-1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...