Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/170: Рейтинг темы: голосов - 170, средняя оценка - 4.51
 Аватар для Кудинович
1 / 1 / 0
Регистрация: 10.02.2016
Сообщений: 43

Заполнить массив из 10 элементов случайными числами в интервале [0.100] и отсортировать первую половину по

16.02.2016, 07:58. Показов 36063. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Может кому нибудь да пригодится) Стараюсь все делать по шагам и чтобы было понятно каждому.
Иногда вижу простые программы, но составленные очень запутанным способом. Поэтому желаю чтобы все программировали как можно понятнее и выкладывали свои результаты! Каждый должен делать вклад))


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
 {Заполнить массив из 10 элементов случайными числами в интервале [0..100] 
 и отсортировать первую половину по возрастанию, а вторую – по убыванию.}
 program n5str63;
 Var A:Array[1..10] of Integer;
 Var i,j,c: Integer;
 begin
 For i:=1 to 10 do begin
 A[i]:= Random(0,100);
 Write(A[i]:5); { ':' - устанавливает ширину вывода значения массива}
 end;
 For i:=1 to 4 do begin {граница не должна залезать в другую половину}
 For j:=4 downto i do {используем метод пузырька}
 If A[j]>A[j+1] then begin
 C:= A[j];
 A[j]:=A[j+1];
 A[j+1]:=c;
 end;
 end;
 For i:=5 to 9 do begin
 For j:=9 downto i do
 If A[j]<A[j+1] then begin
 C:=A[j];
 A[j]:=A[j+1];
 A[j+1]:=c;
 end;
 end;
 writeln; {пустая печать, чтобы отсортированный массив вывелся на новой строчке}
 For i:=1 to 10 do write(A[i]:5);
 end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2016, 07:58
Ответы с готовыми решениями:

Заполнить массив из 100 элементов случайными целыми числами в диапазоне от 1 до 100
Мне очень нужна помощь, надеюсь откликнетесь... помогите написать, пожалуйста! 1. Заполнить массив из 100 элементов случайными целыми...

Заполнить массив 3х3 элементов случайными числами в диапазоне от 1 до 50. Отсортировать элементы в обратном порядке
1)Заполнить массив 3х3 элементов случайными числами в диапазоне от 1 до 50. Отсортировать элементы в обратном порядке. 2) Заполнить...

объявить массив из 100 чисел, заполнить их случайными числами. вывести на экран по 10 элементов в строке.
объявить массив из 100 чисел, заполнить их случайными числами. вывести на экран по 10 элементов в строке. Помогите, вывести эти элементы

8
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
16.02.2016, 08:14
мой скромный вклад:
Pascal
1
2
3
4
5
6
7
8
9
const n=10;
begin
  randomize; //инициализируем ДСЧ
  var a:=Range(0,n-1).Select(i->random(0,100)).ToArray(); //заполняем массив
  a.Println; //печатаем
  a:=Range(0,n div 2-1).Select(i->a[i]).OrderBy(i->i).ToArray()+ //сортируем первую половину по возрастанию
     Range(n div 2,n-1).Select(i->a[i]).OrderByDescending(i->i).ToArray();//сортируем вторую половину по убыванию
  a.Println;  //печатаем
end.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
16.02.2016, 09:37
Цитата Сообщение от Кудинович Посмотреть сообщение
Каждый должен делать вклад))
Можно и мне сделать «вклад» в вашу программу…

Сама формулировка задания несколько некорректна:
Если в первой половине массива, скажем, будет два одинаковых числа, то её уже нельзя будет отсортировать «по возрастанию»…

Кудинович, если вы выкладываете программу в разделе PABC.NET, то ожидается, что она будет хоть как-то использовать возможности PABC.NET! А у вас кроме Random(minValue, maxValue) ни чего из PABC.NET.

Поэтому осмелюсь внести несколько корректировок в вашу программу:
1) нельзя изменив размер массива тут же заставить работать программу правильно;
2) нет Randomize;
3) для вывода массива можно воспользоваться методом Print или Println, чтобы не делать вот такие ляпы:
Цитата Сообщение от Кудинович Посмотреть сообщение
writeln; {пустая печать, чтобы отсортированный массив вывелся на новой строчке}
4) для обмена двух элементов массива можно воспользоваться Swap;
5) для того, чтобы два раза не писать метод сортировки, можно вынести его в подпрограмму;
Ну и, пожалуй, самое главное: Всегда нужно стараться выводить как можно больше сообщений пользователю, чтобы у него возникало как можно меньше вопросов!

В итоге ваша программа приобретает вот такой цивилизованный вид:
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
const
  Size = 10; // Число обязательно чётное, чтобы можно было разделить массив попалам
  
var
  A: array [1..Size] of Integer;
  
procedure Sort(Start, Stop : Integer; Increase : Boolean);
var 
  i, j: Integer;
