М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
taklecovatana
taklecovatana
27.05.2020 00:52 •  Информатика

Есть массив, не получается от каждого элемента отнять 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] < < " "; }

👇
Ответ:
SUPERMODEL
SUPERMODEL
27.05.2020
Ошибка 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
4,8(3 оценок)
Открыть все ответы
Ответ:
медвва
медвва
27.05.2020

Program zadacha1;
uses crt;
const N=5;  //размер массива
var m:array[1..n] of integer;
i:integer;
Begin
Writeln('Исходный массив');
For i:= 1 to n do
//readln(m[i]); //для ручного ввода оставьте эту строку
begin //    для
m[i]:=random(101)-50; // случайного
Writeln(m[i]); //  эти
end; //
Writeln('Прямой вывод');
For i:=1 to n do
writeln(m[i]);
Writeln('Обратный вывод');
For i:=1 to n do
writeln(m[n+1-i]);
End.

 

Program zadacha2;
uses crt;
const N=5; // размер массива
var m:array[1..n] of integer;
i:integer;
Begin
Writeln('Исходный массив');
For i:= 1 to n do
//readln(m[i]); //для ручного ввода оставьте эту строку
begin //    для
m[i]:=random(101)-50; // случайного
Writeln(m[i]); //  эти
end; //
Writeln('Вывод');
For i:=1 to n do
if i mod 2 = 0 then writeln(m[i]);
End.

 

Program zadacha3;
uses crt;
const N=5; // размер массива
var m:array[1..n] of integer;
i:integer;
Begin
Writeln('Исходный массив');
For i:= 1 to n do
//readln(m[i]); //для ручного ввода оставьте эту строку
begin //    для
m[i]:=random(101)-50; // случайного
Writeln(m[i]); //  эти
end; //
Writeln('Вывод');
For i:=1 to n do
if (n+1-i) mod 2 <> 0 then writeln(m[n+1-i]);
End.

4,7(20 оценок)
Ответ:
Maria9613
Maria9613
27.05.2020

1)

var a:array [1..100] of integer; объявляем массив

i,n:byte; объявляем вс переменную i и переменную  n  для хранения количества элементов

 

begin

write('Введите n = ');readln(n); вводим n

for i:=1 to n do begin от 1 до n  цикл 

write('a[',i,']=');

readln(a[i]); вводим элементы в массив

end;

write('Исходный массив: ');

for i:=1 to n do выводим наш массив полностью

write(a[i],' ');

writeln;

write('Результат: '); выводим результат, в данном случае все элементы стоящие на четных местах

for i:=1 to n do

if i mod 2 =0 then write(a[i],' '); проверка на четность, мод - это оператор деления по остатку, если индекс делится на 2 без остатка, то выводим элемент

end.

 

2)

var a:array [1..100] of integer;

i,n:byte; s:longint; s объявляем для хранения суммы элементов

 

begin

s:=0; обнуляем s

write('Введите n = ');readln(n);  тут тоже самое, что и в первой задаче

for i:=1 to n do begin

write('a[',i,']=');

readln(a[i]);

s:=s+a[i]; вот здесь мы складываем каждый элемент массива в переменную s

end;

write('Исходный массив: ');

for i:=1 to n do  вывод массива

write(a[i],' ');

writeln('Сумма всех элементов массива = ',s); вывод суммы

end.

 

Удачи=)

4,6(88 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