Есть массив, не выходит от каждого элемента отнять 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
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;
Итоговый код и проверка представлены на в прибавленьи:
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.