ЗАДАЧА Вычислить у=X1+X1X2+x1x2x3+...+x1x2x3... х где m - либо номер первого отрицательного элемента массива х, либо число n. если в массиве х нет отрицательных элементов написать программу на c++
Const nn=100; var a:array[1..nn] of integer; i,n,s1,s2:integer; begin Write('Введите размер массива n: '); Read(n); Randomize; Writeln('Исходный массив'); for i:=1 to n do begin a[i]:=Random(3000)+1000; Write(a[i]:5) end; Writeln; Writeln('Результаты'); for i:=1 to n do begin s1:=(a[i] div 1000)+(a[i] div 100) mod 10; s2:=(a[i] div 10) mod 10+a[i] mod 10; if s1=s2 then Write(a[i]:5) end end.
Начинаем разбор исходной строки. "25" - первый операнд (за ним следует символ-терминатор Т); "12" - второй операнд (за ним терминирующий знак операции -); "-" - знак операции. Можно вычислять: 25 - 12 = 13 Теперь "13" подставляем на место первого операнда и продолжаем читать строку. "T" - терминирующий символ, он тут для соблюдения синтаксиса; "2" - второй операнд (за ним терминирующий знак операции +); "+" - знак операции. Можно вычислять: 13 + 2 = 15 Теперь "15" подставляем на место первого операнда и продолжаем читать строку. "T" - терминирующий символ, он тут для соблюдения синтаксиса; "45" - второй операнд (за ним терминирующий знак операции +); "+" - знак операции. Можно вычислять: 15 + 45 = 60
Исходное выражение просмотрено до конца, алгоритм разбора закончен. ответ: б) 60
nn=100;
var
a:array[1..nn] of integer;
i,n,s1,s2:integer;
begin
Write('Введите размер массива n: '); Read(n);
Randomize;
Writeln('Исходный массив');
for i:=1 to n do begin
a[i]:=Random(3000)+1000;
Write(a[i]:5)
end;
Writeln;
Writeln('Результаты');
for i:=1 to n do begin
s1:=(a[i] div 1000)+(a[i] div 100) mod 10;
s2:=(a[i] div 10) mod 10+a[i] mod 10;
if s1=s2 then Write(a[i]:5)
end
end.
Тестовое решение:
Введите размер массива n: 50
Исходный массив
3407 3373 2752 3121 2683 3082 3252 1364 3890 1595 3004 3206 3663 2523 1972 2003 2344 3901 3739 2898 1639 2839 2498 1200 1613 1498 1262 3370 1548 1287 1972 3348 1278 3116 1505 3235 1062 1740 2491 1023 3955 3704 1265 2567 1287 1255 2602 3924 2561 2912
Результаты
3407 3663 2561
"25" - первый операнд (за ним следует символ-терминатор Т);
"12" - второй операнд (за ним терминирующий знак операции -);
"-" - знак операции.
Можно вычислять: 25 - 12 = 13
Теперь "13" подставляем на место первого операнда и продолжаем читать строку.
"T" - терминирующий символ, он тут для соблюдения синтаксиса;
"2" - второй операнд (за ним терминирующий знак операции +);
"+" - знак операции.
Можно вычислять: 13 + 2 = 15
Теперь "15" подставляем на место первого операнда и продолжаем читать строку.
"T" - терминирующий символ, он тут для соблюдения синтаксиса;
"45" - второй операнд (за ним терминирующий знак операции +);
"+" - знак операции.
Можно вычислять: 15 + 45 = 60
Исходное выражение просмотрено до конца, алгоритм разбора закончен.
ответ: б) 60