begin
  for i := Start to Stop-1 do
    for j := Stop-1 downto i do
      if (A[j] > A[j+1]) = Increase then
        Swap(A[j], A[j+1]);
end;
 
begin
  Randomize;
  for var i := 1 to Size do 
    A[i] := Random(0, 100);
  
  WriteLn('Сформирован массив случайных чисел из ' + Size + ' элементов:');
  A.Println;
 
  Sort(1, Size div 2, True);
  Sort(Size div 2 + 1, Size, False);
      
  WriteLn('Первая половина массива отсортирована по неубыванию, а вторая - по невозрастанию:');
  A.Println;
end.
Программа не намного усложнилась, но в то же время и упростилась для понимания.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33193 / 21489 / 8233
Регистрация: 22.10.2011
Сообщений: 36,876
Записей в блоге: 12
16.02.2016, 10:43
Вообще-то PABC.NET (а точнее - фреймворк) уже содержит все необходимое для того, чтобы сделать подобную сортировку в 3 строки кода:
Pascal
1
2
3
  System.Array.Sort(a, 0, a.Length div 2); // сортируем первую половину массива по возрастанию
  System.Array.Sort(a, a.Length div 2, a.Length div 2); // сортируем вторую половину по возрастанию
  System.Array.Reverse(a, a.Length div 2, a.Length div 2); // инвертируем порядок элементов во второй половине массива
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
16.02.2016, 11:04
volvo, к сожалению, но это только для динамических массивов…
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33193 / 21489 / 8233
Регистрация: 22.10.2011
Сообщений: 36,876
Записей в блоге: 12
16.02.2016, 11:32
Ну и где сейчас используются НЕдинамические массивы (кроме как в методичках закостеневших преподавателей, выучивших Турбо-Паскаль в 80-е, и знать больше ничего не хотящих)? Использовались бы - был бы в .NET-е метод их сортировки, не сомневайся, спрос рождает предложение.
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
16.02.2016, 11:45
Цитата Сообщение от volvo Посмотреть сообщение
System.Array.Sort(a, a.Length div 2, a.Length div 2); // сортируем вторую половину по возрастанию
для нечетной длины массива - последний элемент будет упущен.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33193 / 21489 / 8233
Регистрация: 22.10.2011
Сообщений: 36,876
Записей в блоге: 12
16.02.2016, 11:55
Цитата Сообщение от Joy Посмотреть сообщение
для нечетной длины массива
Ну, разумеется, что нужна четная длина массива. Я уж не говорю, что твой код вообще не компилируется. Это, значит, нормально, а то, что я не написал программу "под ключ" - надо обязательно высказать?
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
16.02.2016, 14:25
Цитата Сообщение от volvo Посмотреть сообщение
Я уж не говорю, что твой код вообще не компилируется.
да, в WDE - ошибка, на компе нормально версия 3.0 среды.

Добавлено через 19 минут
на WDE так заработало:
Pascal
1
2
3
4
5
6
7
8
9
const n=10;
begin
  randomize; //инициализируем ДСЧ
  var a:=Range(0,n-1).Select(i->random(0,100)).ToArray(); //заполняем массив
  a.Println; //печатаем
  a:=Range(0,n div 2-1).Select(i->a[i]).OrderBy(i->i).
      Concat(Range(n div 2,n-1).Select(i->a[i]).OrderByDescending(i->i)).ToArray();
  a.Println;  //печатаем
end.
Добавлено через 4 минуты
Цитата Сообщение от volvo Посмотреть сообщение
а то, что я не написал программу "под ключ" - надо обязательно высказать?
- это было не высказывание, а примечание, т.к. если человек обращается на форум за помощью, а в данном случае обсуждение возможностей реализации средствами среды программирования, целесообразно предупредить о том, что данный код работает не во всех условиях. Это позволит ограничить последователей "копипаста" от трудно обнаруживаемых ошибок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.02.2016, 14:25
Помогаю со студенческими работами здесь

Заполнить массив случайными числами в заданном интервале
Заполните массив C случайными числами в интервале от 5 до 15 и вывести его на экран

Дан двумерный массив A[5,6]. Заполнить его случайными числами в промежутке от 30 до 100, сравнить суммы элементов столбцов, вывести сумму наибольшего
Дан двумерный массив A. Заполнить его случайными числами в промежутке от 30 до 100, сравнить суммы элементов столбцов, вывести сумму...

Массив В(15) заполнить целыми случайными числами в диапазоне от 1 до 100
Массив В(15) заполнить целыми случайными числами в диапазоне от 1 до 100. Построить строку маску М(15) таким образом, что М(I)=1, если...

Заполнить массив из 1000 элементов случайными числами
Заполнить массив из 1000 элементов случайными числами. Найти мат ожидание и дисперсию

Заполнить массив из 26 целых элементов случайными числами в диапазоне от 0 до 70
Заполнить массив из 26 целых элементов случайными числами в диапазоне от 0 до 70. Вывести на экран номера элементов массива в столбик....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru