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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2009, 10:26   #1
Ananim-Pbl6ak
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 77
По умолчанию массивы. удаление элементов

Из последовательности удалить все элементы, имеющие целую часть, кратную одному из двух наперед заданных чисел.


вот пример:

Program Delete;
{Удаление четных чисел из массива целых}
Const
Dim = 20;
Type
TMassiv = Array[1..Dim] of Integer;
Var
Massiv : TMassiv;
J, I, Num, DelQuant : Byte;
Begin
Writeln ('Введите не более чем ',Dim,' целых чисел');
Writeln ('Конец ввода по ENTER');
Num := 0; {реальное число элементов в массиве}
While not EOLN do
Begin
Inc (Num);
Read (Massiv[Num]);
End;
Readln;
I := 0; {позиция наблюдателя на I-м элементе массива}
DelQuant := 0; {количество удаленных элементов}

Repeat
Inc (I); {сдвинуть наблюдателя вправо - перейти}
{к проверке следующего числа}
If Not Odd(Massiv[I]) then
begin {I-ое число четное, удалить его из массива}
Inc(DelQuant); {увеличить количество удаленных чи-сел}
Dec (Num); {уменьшить количество элементов в массиве}
For J := I to Num do
Massiv[J] := Massiv[J+1]; {сдвиг влево}
Dec (I) {переместить наблюдателя влево}
end;
Until I = Num; {повторять, пока не будут проверены все числа}
If DelQuant = 0
then {удалений не было}
Writeln('Массив не содержит четных элементов')
else {удаления были}
If Num <> 0
then
begin
Writeln ('Удалено ', DelQuant,' четных чисел');
Writeln ('Преобразованный массив');
For I := 1 to Num do Write (Massiv[I],' ');
Writeln
end
else {все числа удалены}
Writeln ('Массив пустой')
End.
Ananim-Pbl6ak вне форума Ответить с цитированием
Старый 25.05.2009, 12:35   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Ananim-Pbl6ak
вот пример:
Ну раз даже пример есть, то в чем проблема?
Для взятия целой части - trunc, для взятия остатка - mod.
А для кода - тег CODE.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.05.2009, 13:10   #3
Ananim-Pbl6ak
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 77
По умолчанию

