Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
gidthdt9
1

Удалить из массива элемент и вставить на нужное место элемент q, так, чтобы не нарушалась упорядоченность

19.01.2013, 22:50. Показов 1400. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Вот сама задача
Заданы целочисленный массив а1,а2...аn упорядоченный по не возрастанию элементов и целочисленные переменные q и k. Удалить из массива A элемент с номером k и вставить на нужное место элемент, равный q, так, чтобы не нарушалась упорядоченность по не возрастанию массива A.

Дело в том, что сделала эту задачу. Но преподаватель был не доволен тем, что я это сделала через сортировку элементов. Он попросил меня переделать через смещение элементов, а потом нахождение НУЖНОГО номера нового элемента. Честно говоря, даже не представляю как этот способ применить в этой задаче.
Надеюсь на вашу помощь!
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2013, 22:50
Ответы с готовыми решениями:

Удалить из a(1)...a(n) элемент с номером К (т.е. a(k)) вставить элемент равный P, так чтобы не нарушалась упорядоченность
Даны действительные числа a(1)....a(n), P, натуральное К (a(1)<=a(2)<=.......<=a(n)). Удалить из...

Массив: Удалить из массива элемент с номером k и вставить элемент, равный p, так, чтобы не нарушилась упорядоченность.
Дано: a:array of real;p:real;k:integer;(a<=a<=⋯<=a,0<k≤n). Удалить из a элемент с номером k (т.е....

Добавить элемент в упорядоченный список так, чтобы его упорядоченность не нарушалась
Здравствуйте уважаемые! очень нужна помощь. Написать программу, которая осуществляет обработку...

В отсортированный массив вставить несколько чисел так, чтобы не нарушалась упорядоченность
1.Найти третье по счёту отрицательное число в массиве 2.В отсортированный массив вставить...

2
Заблокирован
20.01.2013, 05:54 2
gidthdt9,
А ты пошли препода. В условии было описано каким методом делать?


А как понять 'упорядоченный по не возрастанию'. По убыванию? А результат куда выводить?


Ну в принципе. если я правильно понял. то ничего сложного. Запасёмся резервной перменной, скажем R и через цикл начинаем проходить массив проверяя каждый символ на возможное место для q . Если это место встретилось до K то символ котрый занимает это место заносим в R а потом начиням переставлять все числа до K То есть символ перед K заносим в К, тем самым сирая содержимое , что требует условие задачи, и во так начинаем прыгать. Каждый элемент на освовободившееся место. и так доходим до места. куда поставили q. После него и окажется последнее свободное место, куда и поставим, то что находтся в R . На этом всё. Если q оказался на месте K то попросту заменяем содержимое К на q. Если это место далее. то тогда дойдя до K начинаем сдвигать по одному все следущие элементы, проверяя на место для q.. Когда оно встретится. вставляем в него q И на этом всё. Цикл должен быть While.

Вам это когда сдавать? Если надо, отпишитесь. Я утром нарисую прогу. Но только я не пишу консольных. Но в принципе напишу процедуру. можете вставлять её куда угодно.
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
20.01.2013, 12:18 3
Лучший ответ Сообщение было отмечено как решение

Решение

Delphi
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
52
53
54
55
56
57
58
59
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
const nmax=100;
var a:array[1..nmax] of integer;
    n,i,j,k,q:integer;
begin
SetConsoleCP(1251);
SetConsoleOutPutCP(1251);
//в свойствах консоли шрифт --> Lucida Console
randomize;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
a[1]:=2*n;
for i:=2 to n do
a[i]:=a[i-1]-random(5);
writeln('Исходный массив:');
for i:=1 to n do
write(a[i]:4);
writeln;
repeat
write('Введите номер элемента для удаления k=');
readln(k);
until k in [1..n];
if k=n then n:=n-1//если элемент последний, обрезаем
else //если нет
 begin
  for i:=k to n-1 do//сдвигаем на него хвост массива
  a[i]:=a[i+1];
  n:=n-1; //обрезаем
 end;
writeln('Удаление элемента с номером ',k);
for i:=1 to n do
write(a[i]:4);
writeln;
write('Введите целок число для вставки q=');
readln(q);
n:=n+1;
if q<=a[n-1] then a[n]:=q //если не больше последнего, добавляем
else //иначе
 begin
  i:=1;//ищем место для вставки
  while a[i]>=q do i:=i+1;
  for j:=n downto i+1 do //раждвигаем массив вправо
  a[j]:=a[j-1];
  a[i]:=q; //вставляем
 end;
writeln('Упорядоченный массив:');
for i:=1 to n do
write(a[i]:4);
readln
end.
1
20.01.2013, 12:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2013, 12:18
Помогаю со студенческими работами здесь

Вставить элемент в массив так, чтобы он сохранил упорядоченность
Дан одномерный числовой массив, упорядоченный по возрастанию размером N и число X. Вставить X в...

Как вставить число на нужное место, не нарушая упорядоченность массива?
Ребят, как вставить число на нужное место не нарушая порядок массива? А то не получается....

Списки. Вставить в упорядоченный список новый элемент так, чтобы сохранилась упорядоченность
Вставить в непустой список L, элементы которого упорядочены по неубыванию, новый элемент E так,...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru