gores7master
11.01.2022 01:17

с информатикой. логика.
1. составить логическое выражение
2. Составить схему ​


с информатикой. логика. 1. составить логическое выражение 2. Составить схему ​

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
rabramchik
26.07.2020 08:15
Ошибка 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? сделать на с++ #include pch.h #include u
Есть массив, не получается от каждого элемента отнять 20? сделать на с++ #include pch.h #include u
0,0(0 оценок)
Ответ:
lizstys
13.11.2020 23:33

Ты поддерживаешь переменные min и max для хранения наибольшего и наименьшего элементов массива. Когда ты вводишь элемент, ты проверяешь - если введённый элемент больше наибольшего, ты обновляешь наибольший. Если введённый элемент меньше наименьшего, ты обновляешь наименьший.

Важно задать min и max такие начальные значения, чтобы наибольший и наименьший элементы посчитались правильно. Для этого max нужно присвоить настолько большое значение, что при проверке задачи его не будут вводить. Для min нужно задать очень маленькое значение, которое тоже гарантированно не будет введено. Обычно диапазон вводимых чисел оговаривается в условии.


Код

var

 a: array[1..5] of integer;

 i, max, min: integer;


begin

 max := -32000;

 min := 32000;

 for i := 1 to 5 do

 begin

   read(a[i]);

   if a[i] > max then max := a[i];

   if a[i] < min then min := a[i];

 end;

 writeln(max - min);

end.

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота