Другие языки программирования и технологии
Отсортировать отрицательные элементы массива по убыванию, пропуская положительные и нули. Вывести массив до и после сорт
program lab3; var n,i,x:integer; A:array[1..5] of integer; begin randomize; for i:=1 to 5 do begin A:=random(15)-10; writeln (A);end; for i:=1 to 4 do begin if A<0 then If A<a[i+1]>; A:=x; write(A);end; readln; end. не могу понять в чем ошибка то??
Проблема глубже, чем просто забытый индекс.
Программа в приведенном виде не отсортирует ничего, хоть добавляй скобки, хоть нет.
Я бы переписал вот так.
++++++++++++++++++++++++++++++++++++++++
program lab3;
var
n,i,j:integer;
A:array[1..5] of integer;
begin
randomize;
//сначала просто заполняем массивчик
for i:=1 to 5 do
begin
A:=random(15)-10;
writeln (A);
end;
//теперь сортируем самым простым и неэффективны способом - замены
//в книге Кнутта - куча других способов, более красивых
for i:=1 to 4 do
begin
if A<0 then
for j:=i+1 to 5 do
begin
//сравниваем каждый элемент с каждым, меняем значения, если оба отрицательные, и элемент с большим индексом - больше
if (A[j] >A) and (A[j] < 0) then
n := A;
A := A[j];
A[j] := n;
end if;
end;
end if;
end;
//теперь все отсортировано, выводим значения
for i:=1 to 5 do
begin
writeln (A);
end;
end;
++++++++++++++++++++++++++++++++++++++++
все.
Вот блин не фиг делать человеку в час ночи - задачки решать ;)
про end if - это из pl/sql, в паскале по-моему просто end, не помню уже, надо будет заменить, где надо, но идея должна быть ясна.
Одним проходом отсортировать ничего не получится - можно булдет только выявить один максимальный или минимальный элемент, но никак не упорядочить весь массив.
по поводу A < A[i+1] - похоже на метод пузырьковой сортировки, если нужен именно он - то программу нужно будет немного переписать.. .
не тестировалось, принимать "как есть", если эта программа повредит ваш компьютер - фирма ответственности не несет ;)
Программа в приведенном виде не отсортирует ничего, хоть добавляй скобки, хоть нет.
Я бы переписал вот так.
++++++++++++++++++++++++++++++++++++++++
program lab3;
var
n,i,j:integer;
A:array[1..5] of integer;
begin
randomize;
//сначала просто заполняем массивчик
for i:=1 to 5 do
begin
A:=random(15)-10;
writeln (A);
end;
//теперь сортируем самым простым и неэффективны способом - замены
//в книге Кнутта - куча других способов, более красивых
for i:=1 to 4 do
begin
if A<0 then
for j:=i+1 to 5 do
begin
//сравниваем каждый элемент с каждым, меняем значения, если оба отрицательные, и элемент с большим индексом - больше
if (A[j] >A) and (A[j] < 0) then
n := A;
A := A[j];
A[j] := n;
end if;
end;
end if;
end;
//теперь все отсортировано, выводим значения
for i:=1 to 5 do
begin
writeln (A);
end;
end;
++++++++++++++++++++++++++++++++++++++++
все.
Вот блин не фиг делать человеку в час ночи - задачки решать ;)
про end if - это из pl/sql, в паскале по-моему просто end, не помню уже, надо будет заменить, где надо, но идея должна быть ясна.
Одним проходом отсортировать ничего не получится - можно булдет только выявить один максимальный или минимальный элемент, но никак не упорядочить весь массив.
по поводу A < A[i+1] - похоже на метод пузырьковой сортировки, если нужен именно он - то программу нужно будет немного переписать.. .
не тестировалось, принимать "как есть", если эта программа повредит ваш компьютер - фирма ответственности не несет ;)
If A<a[i+1]> - это что за запись? if A[ i ] < a[i+1] и что?
Вы не указали индексы при обращении к массиву "А".
Похожие вопросы
- Поиск наибольшего отрицательного элемента массива (c++) и его удаление, написал программу, где то косячек =/
- (плиз решите на С++) Количество отрицательных элементов массива и заменить эти элементы их квадратами. Одномерный масси
- Поменять местами первый и последний отрицательные элементы массива B (18). (Язык Си) (Язык Си)
- 1.Заполнить массив случайными числами. Вывести элементы массива на экран. Заменить все его минимальные элементы нулями.
- Помогите с массивами! Найти и вывести на экран сумму нечётных элементов массива и количество отрицательных.
- В одномерном массиве, состоящем из n вещественных элементов, вычис- лить: 39 1) сумму положительных элементов массив
- Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
- Объясните пожалуйста, что означает эта строка WRITE('ВВЕДИTE ЭЛЕМЕНТ МАССИВА '); READLN(MAS[1])?
- ПОМОГИТЕ, ДОБРЫЕ ЛЮДИ!!! Язык С++, записать в массив d нечетные элементы массива А которых нет в В - НЕ ПОЛУЧАЕТСЯ
- Определить является ли кол-во положительных элементов массива числом чётных