Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 2
Регистрация: 08.10.2015
Сообщений: 74

Переписать в массив B в убывающем порядке все отрицательные элементы массива А

06.02.2016, 13:08. Показов 2104. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан одномерный массив целых чисел A[1..n].
Напишите программу, которая перепишет в массив B[1..n] сначала в убывающем порядке все
отрицательные элементы массива А, а затем в возрастающем порядке все положительные элементы массива А.
Например, для A = (4, -8, 7, -6, 0, -7, 5), получим B = (-6, -7, -8, 0, 4, 5, 7).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.02.2016, 13:08
Ответы с готовыми решениями:

Переписать элементы массива А в массив В так, чтобы все отрицательные элементы располагались в начале массива, а все остальные в конце
очень нужна помощь Задача 10. Заполнить массив из 10 элементов с помощью генератора псевдослучайных чисел как положительными, так и...

Все отрицательные элементы массива переписать в массив y
Дан одномерный массив x из n элементов. Найти порядковый номер первого по счёту положительного элемента с чётным порядковым номером....

Переписать в массив М1 все отрицательные элементы массива М
Переписать в массив М1 все отрицательные элементы массива М

6
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
06.02.2016, 15:01
Лучший ответ Сообщение было отмечено Imwey как решение

Решение

Можно по разному решить, например так.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
uses crt;
const nmax=100;
var a,b:array[1..nmax] of integer;
    c:array[1..nmax] of byte;
    n,n1,i,j,k,m,im:integer;
begin
randomize;
repeat
write('Размер массивов от 3 до ',nmax,' n=');
readln(n);
until n in [3..nmax];
writeln('Исходный массив');
k:=0;
for i:=1 to n do
 begin
  a[i]:=-10+random(21);
  c[i]:=0;
  write(a[i]:4);
  if a[i]<0 then k:=k+1; //считаем отрицательные
 end;
writeln;
n1:=0;
for i:=1 to k do
 begin
  m:=-maxint-1;
  for j:=1 to n do
  if(c[j]=0)and(a[j]<0)and(a[j]>m)then //выбираем отрицательные по убыванию
   begin
    m:=a[j];
    im:=j;
   end;
  n1:=n1+1;
  b[n1]:=a[im];
  c[im]:=1;
 end;
for i:=k+1 to n do //остальные по возрастанию
 begin
  m:=maxint;
  for j:=1 to n do
  if(c[j]=0)and(a[j]<m)then
   begin
    m:=a[j];
    im:=j;
   end;
  n1:=n1+1;
  b[n1]:=a[im];
  c[im]:=1;
 end;
for i:=1 to n do
write(b[i]:4);
end.
2
133 / 148 / 64
Регистрация: 27.06.2013
Сообщений: 536
06.02.2016, 17:42
Puporev, а как выделять память не по максимуму для трех массивов, а работать с динамическими массивами?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
06.02.2016, 18:13
В простом АВС нет динамических массивов.
0
133 / 148 / 64
Регистрация: 27.06.2013
Сообщений: 536
07.02.2016, 00:09
Цитата Сообщение от Puporev Посмотреть сообщение
В простом АВС нет динамических массивов.
Есть. Пока не разобрался как реализовано, но есть.
0
Модератор
10410 / 5697 / 3401
Регистрация: 17.08.2012
Сообщений: 17,350
07.02.2016, 01:59
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Нет динамических массивов в ABC. Либо Вы путаете Pascal ABC и Pascal ABC.NET, либо откуда-либо узнали, что динамический массив в ABC создать всё же можно. Но - "можно создать с помощью какого-либо костыля" и "реализовано в данном диалекте данного языка" - это очень разные вещи. Можно с помощью указателей сделать "вроде бы динамический массив", немножко потанцевав с бубном, но от этого динамические массивы в описании / инструкции данного диалекта паскаля не появятся. Ещё в Turbo Pascal, в котором тоже нет динамических массивов, подобный трюк был известен. Вот, например, код с сайта "Клуб программистов" для Pascal ABC:

Код от Serge_BliznykovАналоги динамических массивов в TP и PascalABC?
Posted by Chas under Пост-обзор

полноценного открытого массива скажем type arr=array of integer;
Pascal не поддерживает.

Serge_Bliznykov:
может лучше посмотреть на использование динамических структур (связных списков) ?! Это может оказаться и надежнее, и красивее и эффективнее, чем манипуляции с указателями…

а вообще, мне удалось обмануть это Pascal.ABC таким образом:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
type mA=array[1..1] of integer;
     mAFictive=array[1..10000] of integer;
     pAFict = ^mAFictive;
procedure ArrayAdd(var AAA : pAFict; var N : integer; val: integer);
 var siz : word;
     pAF, p4Free : pAFict;
     i : integer;
  begin
    n:=n+1;
    siz:=n*SizeOf(mA);
    GetMem(pAF,siz); {выделяем новую область памяти}
    // копируем туда старые данные
    for i:=1 to n-1 do pAF^ :=  AAA^; // можно через CopyMem переписать...
    p4Free := AAA; {сохраним указатель на ту память, чтобы была выделена ранее}
    AAA := pAF; {теперь новая память доступна}
    FreeMem(p4Free); {очистим предыдущий указатель}
    AAA^[n]:=val;
  end;
var
  i, n   : integer;
  pAF : pAFict;
begin
   WriteLn('Хакерские приемы в PASCAL.ABC');
   n:=0;
   ArrayAdd( pAF, n, 200 );
   ArrayAdd( pAF, n, 300 );
   ArrayAdd( pAF, n, 400 );
   for i:=1 to N do
//     Writeln(i, ' = ', pAFict(A)^);
     Writeln(i, ' = ', pAF^);
   FreeMem(pAF); // обязательно освободить память...
   readln;
end.
Кстати, если выделить память ОДИН раз (сразу, сколько надо – задать нужное N и выделить), тогда не понадобятся трюки с копированием из старой области памяти в новую, это весьма положительно скажется на быстродействии…
Ссылка на этот код: Аналоги динамических массивов в TP и PascalABC.

Ну-ну... "Есть". Осталось стибрить и принéсть...
2
133 / 148 / 64
Регистрация: 27.06.2013
Сообщений: 536
07.02.2016, 08:29
Убедили. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.02.2016, 08:29
Помогаю со студенческими работами здесь

Сформировать и вывести новый массив, в который поместить в убывающем порядке все отрицательные числа исходного
Дан произвольный одномерный массив целых чисел. Размерность 15. Сформировать и вывести новый массив, в который поместить в убывающем...

Переписать в массив Z все положительные элементы массива Y, а в массиве R - все отрицательные
дан массив X (60 элементов). Вычислить: y=2*sin(SQRT (x-1))\SQR(SQRT (x) *2*x - 3 переписать в массив Z все положительные элементы...

Переписать в массив В все положительные элементы массива А, а в С все отрицательные
ввести 2-МЕРНЫЙ массив А целого типа. сформировать 2 1-мерных массива В и С переписав в массив В все положительные элементы массива А ,а в...

Переписать в массив B подряд все отрицательные элементы массива А
даны действительные а1, a2, ... , a10. переписать в массив B подряд все отрицательные элементы массива А

Переписать все элементы массива А в массив А1 в обратном порядке
Ввести массив А(n). Переписать все элементы массива А в массив А1 в обратном порядке. Массивы А и А1 распечатать.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru