1.
var x,y:integer;
begin
write('x = ');
readln(x);
if x>0
then y:=1
else if x=0 then y:=0 else y:=-1;
writeln('y = ',y);
end.
Пример:
x = -5
y = -1
2.
var a,b,c,x1,x2,d:real;
begin
writeln('Введите a, b, c:');
readln(a,b,c);
d:=b*b-4*a*c;
if d>0
then begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln('x1 = ',x1,' x2 = ',x2);
end
else if d=0 then begin
x1:=-b/(2*a);
writeln('x = ',x1);
end
else writeln('Корней нет');
end.
Пример:
Введите a, b, c:
2 5 -3
x1 = 0.5 x2 = -3
3.
var a,b,c:real;
begin
writeln('Введите a, b, c:');
readln(a,b,c);
if (a<=b)and(b<=c)
then begin
b:=a; c:=a;
end
else begin
a:=-a; b:=-b; c:=-c;
end;
writeln('a = ',a,' b = ',b,' c = ',c);
end.
Пример 1:
Введите a, b, c:
2 5 9
a = 2 b = 2 c = 2
Пример 2:
Введите a, b, c:
2 9 5
a = -2 b = -9 c = -5
Мы находимся в точке по горизонтали А и по вертикали А. Нам нужно попасть в точку F. Смотрим напротив строки А по горизонтали и вертикали куда можно идти, есть три варианта: сразу в F, в точку В и в точку С. Если идти сразу в F то пройденный путь составит 18. Но нам нужен кратчайший путь поэтому ищем где цифра поменьше например С. Идём в С и пройденный путь уже составляет 3, теперь смотрим по вертикали (т.к по горизонтали мы можем пойти только в точку F но нам нужен наименьший путь) куда лучше пойти и где значение меньше и это D т.к там значение наименьшее - 1.Идём в эту точку и путь уже равен 3+1=4, смотрим по горизонтали напротив D и видим что сразу можем попасть в точку F. Доходим до конца и путь составляет 4+3=7 - это кратчайший путь.
Лучше советую смотреть сразу минимальное значение в столбике F и от неё смотреть путь до точки А.
Либо рисовать графы как в комментарии выше, что скорее гораздо понятнее но дольше
Const n=20;
var
a:array[1..n] of integer;
i,j,t,x,i1,i2:integer;
begin
Randomize;
Writeln('Исходный массив:');
for i:=1 to n do begin
a[i]:=Random(21);
Write(a[i],' ')
end;
Writeln;
for i:=1 to n-1 do
for j:=1 to n-i do
if a[j]<a[j+1] then begin
t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t
end;
Writeln('Отсортированный массив:');
for i:=1 to n do Write(a[i],' ');
Writeln;
write('x = ');
readln(x);
i1:=1;
i2:=n;
repeat
i:=(i1+i2) div 2;
if a[i]>x then i1:=(i1+i2) div 2+1;
if a[i]<x then i2:=(i1+i2) div 2-1;
until (a[i]=x)or(i1>i2);
if a[i]=x then begin
writeln('Искомый(ые) номер(а) элемента(ов):');
while (i>0)and(a[i]=x) do
i:=i-1;i:=i+1;
while (i<=n)and(a[i]=x) do begin
write(i,' '); i:=i+1; <span>end;</span>
end
else writeln('Элемент не найден');
writeln;
end.
Pascal ABC.
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a, j = 0;
cin >> a;
int k = a;
while(k>0) {
j += k % 10;
k /= 10;
}
if (pow(j,3) == pow(a, 2))
cout << "Куб суммы цифр этого числа равен А*А." << endl;
else
cout << "Куб суммы цифр этого числа не равен А*А." << endl;
}
// PascalABC.NET 3.1, сборка 1218 от 12.04.2016
begin
var s:=ReadlnString('>');
Println(Regex.Replace(s,'(.)\1+','...'))
end.
<u><em>Тестовое решение:</em></u>
> *** 244800+10000=254800 тестовый пример *****
... 2...8...+1...=2548... тестовый пример ...