Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2008, 15:29   #1
Wast
Пользователь
 
Регистрация: 22.12.2008
Сообщений: 14
По умолчанию Составить программу которая будет сортировать все положительные элементы

Дан массив состоящий из 10 вещественных элементов. Составить программу которая будет сортировать все положительные элементы а отрицательные и нулевые элементы оставлять на своих местах.


плиз помогите ника не получается

Program n14;
Uses Crt;
Var N, i, k : Integer;
X, Y : Array [1..10] of Real;
BEGIN
ClrScr;
n:=10;
For i := 1 to N do
begin

Write('X[ ', i, ' ] = '); ReadLn(X[i])
end;

k:=0;
For i := 1 to N do
If X[i]>0 then
begin k:=k+1; Y[k]:=X[i]
end;

For i := 1 to N do
If X[i]=0 then
begin k:=i; Y[k]:=X[i]
end;

For i := 1 to N do
If X[i]<0 then
begin k:=i; Y[k]:=X[i]
end;


For i := 1 to N do Write(Y[i] : 5 : 1);
WriteLn; ReadLn;
END.


если ввести больше 3-4 отрицательных или нулевых элементов тогда получается сыр бор.. Пожалуйста помогите если не трудно. Буду признателен.
Wast вне форума Ответить с цитированием
Старый 22.12.2008, 15:56   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
uses crt;
const n=10;
var a,b:array[1..n] of real;
    i,j,k:integer;
    temp:real;
    
begin
clrscr;
randomize;
for i:=1 to n do
 begin
   a[i]:=random(10)-random(7);
   write(a[i],' ');
 end;
 writeln;
k:=0;
for i:=1 to n do
 if  a[i]>0 then begin
                  inc(k);
                  b[k]:=a[i];
                 end;
 for i:=2 to k do
  for j:=k downto i do
   if b[j-1]>b[j] then
    begin
     temp:=b[j];
     b[j]:=b[j-1];
     b[j-1]:=temp;
    end;
k:=0;
for i:=1 to n do
begin
 if a[i]>0 then begin
                  inc(k);
                  a[i]:=b[k];
                end;
 write(a[i],' ');
 end;
end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
процедура, которая будет что-то делать пока зажата клавиша пробел. Porkman Паскаль, Turbo Pascal, PascalABC.NET 4 14.12.2008 03:37
Как создать обратную функцию, которая из уникального номера будет возвращать строку? SkAndrew Общие вопросы Delphi 8 06.04.2008 21:10
Составить процедуру, которая в задоном массиве С заменяет элементы Absent Помощь студентам 1 25.03.2008 23:11
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49
в начале все отрицательные, затем все положительные элементы в матрице motaro Паскаль, Turbo Pascal, PascalABC.NET 2 07.03.2008 19:16