Всегда сделать переменные максимально локальными . C ++ позволяет вам определять переменные цикла внутри цикла
for(int i = 0; i < SIZE; i++)
{
...
}
// i no longer in scope
так что они выпадают из области видимости в конце цикла, который является настолько локальным, насколько это возможно.
Выполнение этого покажет, что вы в настоящее время используете i
для доступа к массиву после цикла , в этот момент i
имеет значение SIZE
, в результате чего доступ за пределы . (Помните, что массивы имеют индексы 0..SIZE-1
.)
Понятия не имею, какая последняя строка в вашей программе
cout << fruity[i] << endl;
должен делать, но если вы хотите вывести содержимое массива (как предлагают другие ответы), вам действительно понадобится еще один цикл.
Другие, более незначительные баллы:
Мы не знаем, какой класс строк вы используете, потому что вы пропустили префикс std::
. (То же самое касается всех других идентификаторов из используемой вами библиотеки std.) Я не одобряю это .
Правильный тип для индексов массива - std::size_t
.
Манипулятор std::endl
вставит '\n'
в выходной поток и очистит буфер потока . В вашей интерактивной консольной программе это обычно не приносит никакого вреда. Однако помните, что преждевременная очистка буфера может значительно замедлить работу программы. (Я видел случай, когда программа, записывающая много данных в файловый поток в виде струйки из нескольких байтов, была замедлена на порядок из-за этого.) В вашем случае, очистка буфера выходного потока # вручную никогда не бывает действительно необходимым. (Конечно, вы хотите, чтобы ваши подсказки появлялись перед чтением из входного потока, но это достигается за счет привязки std::cout
к std::cin
по умолчанию, когда std::cout
сбрасывается, когда программа пытается прочитать из std::cin
.)
Программа, как я бы ее написал, выглядела бы так:
// Beware, brain-compiled code ahead!
#include <string>
#include <iostream>
int main()
{
const std::size_t size = 5;
std::string fruity[size];
std::cout << "Enter the names of five kinds of fruit:" << '\n';
for(std::size_t i = 0; i < size; ++i)
{
std::cout << "Enter Name of Fruit" << '\n';
std::getline(std::cin, fruity[i]);
}
for(std::size_t i = 0; i < size; ++i)
{
std::cout << fruity[i] << `\n`;
}
return 0;
}