Напишите вариант метода пузырька который заканчивает работу если на очередном шаге внешнего цикла не
Опубликовано 10.06.2017 по предмету Информатика от Гость >>
Ответ оставил Гость
Const
n = 10;
var
a: array[1..n] of integer;
i, j, t: integer;
flag:boolean;
begin
Randomize;
Writeln(Исходный массив);
for i := 1 to n do
begin
a[i] := random(101)-50;
Write(a[i]:4)
end;
Writeln;
i:=1;
repeat
flag:=true;
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; flag:=false end;
Inc(i);
until (i>n-1) or flag;
Writeln(Отсортированный по возрастанию массив);
for i := 1 to n do Write(a[i]:4);
Writeln
end.
Тестовое решение:
Исходный массив
-32 -7 2 2 50 -33 1 31 4 -16
Отсортированный по возрастанию массив
-33 -32 -16 -7 1 2 2 4 31 50
Напишите вариант метода пузырька, который заканчивает работу, если на очередном шаге внешнего цикла не было перестановок.
println(‘Отсортированный массив:’);
a.Println;
end.
21211 это все (просто просят не меньше 20 символов 🙂 )
Первая задачка:
1Мб = 1024Кб, тогда объем сообщения будет = 32768бит (1/256 от Мб ,тут я очень сомневаюсь)
тогда чтобы определить мощность делаем так:
32768/2048= 16
2^16=65536 — мощность алфавита.
Вторая задачка:
Ну тут скорее всего на нашем языке больше информации несет, ибо у нас 33 символа и значит каждый символ весит около 5 бит, а у Нагури всего 4 символа и каждый символ весит по 2 бита
program vld;
var
a1,b1,a2,b2, s1,s2 : real;
begin
writeln(‘Введите катеты первого треугольника’);
read(a1,b1);
writeln(‘Введите катеты второго треугольника’);
read(a2,b2);
s1 := (a1 *b1 ) / 2;
s2 := (a2 * b2) / 2;
if s1 > s2 then
writeln(‘Площадь первого треугольника больше площади второго’);
if s2 > s1 then
writeln(‘Площадь второго треугольника больше площаде первого’);
Паскаль. Линейный одномерный массив. Метод пузырька.
Если я правильно понял, то должно быть вот так:
const m = 10;
var
arr: array[1..m] of integer;
i, j, k,x: integer;
begin
write (‘Исходный массив: ‘);
for i := 1 to m do begin
arr[i] := random(256);
write (arr[i]:4);
end;
writeln;
for i := 1 to m-1 do Begin
x:=0;
for j := 1 to m-i do
if arr[j] > arr[j+1] then begin
k := arr[j];
arr[j] := arr[j+1];
arr[j+1] := k;
x:=x+1;
end;
if x=0 then break;
end;
write (‘Отсортированный массив: ‘);
for i := 1 to m do
write (arr[i]:4);
writeln;
end.
Но не работает! Что не так?
Александр Погребняк Высший разум (196982) У меня все работает. 10 раз запускал 