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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.02.2011, 15:48   #1
Mercial
 
Регистрация: 17.02.2011
Сообщений: 6
Сообщение Массивы на pascal (преобразовать массив так, чтобы сначала были единицы, а потом - все остальные)

Решите пожалуйста задачу на pascal
Преобразовать массив B(31) таким образом,что-бы сначала располагались все элементы равные 1,а потом - все остальные.
Примерно(как я думаю) будет так
Код:
Program pr1;
uses crt;
var i:integer;
     a,b:array[1..31] of integer;
begin
clrscr;
randomize;
for i:=1 to 31 do
begin
B[i]:=random (51)-20;
write (B[i]:5);
end;
А вот дальше не знаю как,думаю через новый массив,но реализовать не могу.

Последний раз редактировалось Mercial; 17.02.2011 в 15:52.
Mercial вне форума
Старый 17.02.2011, 16:28   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

да ну бросьте, зачем тут новый дополнительный массив ?

Вы лучше себе вопрос задайте - остальные элементы должны сохранить свой порядок в массиве или нет?

Если должны сохранить порядок следования - то это чуть-чуть сложнее решается.
Если всё равно в каком они будут порядке - то это вообще элементарно:
заводите индекс, куда надо помещать очередную единичку, проходите по массиву, если встретили 1-цу, то меняете местами эту единичку и элемент, распоолженный по адресу индекса, индекс увеличиваете. всё.
примерно так:
Код:
  K_edin := 1;
  for i:=1 to 31 do
     if (B[i] = 1) and (i<>K_edin) then begin
        a := B[i];
        B[i] := B[K_edin];
        B[K_edin] := a;
        inc(K_edin);
     end;
и всё.

если же порядок следования нужно сохранить. то нужно сдвинуть все элементы поочерёдно в цикле, а на освободившееся место вставить единичку.
Serge_Bliznykov вне форума
Старый 17.02.2011, 19:24   #3
Mercial
 
Регистрация: 17.02.2011
Сообщений: 6
По умолчанию

Извените,не могли бы вы поподробнее описать куда код вставлять в мой пример,изучаю паскаль на 1 курсе,и что-то не заладилось с массивами,а сейчас вот маюсь.Я понимаю конечно что вам до этого дела нет,но прошу помогите пожалуйста.Кстати неважно в каком порядке будут стоять последущие цифры после единички.
Mercial вне форума
Старый 17.02.2011, 20:16   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

так сразу после Вашего код и вставляйте. (ну в VAR не забудьте добавить var K_edin : integer;

потом, после этого ещё добавьте печать полученного массива и всё, задача решена.

а что, пример код в вашем 1-м сообщении Вы не сами писали?!
Serge_Bliznykov вне форума
Старый 17.02.2011, 20:34   #5
Mercial
 
Регистрация: 17.02.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так сразу после Вашего код и вставляйте. (ну в VAR не забудьте добавить var K_edin : integer;

потом, после этого ещё добавьте печать полученного массива и всё, задача решена.

а что, пример код в вашем 1-м сообщении Вы не сами писали?!
Писал полностью самСпасибо огромное за помощь
Mercial вне форума
Старый 18.02.2011, 19:35   #6
seilova
Пользователь
 
Аватар для seilova
 
Регистрация: 17.02.2011
Сообщений: 22
По умолчанию

1. Дан одномерный массив. Переписать его элементы в обратном порядке без использования дополнительного массива.
2. В массиве хранится информация о максимальной скорости каждой из 40 марок легковых автомобилей. Определить скорости двух самых быстрых автомобилей.


помогите пожалуйста, в паскале))))
seilova вне форума
Старый 18.02.2011, 22:07   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

seilova, почитайте правила форума.

А потом создавайте свою тему (а лучше - две отдельные темы - для каждой задаче свою). Ну и не забудьте, что форум - это не автоматический решатель Ваших задач, приводите свои наработки, что получается, что вызыает трудности, давайте тот код, который Вам удалось написать самостоятельно.

А данная тема исчерпала себя и закрыта.
Serge_Bliznykov вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сначала изучить паскаль а потом лезть в delphi? xtreemxx Помощь студентам 16 12.09.2010 14:49
В заданном массиве C(8) переставить элементы так щеб сначала шли все отрицатильние а затем положительные. basav1k Помощь студентам 2 26.05.2010 21:10
Преобразовать строку таким образом, чтобы буквы каждого слова в ней были отсортированы по возрастанию. Matr1x Общие вопросы C/C++ 4 07.01.2010 21:38
Паскаль. Как исправить процедуры 2 и 3, так чтобы все заработало наконец...! Татяна Помощь студентам 3 27.05.2009 21:42
Как исправить процедуры 2 и 3, так чтобы все заработало наконец...! Татяна Паскаль, Turbo Pascal, PascalABC.NET 2 27.05.2009 19:44