0 / 0 / 0
Регистрация: 03.11.2017
Сообщений: 37
1

В массиве все положительные элементы, стоящие перед минимальным положительным элементом, переслать в хвост массива

31.03.2018, 10:23. Показов 686. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В массиве A=(a1, а2, ..., аn) все положительные элементы, стоящие перед
минимальным положительным элементом, переслать в «хвост» массива.
Минимальный я нашел, а дальше не могу...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var //глобальный
  Form1: TForm1;
  a: array [0..19] of integer;
  i,j,t,n: integer;
  b: array[0..19] of longint;
 
procedure TForm1.Button5Click(Sender: TObject);
var u, k, x, i:integer;
 
begin
for i:=1 to n do
  a[i]:=StrToInt(SG1.Cells[i-1,0]);
  u:=1;
  for i:=2 to n do
    if a[i]<a[u] then
    u:=i;
    Label4.Caption:=IntToStr(a[u]);
    Label5.Caption:=IntToStr(u);
    k:=u-1;
 
 
end;
0
31.03.2018, 10:23
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.03.2018, 10:23
Ответы с готовыми решениями:

В массиве все положительные элементы, стоящие перед минимальным положительным элементом, переслать в хвост массива
В массиве A=( a1, а2, ..., аn) все положительные элементы, стоящие перед минимальным положительным элементом, переслать в «хвост» массива. ...

Все положительные элементы, стоящие перед минимальным положительным элементом, переслать в «хвост» массива
В массиве A=(a1, а2, ..., аn) все положительные элементы, стоящие перед минимальным положительным элементом, переслать в «хвост» массива.

В массиве все положительные элементы, стоящие перед минимальным положительным, переслать в "хвост"
в массиве (одномерном) все положительные элементы, стоящие перед минимальным положительным элементом, переслать в &quot;хвост&quot; массива.

4
 Аватар для Matan!
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
31.03.2018, 17:14 2
Цитата Сообщение от Lucik go Посмотреть сообщение
Минимальный я нашел,
И кто так ищет?
Алгоритм такой(для поиска минимума):
пусть мин = а(0)
тогда пока не достигнем конца массива сравниваем а(0) с а(k), k=1..n
Если а(0) > а(k), то а(k) = мин

Зачем тебе два цикла не знаю..

Дальнейший алгоритм представил?
Я его вижу так:
нашли мин, запомнили его индекс (инд).
цикл от 0 до (инд - 1)
а(0) = временная переменная (темп)
а(0) = мин(к)
мин(к)=темп
0
D1973
01.04.2018, 13:34
  #3

Не по теме:

Цитата Сообщение от Matan! Посмотреть сообщение
а(0) с а(k), k=1..n
Раз первый индекс - 0, то и k = 1 .. n - 1

0
Почетный модератор
 Аватар для Puporev
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
01.04.2018, 14:39 4
Я бы написал примерно так.
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
{$R *.dfm}
//зададим параметры таблиц и SpinEdit
procedure TForm1.FormCreate(Sender: TObject);
begin
with SpinEdit1 do
 begin
  minvalue:=10;
  maxvalue:=100;
 end;
with StringGrid1 do
 begin
  fixedrows:=0;
  fixedcols:=0;
  rowcount:=1;
  defaultcolwidth:=30;
 end;
with StringGrid2 do
 begin
  fixedrows:=0;
  fixedcols:=0;
  rowcount:=1;
  defaultcolwidth:=30;
 end;
end;
//выполним задачу
procedure TForm1.Button1Click(Sender: TObject);
var a:array of integer;
    n,i,j,min,imn,k,x:integer;
begin
n:=SpinEdit1.Value;
setlength(a,n);
StringGrid1.ColCount:=n;
StringGrid2.ColCount:=n;
randomize;
//найдем положительный, если он есть
min:=0;
for i:=0 to n-1 do
 begin
  a[i]:=-10+random(21);
  StringGrid1.Cells[i,0]:=inttostr(a[i]);
  if a[i]>0 then min:=a[i];//если есть он пока минимальный
 end;
if min=0 then
 begin
  ShowMessage('В массиве нет положительных элементов');
  exit;
 end;
imn:=-1; //ищем индекс минимального положительного
for i:=0 to n-1 do
if(a[i]>0)and(a[i]<min)then
 begin
  min:=a[i];
  imn:=i;
 end;
Label1.Caption:='Минимальный положительный элемент='+inttostr(min)+
                ' его номер='+inttostr(imn+1);
if imn=0 then
 begin
  ShowMessage('Перед минимальным положительным других элементов нет');
  exit;
 end;
