Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Название темы включает слова - "Помогите", "Спасите", "Срочно"
Название темы не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте >>>правила <<< и заново правильно создайте тему.
 
Опции темы
Старый 17.02.2011, 16:48   #1
Mercial
 
Регистрация: 17.02.2011
Адрес: Кемерово
Сообщений: 5
Репутация: 10

skype: Mercial_rus
Сообщение Массивы на 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 в 16:52.
Mercial вне форума  
Старый 17.02.2011, 17:28   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 22,587
Репутация: 5062
По умолчанию

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

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

Если должны сохранить порядок следования - то это чуть-чуть сложнее решается.
Если всё равно в каком они будут порядке - то это вообще элементарно:
заводите индекс, куда надо помещать очередную единичку, проходите по массиву, если встретили 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, 20:24   #3
Mercial
 
Регистрация: 17.02.2011
Адрес: Кемерово
Сообщений: 5
Репутация: 10

skype: Mercial_rus
По умолчанию

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

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

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

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

skype: Mercial_rus
По умолчанию

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

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

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

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


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

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

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

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



Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




06:46.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru