const N = 5; var a, S1, S2: Integer; i, Q1, Q2: Byte; begin S1 := 0; Q1 := 0; S2 := 0; Q2 := 0; writeln('Введите ', N, ' чисел:'); for i := 1 to N do begin read(a); if a < 0 then begin S1 := S1 + a; inc(Q1) end; if a > 0 then begin S2 := S2 + a; inc(Q2) end; end; writeln; if Q1 > 0 then begin writeln('Сумма отрицательных чисел: ', S1); writeln('Количество отрицательных: ', Q1) end else writeln('Отрицательных нет'); if Q2 > 0 then begin writeln('Сумма положительных чисел: ', S2); writeln('Количество положительных: ', Q2) end else writeln('Положительных нет') end.
Тут имеется один "подвох" и на него часто ловятся. Можно воспользоваться функций Power для возведения в степень 1/3, либо применить известную формулу Но в обоих случаях используется (явно или скрыто) вычисление логарифма. А мы помним, что логарифм определен только для положительного аргумента. По заданию нужно найти кубический корень из a+b. И этот корень определен для любого вещественного числа, в отличии от логарифма. Вспоминаем:
И только теперь можно писать программу.
// PascalABC.NET 3.2, сборка 1353 от 27.11.2016 // Внимание! Если программа не работает, обновите версию!
begin var a,b,c:real; Read(a,b); c:=a+b; Writeln(sign(c)*power(abs(c),1/3)) end.
Построить матрицу инцидентности и смежности.
Сформировать множество вершин, из которых исходят ребра заданной стоимости.