//переставим положительные до минимального положительного в конец
i:=0;
k:=0;
while i<imn do
if a[i]>0 then
 begin
  k:=1;
  x:=a[i];
  for j:=i to n-2 do
  a[j]:=a[j+1];
  a[n-1]:=x;
  imn:=imn-1;
 end
else i:=i+1; 
if k=0 then
 begin
  ShowMessage('Перед минимальным положительным других положительных элементов нет');
  exit;
 end;
for i:=0 to n-1 do
StringGrid2.Cells[i,0]:=inttostr(a[i]);
end;
0
 Аватар для Matan!
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
02.04.2018, 02:14 5
Цитата Сообщение от D1973 Посмотреть сообщение
Раз первый индекс - 0, то и k = 1 .. n - 1
точно.. Я ступил...
0
02.04.2018, 02:14
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2018, 02:14
Помогаю со студенческими работами здесь

В одномерном массиве (в массиве n элементов) удалить все элементы стоящие между минимальным положительным и максимальным отрицательным элементом
Добрый вечер!) Помогите с задачкой: В одномерном массиве (в массиве n элементов) удалить все элементы стоящие между минимальным...

В массиве b все положительные элементы заменить минимальным элементом массива a
Создать случайным образом массив a и b. В массиве b все положительные элементы заменить минимальным элементом массива a.

В двухмерном массиве удалить все элементы, стоящие между минимальным положительным и максимальным отрицательным
В двухмерном массиве 10x10 удалить все элементы, стоящие между минимальным положительным и максимальным отрицательным элементами.

Удалить все элементы массива, стоящие между минимальным положительным и максимальным отрицательным элементами
Помогите плиззз=((( Задание:В массиве A=(a1, а2, ..., аn) удалить все элементы, стоящие между минимальным положительным и максимальным...

Заменить все положительные элементы массива минимальным элементом этого массива
Такие дела : задан вектор А, который содержит n элементов. Нужно заменить все положительные элементы массива минимальным элементом...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Микросервис с нуля на Go с Kafka
stackoverflow 12.02.2025
Когда я впервые столкнулся с необходимостью разделить монолитное приложение на микросервисы, передо мной встал вопрос выбора правильных технологий и подходов. После долгих экспериментов с различными. . .
Микросервис с нуля на C# с RabbitMQ
stackoverflow 12.02.2025
Переход от монолитной архитектуры к микросервисной - это не просто модное веяние, а закономерный этап эволюции программных систем. В отличие от монолита, где все компоненты тесно связаны между собой. . .
Docker для начинающих
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения все чаще возникает необходимость быстро и надежно разворачивать приложения в различных средах. Разработчики постоянно сталкиваются с проблемой. . .
Создание бота для Телеграм на C#
stackoverflow 12.02.2025
В современном мире корпоративных коммуникаций Telegram-боты становятся незаменимым средством автоматизации бизнес-процессов и взаимодействия с сотрудниками. Как создать такого бота, который сможет. . .
Операторы сравнения (== и ===) в JavaScript
hw_wired 12.02.2025
JavaScript предоставляет два основных оператора сравнения - оператор нестрогого равенства (==) и оператор строгого равенства (===). На первый взгляд они могут показаться очень похожими, но их. . .
Определение адреса, откуда репозиторий Git был клонирован
hw_wired 12.02.2025
Система контроля версий Git хранит всю информацию о репозитории в специальной директории . git, включая данные об удаленных источниках. Эта информация необходима для синхронизации изменений между. . .
Объединение нескольких коммитов Git в один
hw_wired 12.02.2025
Представьте, что вы работаете над новой функциональностью и создали десяток небольших коммитов: исправление опечатки, форматирование кода, добавление комментариев, реализация основной логики. Каждый. . .
Как добавить локальную ветку в удалённый репозиторий Git
hw_wired 12.02.2025
Локальная ветка в Git - это изолированная линия разработки, существующая только на вашем компьютере. Представьте себе дерево с множеством веток - каждая ветка может расти в своем направлении, не. . .
Статическое отражение в C++
stackoverflow 12.02.2025
Статическое отражение представляет собой мощный механизм, позволяющий программам анализировать и манипулировать своей собственной структурой во время компиляции. Эта возможность открывает. . .
C++ в 21 веке - Бьярне Страуструп
stackoverflow 12.02.2025
В современном мире разработки программного обеспечения C++ продолжает оставаться одним из ключевых языков программирования, несмотря на свой солидный возраст - более 45 лет с момента создания. За это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru