Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2017, 19:30   #1
ParkerVans
Пользователь
 
Регистрация: 22.10.2017
Сообщений: 25
По умолчанию Проверьте решение задачи: Дан массив. Получить новый массив, выбросив из исходного массива все члены со значением max(а1 ,а2 , ... , аn). Определить число элементов нового массива.

Дан массив {ai} , i= 1,2, ..., n. Получить новый массив {bj} , выбросив из исходного массива все члены со значением max(а1 ,а2 , ... , аn). Определить число элементов нового массива .
Здравствуйте! Проверьте пожалуйста решение задачи.
Код:
Program massiv;
Var  n, i, j, Max : integer;   
A, B : array [1..100] of integer;
Begin
   write('Введите количество элементов массива  N = ');
   read(n);
   write('Введите ' , n, ' целых чисел - элементов массива  A:');
For  i := 1  to  n  do  
read(A[i]);//ввод элементов массива
j := 0;//номер очередного элемента в новом массиве
Max := A[1];// номер максимального элемента
For  i := 2  to  n  do  
If   A[i] > Max  then   
Max := A[i];
writeln('Новый массив В:');
For  i := 1  to  n  do  
If   A[i] <> Max  then begin //номер элемента массива не равен номеру максимальному элементу массива
j := j + 1; //увеличиваем номер очередного элемента в новом массиве 
B[j] := A[i];//номер последнего элемента массива b[j] будет равен количеству элементов в новом массиве
writeln(B[j], '  ')//вывод нового элемента массива    
end;
writeln('В новом массиве  ', j, '  элементов');
end.

Последний раз редактировалось Вадим Мошев; 22.10.2017 в 20:03.
ParkerVans вне форума Ответить с цитированием
Старый 22.10.2017, 20:14   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от ParkerVans Посмотреть сообщение
Дан массив {ai} , i= 1,2, ..., n. Получить новый массив {bj} , выбросив из исходного массива все члены со значением max(а1 ,а2 , ... , аn).
Мне одному кажется странным такое условие? Если из массива удалить все максимумы, то он останется пустым.
Вадим Мошев вне форума Ответить с цитированием
Старый 22.10.2017, 20:59   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,770
По умолчанию

Почему пустым? Если не все элементы одинаковы, то выкинется только несколько равных максимуму.
p51x вне форума Ответить с цитированием
Старый 22.10.2017, 22:54   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Понял. Я рассуждал так:
1. Если массив непустой, то Найти максимум в массиве, иначе выход
2. Удалить этот элемент
3. Перейти к пункту 1.

Очевидно, что при выполнении такого алгоритма исходный массив опустошится.
Вадим Мошев вне форума Ответить с цитированием
Старый 23.10.2017, 09:32   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1. Если массив непустой, то Найти максимум в массиве, иначе выход
2. Удалить все элементы массива, равные максимуму
3. уменьшить размер массива на количество удалённых элементов
4. выдать новый массив.
5. конец

но, формально говоря, если в задаче нужно только
Цитата:
Сообщение от ParkerVans Посмотреть сообщение
Определить число элементов нового массива
то и удалять из массива ничего не надо, нужно найти максимум и подсчитать, сколько элементов массива равно максимуму (это легко сделать за один проход по массиву, кстати). После чего выдать на экран разницу между начальным размером массива и подсчитанным количеством.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.10.2017, 19:03   #6
ParkerVans
Пользователь
 
Регистрация: 22.10.2017
Сообщений: 25
По умолчанию

Всем Спасибо!
ParkerVans вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив m*n. Составить массив из наименьших элементов каждой строки данного массива. Найти сумму наибольшего и наименьшего элемента массива. Miriam_ Паскаль, Turbo Pascal, PascalABC.NET 2 23.04.2017 11:18
Паскаль. Построить новый массив, элементы которого образуются как суммы последовательных пар элементов исходного массива. igor617 Помощь студентам 4 25.12.2016 08:32
[Pascal]: Дан массив. Построить новый массив, элементы которого - квадраты положительных элементов исходного массива и кубы отрицательных. newsnew Паскаль, Turbo Pascal, PascalABC.NET 1 21.12.2016 04:03
Дан одномерный массив из 30 элементов. Сформировать второй массив, в котором сначала идут все элементы первого массива, кратные 5, Olzhakesh C# (си шарп) 1 29.04.2014 23:49
Проверка написанного кода для массива: получить новую последовательность, выбросив все значения, равные max Konsyello Общие вопросы C/C++ 1 20.10.2013 09:25