а поподробней как это будет выглядеть
Ananim-Pbl6ak вне форума Ответить с цитированием
Старый 25.05.2009, 13:13   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Наперед заданные числа - A и B.
Есть массив - mas.
В цикле перебираем элементы:
Код:
Если (trunc(mas[i]) mod A = 0) или (trunc(mas[i] mod B = 0) то
 удаляем этот элемент из массива.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.05.2009, 13:36   #5
Ananim-Pbl6ak
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 77
По умолчанию

Program Delete;
{Удаление четных чисел из массива целых}
Const
Dim = 20;
Type
TMassiv = Array[1..Dim] of Integer;
Var
Massiv : TMassiv;
A, B, J, I, Num, DelQuant : Byte;
Begin
Writeln ('Введите не более чем ',Dim,' целых чисел');
Writeln ('Конец ввода по ENTER');
Num := 0; {реальное число элементов в массиве}
While not EOLN do
Begin
Inc (Num);
Read (Massiv[Num]);
End;
Readln;
I := 0; {позиция наблюдателя на I-м элементе массива}
DelQuant := 0; {количество удаленных элементов}

Repeat
Inc (I); {сдвинуть наблюдателя вправо - перейти}
{к проверке следующего числа}
If (trunc(mas[i]) mod A = 0) or (trunc(mas[i] mod B = 0) then
begin {}
Inc(DelQuant); {увеличить количество удаленных чи-сел}
Dec (Num); {уменьшить количество элементов в массиве}
For J := I to Num do
Massiv[J] := Massiv[J+1]; {сдвиг влево}
Dec (I) {переместить наблюдателя влево}
end;
Until I = Num; {повторять, пока не будут проверены все числа}
If DelQuant = 0
then {удалений не было}
Writeln('Массив не содержит элементов имеющих целую часть, кратную одному из двух чисел')
else {удаления были}
If Num <> 0
then
begin
Writeln ('Удалено ', DelQuant,' чисел имеющих целую часть, кратную одному из двух заданых чисел');
Writeln ('Преобразованный массив');
For I := 1 to Num do Write (Massiv[i],' ');
Writeln
end
else {все числа удалены}
Writeln ('Массив пустой')
End.



вот так?
Ananim-Pbl6ak вне форума Ответить с цитированием
Старый 25.05.2009, 13:41   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Ananim-Pbl6ak
вот так?
Попытался скомпилировать - выдает ошибки (неизвестные идентификаторы). Значит, не так.
Копи-паст - далеко не всегда хорошо.

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

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.05.2009, 13:50   #7
Ananim-Pbl6ak
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 77
По умолчанию

так кто что еще подскажет

Последний раз редактировалось Ananim-Pbl6ak; 25.05.2009 в 13:58.
Ananim-Pbl6ak вне форума Ответить с цитированием
Старый 25.05.2009, 13:58   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Ananim-Pbl6ak
и какой код ставить
Ну а вы посмотрите на код вашего примера. Потом на мой пример. И измените названия так, чтобы подходило. Еще ввод A и B нужно будет добавить.
Логически подумайте.

Или, в конце концов, почитайте текст ошибок, которые вам выдает компилятор.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.05.2009, 09:54   #9
Ananim-Pbl6ak
Пользователь
 
Регистрация: 28.10.2008
Сообщений: 77
По умолчанию

Код:
 Program Delete;
{}
Const
Dim = 20;
Type
TMassiv = Array[1..Dim] of Integer;
Var
Massiv : TMassiv;
A, B, J, I, Num, DelQuant : Byte;
Begin
Writeln('Введите два делителя');
Readln(A, B);
Writeln ('Введите не более чем ',Dim,' целых чисел');
Writeln ('Конец ввода по ENTER');
Num := 0; {реальное число элементов в массиве}
While not EOLN do
Begin
Inc (Num);
Read (Massiv[Num]);
End;
Readln;
I := 0; {позиция наблюдателя на I-м элементе массива}
DelQuant := 0; {количество удаленных элементов}

Repeat
Inc (I); {сдвинуть наблюдателя вправо - перейти}
{к проверке следующего числа}
If (trunc(mas[i]) mod A = 0) or (trunc(mas[i] mod B = 0) then
begin {}
Inc(DelQuant); {увеличить количество удаленных чи-сел}
Dec (Num); {уменьшить количество элементов в массиве}
For J := I to Num do 
Massiv[J] := Massiv[J+1]; {сдвиг влево}
Dec (I) {переместить наблюдателя влево}
end;
Until I = Num; {повторять, пока не будут проверены все числа}
If DelQuant = 0 
then {удалений не было}
Writeln('Массив не содержит элементов имеющих целую часть, кратную одному из двух чисел')
else {удаления были}
If Num <> 0 
then
begin
Writeln ('Удалено ', DelQuant,' чисел имеющих целую часть, кратную одному из двух заданых чисел');
Writeln ('Преобразованный массив');
For I := 1 to Num do Write (Massiv[i],' '); 
Writeln
end
else {все числа удалены}
Writeln ('Массив пустой')
End.
правильно?
Ananim-Pbl6ak вне форума Ответить с цитированием
Старый 26.05.2009, 11:52   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
правильно?
Неизвестный идентификатор mas. Что и понятно. У вас-то Massiv.
Вы меня не слышите. Я сказал: не нужно копипастить не глядя.

Код:
If (trunc(massiv[i]) mod A = 0) or (trunc(massiv[i]) mod B = 0) then
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление элементов из списка Wi1D Помощь студентам 0 18.05.2009 00:23
Динамический список. Поиск и удаление элементов. Paulo Помощь студентам 2 01.05.2009 12:37
удаление одинаковых элементов из массива sauron99 Общие вопросы Delphi 6 15.04.2009 21:27
Удаление элементов из динамического массива dashulka Общие вопросы Delphi 4 31.10.2008 14:03
Паскаль. Массивы. Замена элементов Stelix Помощь студентам 2 06.11.2007 17:20