Есть массив, не выходит от каждого элемента отнять 20?Сделать на с++include

Есть массив, не выходит от каждого элемента отнять 20?
Сделать на с++

include "pch.h"
include

using namespace::std;

int main()



int i, arr[] = 1,2,3,4,5,6,7,8,9;

for (i = 1; i lt; 10; i++)
arr[i] = arr[i] - 20;


cout lt;lt; arr[i] lt;lt; " ";

Задать свой вопрос
1 ответ

Ошибка 1

using namespace::std;

Правильно использовать место имён таким образом:

using namespace std;

Ошибка 2

Вы объявляете итератор ещё перед циклом, причём совместно с массивом. Надобно разуметь, что итератор - это счётчик, int. А массив - это совокупность таких частичек int. Не нужно всё под одну крышу загонять. Объявляйте итераторы (если они Для вас не нужны, к примеру, для результирующих счётов или остального - по ситуации) в самом цикле, не мучайте глаза программистов.

Верно объявлять так:

int arr[] = 1,2,3,4,5,6,7,8,9;

for(int i = ..)

Ошибка 3

Вы начинаете цикл с 1, хотя Для вас нужно пройтись по всему массиву, начиная с самого первого элемента. Поскольку всё строится на десятичной системе счисления (от 0 до 9), то 1-ый элемент будет иметь номер 0. Как следует, цикл следовало бы начать с нуля.

Верно объявить цикл необходимо так:

for(int i = 0; ..)

Ошибка 4

Так как вы не указываете размер массива, а потом считаете 10 элементов (желая это теснее ошибочно, цикл возьмёт один лишний, теснее выходящий из заданного Вами массива кусочек и отнимет от него 20)

Правильно было бы объявлять условие цикла так:

for(int i = 0; i lt; (sizeof(arr)/sizeof(int)); i++)/*...*/

То есть мы берём размер массива в б, размер типа int в б (по сущности это константа - 4 б, но на разных версиях оси она может подходить различным значениям) и разделяем размер массива на размер типа, массив которого мы сделали (в нашем случае - int)

А лучше всего вынести выражение sizeof(arr)/sizeof(int) в отдельную переменную:

int arraySize = sizeof(arr)/sizeof(int);

for(int i = 0; i lt; arraySize; i++)

Разница в том, что при каждой итерации цикл считает поновой размер массива - а это излишние операции.

Ошибка 5

Так как Вы желайте вывести каждое результатирующее число через пробел,  Для вас нужно выводить его через каждую итерацию цикла, а не после него. Ваша ошибка будет содержаться в том (если не учитывать прошлые), что цикл инкрементирует переменную i до 10 и выведет на консоль arr[i], то есть arr[10] элемент, которого как раз-таки нет в массиве (растолковал в 3 ошибке)

Верно было бы выводить так:

for(int i = 0; i lt; arraySize; i++)

arr[i] = arr[i] - 20;

cout lt;lt; arr[i] lt;lt; " ";

Замечание 6

Функция типа int main() обязана всегда отдавать что-то. Это стандарт языка.

То есть, правильно было бы в конце добавить:

return 0;

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

Карина Кисминская
1 - с этим никто и не спорит2 - конкретно, из-за ваших ошибок и удалили3 - так это и сделали)
Вера Штопак
всем спасибо сам теснее ришил глядите на новую задачу
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт