Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 848

/ вопрос закрыт /

Доброго времени суток, уважаемые эксперты!
Прошу помочь мне со следующей задачей:
В одномерном массиве, состоящем из п вещественных элементов, вычислить:
1. Максимальный элемент массива.
2. Сумму элементов массива, расположенных до последнего положительного элемента.
Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а b]. Освободившиеся в конце массива элементы заполнить нулями.

skipper102 Вопрос закрыт (ответы не принимаются, мини-форум закрыт)

Вопрос задал: skipper102 (статус: Посетитель)
Вопрос отправлен: 21 декабря 2010, 20:22
Состояние вопроса: закрыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 22 декабря 2010, 14:14; участников в обсуждении: 4.

21 декабря 2010, 23:18: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Лабораторный практикум » Delphi модератором Ерёмин А.А.

AlexMPEI

AlexMPEI (статус: 1-ый класс), 21 декабря 2010, 23:39 [#1]:

1) переменные и массив опишешь сам. массив real'ов mas размера masCount.

current: real;
i: integer;

current := mas[0];
for i:=1 to masCount-1 do
if (current < mas[i]) then
current := mas[i];

в итоге current - максимальный элемент массива.
min@y™

min@y™ (статус: Доктор наук), 22 декабря 2010, 08:56 [#2]:

Цитата (skipper102):

Прошу помочь мне со следующей задачей

Так помочь или написаль лабу полностью?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
skipper102

skipper102 (статус: Посетитель), 22 декабря 2010, 11:00 [#3]:

полностью не надо. Обьясни как сжать массив и элементы массива удалять, остальное сам дошарю
min@y™

min@y™ (статус: Доктор наук), 22 декабря 2010, 11:13 [#4]:

Цитата (skipper102):

полностью не надо. Обьясни как сжать массив и элементы массива удалять, остальное сам дошарю

Дык объяснять всё это:
а) дольше, чем писать саму программу;
б) работа твоего препода (ему за это бабки плотють).
Элементы массива удалять не получится, ибо массив - это непрерывный участок памяти. Конечно, можно воспользоваться массивом указателей, но это вы ещё не проходили. :) Поэтому элементы массива надо перемещать. Вообще, мои педагогические способности стремятся к нулю, так что мне проще готовую прогу написать.

З.Ы. Сессия, да?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
mirt.steelwater

mirt.steelwater (статус: Посетитель), 22 декабря 2010, 13:05 [#5]:

самый простой выход здесь использовать не массив а список TList или потомок, в котором есть метод Remove
если список использовать нельзя, то тебе прийдется использовать два массива:
обходишь первый массив - если элемент не нулевой, то добавляешь его во второй массив. перед тем как это делать тебе нужно пройтись по первому массиву один раз и найти количество ненулевых элементов, а затем установить размер второго массива.
var
    my_array  : array of Integer;
    new_array : array of Integer;
    my_count  : Byte;
    new_count : Byte;
    I, J      : Integer;
begin
    { тут ты заполняешь первый массив как тебе захочется
      SetLength (my_array,my_count);
      for I := 0 to my_count do
          my_array := random (255) 
    }
    new_count := 0;
    for I := 0 to High (my_array) do
        if ( my_array [I] <> 0 ) then
            Inc (new_count);
    SetLength (new_array, new_count);
    J := 0;
    for I := 0 to High (my_array) do
        if ( my_array [I] <> 0 ) then
        begin
            new_array [J] := my_array [I];
            Inc (J);
        end;
end;
Ⓐ свобода сопротивление солидарность
min@y™

min@y™ (статус: Доктор наук), 22 декабря 2010, 13:20 [#6]:

2mirt.steelwater: Тыкни ссылку "Преобразовать в ответ на вопрос".
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
mirt.steelwater

mirt.steelwater (статус: Посетитель), 22 декабря 2010, 13:46 [#7]:

2min@y™ не вижу(
Ⓐ свобода сопротивление солидарность
min@y™

min@y™ (статус: Доктор наук), 22 декабря 2010, 14:14 [#8]:

Цитата (mirt.steelwater):

не вижу(

Странно... А ты зарегитсрировался как эксперт?
Возможно, у тебя ещё не хватает полномочий.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

28 декабря 2010, 10:16: Вопрос закрыт (решение принял автор вопроса — skipper102): Спасибо за ответы. Задача решена

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.03 сек.