Напишите программу на любом языке, главное уточните какой
ограничение времени 1 секунда
ограничение памяти 32mb
ввод matrix.in
вывод matrix.out
фирма по производству новых многоэлементных электронных матриц запускает новую линию, комплектуя ее узлом проверки готовой матрицы. узел засвечивает матрицу, подает напряжение на ее ячейки и считывает показания коэффициентов преломления каждой ячейки в виде цифр от 0 до 9. из этих показаний формируется таблица и записывается в файл. для оценки качества матрицы используется суммы коэффициентов преломления по каждой строке матрицы, а также количество сумм с максимальным значением из всех сумм коэффициентов по данной матрице. напишите программу, определяющую требуемые характеристики матрицы по имеющейся таблице коэффициентов преломления.
формат ввода
в первой строке входного файла matrix.in записано два натуральных числа, не превышающих 1024 - количество строк прямоугольной матрицы и количество ячеек в каждой строке. в последующих строках записаны без пробелов коэффициенты преломления.
формат вывода
в файл matrix.out следует вывести суммы коэффициентов преломления по одному в строке. последней строкой файла следует вывести количество сумм с максимальным значением из всех сумм коэффициентов по данной матрице. таким образом, в файле должно быть записано столько чисел, из скольких строк состоит электронная матрица, плюс одно число.
пример
ввод вывод
5 5 14
73022 25
95308 26
59282 18
55332 26
21797 2
При определении значений подобных функций переменная y вычисляется по-разному (по разным формулам) в зависимости от значения x.
Такие задачи решаются с конструкции условного оператора if - else. Поскольку в данном случае мы имеем три условия (x > 0, x = 0 и x < 0), то потребуется использование еще вложенной конструкции if - else, т. к. в языке Pascal нет оператора множественного ветвления (оператор case в данном случае не подходит).
В языке программирования Паскаль (да и в других тоже) желательно вложенные конструкции if - else помещать во внешнюю ветку else, а не if. Так проще не запутаться.
Таким образом, алгоритм вычисления значения функции может быть таким:
Если x > 0, то у = x - 2
Иначе (ниже идет вложенная конструкция)
Если x = 0, то y = 0
Иначе y = |x|.
В последнем пункте можно опустить оператор if с проверкой, что x < 0, так как если ход выполнения программы дошел до этого пункта, то x уже другим быть и не может (варианты, когда он больше или равен нулю, уже были исключены).
Для определения модуля (абсолютного значения) переменной можно использовать встроенную функцию abs() языка Pascal. В данном случае можно обойтись и без нее: поскольку уже известно, что x отрицателен, то, чтобы получить положительное число (модуль), нужно его умножить на -1.
var
x, y: integer;
begin
write ('x = ');
readln (x);
if x > 0 then
y := x - 2
else
if x = 0 then
y := 0
else
y := abs(x);
writeln ('y = ', y);
end.
Объяснение:
var i,a:Integer;
begin
a:= 1;
while a<>0 do
begin
Read(a);
i+=a;
end;
WriteLn(i=10);
end.
2) Можно через double. Но после 170! уже бесконечность.
var n:Integer;
var b:double;
begin
b:=1;
Read(n);
for var i:= 1 to n do
b*=i;
WriteLn('factorial '+n+' = '+b);
end.
3) Работает как и с числами так и со строками.
var arr:array of char;
var a:String;
var first,last:Integer;
begin
Read(a);
arr:= a.ToCharArray();
for var i:= 0 to arr.Length-1 do
begin
first:=Pos(arr[i], a);
last:=Pos(arr[i], a,first+1);
if (first>0) and (last > 0) and (first<>last) then
begin
first:=99;
break;
end;
end;
if first = 99 then
WriteLn('Содержит. Это число '+arr[last-1])
else
WriteLn('Несодержит.');
end.