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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2011, 17:53   #1
pavelmd
 
Регистрация: 21.09.2011
Сообщений: 4
По умолчанию Немогу написать массив.

Помогите решить задачу. Дан массив целых чисел. Записать в этот же массив сначала все положительные числа и нули, затем все отрицательные числа, сохранив порядок их следования.
pavelmd вне форума Ответить с цитированием
Старый 21.09.2011, 18:00   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Из PascalABС-то зачем выкладывать фотографии? Это же не ТР и с копированием текста проблем нет.

Если я правильно понял, то нужно просто отсортировать массив по убыванию. Гуглите "пузырьковая сортировка" (в википедии есть много примеров ее реализации).

upd: хотя если "сохранив порядок их следования", то нет.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.09.2011, 22:34   #3
gamer-25
Пользователь
 
Регистрация: 21.09.2011
Сообщений: 25
По умолчанию

Код:
Program Matrice;
var
   A: array[1..10] of Integer = (1,2,0,-4,7,2,0,8,9,-7);
   rezArr: array[1..10] of Integer;   // Для временного хранения
   i, j, num: Integer;
Begin
   num:= 1;

   for i:= 1 to 3 do
      for j:= 1 to 10 do
      begin
         if (i = 1) and (A[j] > 0)  then
         begin
            rezArr[num]:= A[j];
             num:= num + 1;
        end;
      if (i = 2) and (A[j] = 0) then
        begin
          rezArr[num]:= A[j];
          num:= num + 1;
        end;
      if (i = 3) and (A[j] < 0) then
        begin
          rezArr[num]:= A[j];
          num:= num + 1;
        end;
    end;

   for j:= 1 to 10 do
      A[j]:= rezArr[j];
end.
gamer-25 вне форума Ответить с цитированием
Старый 21.09.2011, 23:54   #4
pavelmd
 
Регистрация: 21.09.2011
Сообщений: 4
По умолчанию

gamer25 ты проверял свой код? Он не работает.
pavelmd вне форума Ответить с цитированием
Старый 22.09.2011, 11:50   #5
gamer-25
Пользователь
 
Регистрация: 21.09.2011
Сообщений: 25
По умолчанию

Почему не работает? Сам алгоритм не правильный или вообще программа не компилируется? Просто Паскаль у меня сейчас не установлен. На Delphi проверял, работает.
gamer-25 вне форума Ответить с цитированием
Старый 22.09.2011, 13:09   #6
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

2 gamer-25:
1. интересная концепция (вложенные циклы)).. Надеюсь, это шутка была )). Лучше организовать три цикла.
2. нули не надо выделять, их надо с положительными (по условию).
3. перекладывать массивы лучше так: A:=B . Но только для этого желательно описать их как один тип.
4. думаю, имелась в виду работа без дополнительных массивов..

Короче, примерно так можно (тут я проэксплуатировал идею Alex11223, за которую ему спасибо и +1)).
Код:
const
  n= 10;

var
  i,j,b: integer;
  a: array[1..n] of integer;

begin
  Randomize;
  for i:=1 to n do a[i]:= Random(11)-5;
  for i:=1 to n do Write(a[i]:3);
  Writeln;
  for i:=2 to n do
    for j:=n downto i do
      if (a[j]>=0) and (a[j-1]<0) then begin
        b:= a[j];
        a[j]:= a[j-1];
        a[j-1]:= b
      end;
  for i:=1 to n do Write(a[i]:3);
  Writeln
end.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 22.09.2011, 19:32   #7
pavelmd
 
Регистрация: 21.09.2011
Сообщений: 4
По умолчанию

Спасибо всем , все работает.
pavelmd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив - Нужно написать массив и распечатать на экран с конца в начало(язык С++) econ Помощь студентам 1 29.05.2011 22:02
Нужно написать массив econ Помощь студентам 1 29.05.2011 21:42
написать массив на Си blak333 Помощь студентам 0 16.11.2010 21:05
Немогу написать условие на Dev-C++ (на цикл For) Ulis Помощь студентам 1 22.11.2008 13:43
Help! Немогу написать код для посчета и вывода результатов. Руслан БД в Delphi 2 22.12.2006 13:29