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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2011, 14:56   #1
Vladimir Ryabov
 
Регистрация: 30.10.2011
Сообщений: 7
По умолчанию Задачи на обработку массивов (Delphi)

Помогите Горю на зачетной недели!!напишите пожалуйста программный код В Дельфине!!
1.Задан целочисленный одномерный массив A из N элементов. Найти номер последнего максимального значения среди нечетных (по значению) элементов, расположенных до последнего четного (по значению) элемента. Если нет четных элементов, искать до конца массива. (Подсказка: «Сначала найти первый нечетный и последний четный, а затем уже искать максимум, или вывести сообщение о причинах невозможности поиска.»)
2.Задан массив С1 С2...Сn . Нужно изменить все столбцы матрица в которой равен нулю элемент главной диагонали : i-й элемент такого столбца (i=1.2...n) увеличиваеться на Ci. Найти так же сумму главных элементов диагонали.
буду благодарен))
Vladimir Ryabov вне форума Ответить с цитированием
Старый 30.10.2011, 15:15   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

1) Подсказку лесом.
"Если нет четных элементов, искать до конца массива." - то есть, при этом ответом будет номер последнего из наибольших элементов? А что делать, если все элементы чётные?
Тогда идём по массиву от начала, в уме (читай - в переменных) держим значение самого большого нечётного числа ("лидера") до сих пор и два номера "релиз-кандидат" (то, что будет ответом), "бета-кандидат" (номер самого большого найденного пока что нечётного числа). Изначально присваиваем кандидатам нули.
Если очередной элемент - чётный, то в "релиз-кандидат" заносится "бета-кандидат" (понятно, почему?).
Если очередной элемент - нечётный, сравниваем его с "лидером". Если он больше "лидера", либо "лидер" равен нулю (т.е. это первое нечётное число), заносим само число в "лидера", а его номер - в "бета-кандидата".
Когда массив кончится, у нас будет либо ненулевой "релиз-кандидат" (ура, требуемое число найдено), либо нулевой "релиз", ненулевой "бета" (первое нечётное число встретилось после последнего чётного, из задания непонятно - то ли выдать "бету", то ли развести руками), либо оба кандидата нули, нечётных чисел нихт.

2) То есть, пишется функция, в которую передали массив длины n и матрицу nxn, причём как минимум матрицу по ссылке?
Цикл по элементам главной диагонали (matrix[i,i]). Прибавить элемент к сумме, потом если элемент не ноль, то и фиг с ним; иначе вложенный цикл по всем строкам, к matrix[i,j] прибавляем C[j]. Из задания непонятно, нужна сумма элементов главной диагонали до или после изменения, во втором случае нужно будет прибавить к сумме C[i].
Abstraction вне форума Ответить с цитированием
Старый 30.10.2011, 15:20   #3
Vladimir Ryabov
 
Регистрация: 30.10.2011
Сообщений: 7
По умолчанию

мне эта подсказка вообще ни как не поможет я вообще не знаю паскаля по этому и горю на зачетной недели,((((мне нужна тупо программа((сам ни чего не напишу,беда в школе не было информатики
Vladimir Ryabov вне форума Ответить с цитированием
Старый 30.10.2011, 15:39   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Если сами ничего не напишете, то и за Вас вряд ли кто-нибудь напишет. Тем более, что так списанный код на проверке "валится" элементарно.

Попробуем с основ.
Код:
function IterateArray(arr : array[1..20] of Integer): Integer
var
    sum, index : Integer;
begin
    {Присвоить sum 0}
    {Устроить цикл, в котором index последовательно принимает значения от 1 до 20}
        {Внутри цикла, присвоить sum сумму уже накопленного значения sum и index элемента arr}
    {Вернуть из функции значение sum}
end;
Это заготовка функции сложения всех элементов массива. Попробуйте под каждым комментарием написать код, как получится.
Abstraction вне форума Ответить с цитированием
Старый 30.10.2011, 15:42   #5
Vladimir Ryabov
 
Регистрация: 30.10.2011
Сообщений: 7
По умолчанию

program 1;
uses crt;
var A:array[1..100] of integer;
n,i,j,imin: byte;
buf:integer;
begin
write('Размер массива от 1 до 100 n=');
readln(n);
//ручной ввод массива
writeLn('Вводим элементы массива A:');
for I:=1 TO N do
begin
write('A[',i,']=');
readLn (A[i]);
end;
вот что я смог написать максимум сам к первому заданию и все(((болт
Vladimir Ryabov вне форума Ответить с цитированием
Старый 30.10.2011, 15:52   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Vladimir Ryabov, что, вполне приличный ввод массива. Тогда можно от основ уйти дальше - напишите функцию, которая бы
а) принимала на вход массив целых чисел;
б) возвращала бы индекс;
в) внутри себя заводила бы переменные "лидер", "релиз-кандидат", "бета-кандидат", описанные выше, а также переменную "индекс массива" для перебора элементов этого самого массива;
г) содержала внутри себя в виде комментариев текст приведённого выше решения, разбитого на фразы (по одной фразе на строку).
Код функции пока писать не надо.
Abstraction вне форума Ответить с цитированием
Старый 30.10.2011, 15:53   #7
Vladimir Ryabov
 
Регистрация: 30.10.2011
Сообщений: 7
По умолчанию

я ни слова почти не понял из того что вы написали
Vladimir Ryabov вне форума Ответить с цитированием
Старый 30.10.2011, 16:00   #8
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Vladimir Ryabov

...
я ни слова почти не понял из того что вы написали

В вашем случае

мне нужна тупо программа

всё до предела упрощается :

тупо оплачиваете работу программиста, тупо получаете готовую программу.
бабло засылать сюда
Rififi вне форума Ответить с цитированием
Старый 30.10.2011, 16:01   #9
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Тогда вернёмся к предыдущему пункту: напишите код под комментариями в теле приведённой функции, который должен делать именно то, что говорится в комментариях. Комментарии не убирать.
Abstraction вне форума Ответить с цитированием
Старый 30.10.2011, 16:16   #10
Vladimir Ryabov
 
Регистрация: 30.10.2011
Сообщений: 7
По умолчанию

function IterateArray(arr : array[1..20] of Integer): Integer
var
sum, index : Integer;
begin
sum:=0
buf:integer;
WriteLn
for i:=1 to 20 do;
var
arr: array[1..20] of real;
n: integer;
sum, op: real;
i: integer;

{Вернуть из функции значение sum}
end;
Vladimir Ryabov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задачи на обработку массивов bighunter Паскаль, Turbo Pascal, PascalABC.NET 2 09.10.2011 19:58
3 задачи: на простые числа, на матрицу и на обработку строки. Дорешать. Паскаль gena1128 Помощь студентам 6 02.06.2011 18:21
Задачи на обработку матриц! davka Помощь студентам 1 24.05.2011 07:40
Помогите пожалуйста составить программу на обработку массивов vvioleta Помощь студентам 1 14.11.2009 10:39
задачи: на двумерные массивы,обработку строк,обработку текстовых файлов. (Паскаль) Yaro Помощь студентам 2 12.11.2009 12:55