Программа в паскаль. На вход подаётся последовательность символов, заканчивающаяся точкой, точка признак конца и в последовательность не входит. Проверить, является ли эта последовательность правильной записью римского числа меньшего 4000. Если является, то нужно перевести в десятичное число и вывести на экран. Массивы и строки использовать нельзя.
n = 40;
var
x: array[1..n] of integer;
i, k, s: integer;
begin
Randomize;
Writeln('Элементы массива');
k := 0; s := 0;
for i := 1 to n do
begin
x[i] := Random(50);
Write(x[i]:3);
end;
Writeln;
Writeln('Элементы со значением в интервале [7;10]');
for i := 1 to n do
if (x[i] >= 7) and (x[i] <= 10) then
begin
k := k + 1; s := s + x[i];
Write(x[i]:3)
end;
if k = 0 then Writeln('не найдены')
else Writeln(#13#10, ' Элементов:', k, ', среднее арифметическое=', s / k:5:3)
end.
Тестовое решение:
Элементы массива
24 33 36 29 12 7 5 36 3 48 40 40 46 6 10 23 33 3 38 48 29 37 11 40 44 16 17 18 34 38 33 39 9 0 41 37 42 2 40 31
Элементы со значением в интервале [7;10]
7 10 9
Элементов:3, среднее арифметическое=8.667
#include <iostream>
int main() {
double a = 5.0, b;
int c, d = 5;
std::cin >> b >> d;
a = a + b - 2;
d = ++c - a + d;
a *= c--;
//Не знаю как это предполагалось записывать в одну строчку, поэтому юзаем чит.
a /= 10 + 0 * (c /= 2) + 0 * (--b) + 0 * (d *= c + b + a);
return 0;
}
Должно работать. Если не работает строчку перед return меняем на:
a /= 10 || c /= 2 || --b || d *= c + b + a;
Да, оно ничего не выводит. Ты не написал что оно должно выводить.
P.S. Если у вас не C++, а C меняешь std::cin >> b >> d; на scanf("%f", &a); и scanf("%f", &d); а вместо #include <iostream> пишешь #include <stdio.h>