Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Magestian
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
1

Перестановка "-"элементов в массиве в начало

30.09.2014, 21:03. Просмотров 892. Ответов 8
Метки нет (Все метки)

Дан массив M[a], нужно переместить первые k элементов этого массива в начало.
То есть: было - -1 2 -3 -4 5 6 7
при условии, что k=3 то,
стало -1 -3 -4 2 5 7.
при условии, что k=2, то
стало -1 -3 2 -4 5 6 7.
Знаю, что нужно(или можно) приравнивать каждый элемент массива к 0, и если он меньше то - в начало, если нет - то на место. А как осуществить это программно (в коде) (да и ещё чтобы только первые k) - не пойму.
Помогите, пожалуйста. Хотелось бы понять как это делается.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2014, 21:03
Ответы с готовыми решениями:

Решение заданий типа "Array","Matrix","String","File","Text"""
большая просьба помочь решить где-то около 35-40 (из 100) задач (мне не...

Написать программу проверки правильности написания сочетаний "жи", "ши", "ча", "ща", "чу", "щу". Исправить ошибки
дан текст.написать программу проверки правильности написания сочетаний "жи",...

Задана матрица размером NxM. Определить k - количество "oco6ых" элементов матрицы, считая элемент "особым", если он больше суммы остальных элементов с
Задана матрица размером NxM. Определить k - количество "oco6ых" элементов...

Переставить в нем все буквы "а" в начало, а буквы "я" – в конец.
Дан некоторый текст. Переставить в нем все буквы "а" в начало, а буквы "я" – в...

После каждого символа "О" вставлять пробел и подсчитывать количество букв "А" стоящих между буквами "К" и "Л"
После каждого символа "О" вставлять пробел и подсчитывать количество букв "А"...

8
Новичок
Модератор
1511 / 980 / 465
Регистрация: 17.07.2012
Сообщений: 4,976
Завершенные тесты: 3
01.10.2014, 19:34 2
Цитата Сообщение от Magestian Посмотреть сообщение
Дан массив M[a], нужно переместить первые k элементов этого массива в начало.
Первые k отрицательных элементов?
0
Magestian
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
01.10.2014, 19:35  [ТС] 3
Да, первые k отрицательных.
0
Новичок
Модератор
1511 / 980 / 465
Регистрация: 17.07.2012
Сообщений: 4,976
Завершенные тесты: 3
01.10.2014, 19:50 4
Цитата Сообщение от Magestian Посмотреть сообщение
-1 -3 -4 2 5 7.
А куда 6 делось?

Добавлено через 4 минуты
Если я правильно понял задание , то как-то так.
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
var m:array[1..100] of Integer;
i,n,k,a,t:Integer;
begin
Write('a=');
Readln(a);
for i:=1 to a do 
 begin
  Write('M[',i,']=');
  Readln(m[i]);
 end;
Writeln('Исходный массив:');
for i:=1 to a do Write(m[i],' ');
Writeln;
Write('k=');
Readln(k);
n:=0;
for i:=1 to a do  
 begin
  if m[i]<0 then
   begin
    inc(n);
    t:=m[i];
    m[i]:=m[n];
    m[n]:=t;
   end;
  if n=k then Break;
 end;
Writeln('Полученный массив:');
for i:=1 to a do Write(m[i],' ');
Readln;
end.
1
Magestian
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
01.10.2014, 19:56  [ТС] 5
Спасибо, теперь всё понятно Сейчас протестирую. Задают в техникуме. (дополнительно)
0
Новичок
Модератор
1511 / 980 / 465
Регистрация: 17.07.2012
Сообщений: 4,976
Завершенные тесты: 3
01.10.2014, 20:17 6
Лучший ответ Сообщение было отмечено Magestian как решение

Решение

Кажется, я не так понял задание. Вот так правильно.
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
var m:array[1..100] of Integer;
i,j,n,k,a,t:Integer;
begin
Write('a=');
Readln(a);
for i:=1 to a do 
 begin
  Write('M[',i,']=');
  Readln(m[i]);
 end;
Writeln('Исходный массив:');
for i:=1 to a do Write(m[i],' ');
Writeln;
Write('k=');
Readln(k);
n:=0;
for i:=1 to a do  
 begin
  if m[i]<0 then
   begin
    inc(n);
    t:=m[i];
     for j:=i downto n+1 do m[j]:=m[j-1];
    m[n]:=t;
   end;
  if n=k then Break;
 end;
Writeln('Полученный массив:');
for i:=1 to a do Write(m[i],' ');
Readln;
end.
1
Magestian
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
01.10.2014, 20:28  [ТС] 7
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
Program akr;
const a=10;
var m:array[1..a] of integer;
      i,n,k,t:integer;
 
Begin
for i:=1 to a do
 Begin
 write('Enter a value in the array M[',i,']');
 readln(m[i]);
 End;
writeln('Initial array:  ');
for i:=1 to a do write(m[i],'  ');
write('k=');
read(k);
n:=0;
for i:=1 to a do
 Begin
 if m[i]<0 then
  Begin
  inc(n);
  t:=m[i];
  m[i]:=m[n];
  m[n]:=t;
  End;
 if n=k then Break;
 End;
writeln('Transposed array: ');
for i:=1 to a do write(m[i],'  ');
readln;
End.
Немного под себя переделал. Всё работает отлично

Добавлено через 1 минуту
Нет, нет. Первый вариант больше подходит.
0
Новичок
Модератор
1511 / 980 / 465
Регистрация: 17.07.2012
Сообщений: 4,976
Завершенные тесты: 3
01.10.2014, 20:31 8
Дело в том, что все-таки нужно в задании. Вот смотрите.
Допустим есть массив
-1 2 3 -3 4 5
k=2
Первая моя прога выведет,
-1 -3 3 2 4 5
А вторая(вроде бы так и надо) выводит,
-1 -3 2 3 4 5
Т.е порядок элементов сохраняет.
1
Magestian
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
01.10.2014, 20:40  [ТС] 9
Хотя, да. Соглашусь со вторым вариантом. Он больше подходит.
Просто внёс в прошлый переделанный код новые части из другого.
0
01.10.2014, 20:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2014, 20:40

Шахматы: охарактеризовать положение белых с помощью слов: "мат", "шах", "пат", "обыкновенная позиция"
у белых на доске остался только король , у черных - король, слон, конь....

В массиве записей, в поле "место" установить условие" это место занято, укажите другое".
program records; uses crt; type bol=record name: string; pol:string; ...

В заданной последовательности литер, состоящей из букв латинского алфавита и оканчивающейся точкой, определите общее число вхождений букв "a","e", "c", "h".
Немогу написать программу. В заданной последовательности литер, состоящей из...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru