Цикл заканчивается после нескольких вводов C ++ - PullRequest
0 голосов
/ 22 октября 2019

Цикл должен запрашивать имя, год и адрес трех человек. После ввода третьего имени выполнение программы заканчивается, и я не могу ввести последний год и адрес.

#include <iostream>

int main(){

    std::string Names[2]={};
    unsigned int Years[2]={};
    std::string Address[2]={};
    for(int i=0;i<=2;i++){
        std::cout<<"Enter name >> ";
        std::cin>>Names[i];
        std::cout<<"Enter year >> ";
        std::cin>>Years[i];
        std::cout<<"Enter address >> ";
        std::cin>>Address[i];
    }
    return 0;
}

Ответы [ 3 ]

4 голосов
/ 22 октября 2019

Сделать размер массива равным 3, индекс идет от 0 до 2, например

std::string Names[3]={};
2 голосов
/ 22 октября 2019

Вам нужно объявить ваш массив размером 3, так как мы знаем, что размер массива, например, 2, имеет номер адреса, который изменяется от 0 до размера-1. В вашем случае ваши массивы изменяются с 0 на 1, если вы хотите вставить 3 человека, вам нужно использовать 3 в качестве размера вашего массива, чтобы у вас были адреса 0,1 и 2.

std::string Names[3]={};
unsigned int Years[3]={};
std::string Address[3]={};
for(int i=0;i<=2;i++){
    std::cout<<"Enter name >> ";
    std::cin>>Names[i];
    std::cout<<"Enter year >> ";
    std::cin>>Years[i];
    std::cout<<"Enter address >> ";
    std::cin>>Address[i];
}

Таким образом, вы решаете проблему

1 голос
/ 22 октября 2019

проблема в том, что размер массива равен 2, и вы ввели значение для массива [3], которое никогда не существует

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