Нажимая на кнопку "Задать вопрос", я даю согласие на обработку персональных данных

Задать вопрос
Задать вопрос
  • Есть массив, не получается от каждого элемента отнять 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 < 10; i++) {
    arr[i] = arr[i] - 20;

    }
    cout << arr[i] << " ";

    }

    • 07 May 2021
    • Ответ оставил: csharp

    Ошибка 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), то первый элемент будет иметь номер 0. Следовательно, цикл следовало бы начать с нуля.

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

    for(int i = 0; ..)

    Ошибка 4

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

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

    for(int i = 0; i < (sizeof(arr)/sizeof(int)); i++){/*...*/}

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

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

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

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

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

    Ошибка 5

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

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

    for(int i = 0; i < arraySize; i++){

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

    cout << arr[i] << " ";

    }

    Замечание 6

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

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

    return 0;

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

    • НЕ НАШЛИ ОТВЕТ?
    Если вас не устраивает ответ или его нет, то попробуйте воспользоваться поиском на сайте и найти похожие ответы по предмету школьной программы: информатика.
    На сегодняшний день (20.02.2025) наш сайт содержит 16354 вопросов, по теме: информатика. Возможно среди них вы найдете подходящий ответ на свой вопрос.
  • Нажимая на кнопку "Ответить на вопрос", я даю согласие на обработку персональных данных

    Ответить на вопрос

Последние опубликованные вопросы

Некоторый алфавит состоит из 64 символов. В сообщении 60 символов. Определите информационный объем сообщения. Определите в виде эссе личный уровень владения современными информационными технологиями. Опишите имеющиеся навыки работы в: - офисных программах (текстовый редактор, табличный процессор, построит... Зачем в C++ нужна библиотека stdio.h, и какова ее функция? составить блок- схему решения выражения (23+34)*57/3 ПАСКАЛЬ. Решите задачу с помощью строк. Пользователь водит слово - мама, и букву - м. Паскаль выводит количество этих самых букв из строки, которую мы ввели , то есть 2. Еще пример: Введите слово... Дам 20 баллов! Дано логическое выражение, зависящее от 6 логических переменных: X1 ∧ ¬X2 ∧ X3 ∧ ¬X4 ∧ X5 ∧ X6 Сколько существует различных наборов значений переменных, при которых выражение истин... Спасите!!!!!!!!!!!!!!!!!!!!!!!!!!!! Таблица в Microsoft access служит для …. данных (может быть несколько) а) автоматизации ввода б) ввода в) хранения Сколько битов в 20 ниблах Спасите!!!!!!!!!!!!!!!!!!!!!!!!!!!! Таблица в Microsoft access служит для …. данных (может быть несколько) а) автоматизации ввода б) ввода в) хранения Арбуз с точки зрения агронома, покупателя, художника Расставьте по убыванию: 1 Бит, 1байт, 1Кбайт, 1Мбайт, 1Гбайт, 1Тбайт ПОМОГИТЕ ПОЖАЛУЙСТА!!!)) Вводится трехразрядное двоичное число. Перевести это число в десятичную систему счисления.
*{ message }*