Откуда появляется ноль(на скрине показал) после номера первого четного элемента? (то что тут 2 массива, это так и должно быть). и еще нужно "в том массиве, где первый четный элемент стоит раньше, поменять его с последним элементом массива. обмен осуществить при процедуры." код: program p12_2; uses crt; const n=10; type mas=array[1..n] of integer; var a: mas; var i,p,k: integer; procedure vvod(n: integer; var a: mas); var i: integer; var w,q: integer; begin writeln('заполнение массива случайными числами.'); writeln('введите границы массива'); write('от: '); read(q); write('до: '); read(w); randomize; if q=w then begin for i: =1 to n do begin a[i]: =q; end; end else if q> 0 then begin for i: =1 to n do begin a[i]: =random (w-q)+q; end; end else begin q: =q*(-1); for i: =1 to n do begin a[i]: =random(w+q)-q end; end; end; procedure vivod(n: integer; var a: mas); var i: integer; begin writeln; for i: = 1 to n do begin write(a[i]: 4); write; end; end; function first(k: integer; var a: mas) : integer; var i,n: integer; begin i: =0; repeat i: =i+1; if (a[i] mod 2)=0 then k: =i; until k=i; writeln('первое четное число под номером ',k); end; begin writeln('первый массив: '); vvod(n, a); vivod(n, a); writeln; writeln(first (k, a)); writeln; writeln; writeln('второй массив: '); vvod(n, a); vivod(n, a); writeln; writeln(first (k, a)); writeln; end.
а) for, так как наша переменная, которая будет управлять циклом(как принято i ) будет принимать значения от 0 до 9, если начинать цикл с 0. Мы создаем переменную result и помещаем внутри цикла следующее выражение: result += 1/(i + 1). На выходе получим результат данного выражения.
б) В данном случае, можно использовать либо for range based, где выражение цикла выглядит так for (const auto & grade : grades), либо while с условием пока не дойдем до конца списка, зависит какой вид списка мы используем. Я считаю больше подходит for.
в) Думаю for range-based, либо обычный for.
г) ответ как и в б, можно использовать либо for ranged base, либо while, если значения аргументов содержатся в массиве, то тогда for range-based. Если например, тестирование происходит с пользовательского ввода, то тогда удобнее было бы использовать while.
То есть 1,2,3. потом их сложить или перемножить.
Чтобы найти первое число нужно 123 разделить на 100,получиться 1.23,его мы округляем и получаем 1.
Второе мы находим деля 123 на 100,получаем остаток 23, делим остаток на 10 и получаем 2.
Третье число мы находим деля 123 на 10 и получаем остаток.
Потом складываем их или перемножаем.
Пример на pascal:
//div это делить,mod отстаток
var a,b,c,s: integer;
begin
Write('Введи число: ');
Read(s);
a:= s div 100;
b:= s mod 100 div 10;
c:= s mod 10;
WriteLn('Сумма: '+a+b+c);
WriteLn('Произведение: '+a*b*c);
end.