Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ и снова массивы

Автор: Лейла 17.05.2009 16:02

прочитала разобранные задачи все равно свои не смогла решить...не могу никак понять как решать...я совсем не бум-бум(((помогите пожалуйста...
1)Дано целое число N и набор из N целых чисел.Написать программу, которая находит номер первого максимального нечетного числа из данного набора.Если нечетные числа в наборе отсутствуют, то вывести 0.(как находить макс.элемент я знаю, сложность в том не знаю как первый нечетный)
2)Дано множество А из N точек с целочисленными координатами x,y. Порядок на координатной плоскости определим следующим образом sad.gifх1,у1)<(х2,у2), если либо х1<х2, либо х1=х2 и у1<у2.Расположить точки данного множества по возрастанию в соответствии с указанным порядком.
3)Написать программу, которая изменяет заданный массив случайных чисел(количество элементов равноN)по правилу продублировать в нем отрицательные элементы.Вывести размер полученного массива и его содержимое.Дополнительный масссив не использовать.

Автор: Lapp 18.05.2009 1:43

Цитата(Лейла @ 17.05.2009 13:02) *
(как находить макс.элемент я знаю, сложность в том не знаю как первый нечетный)
Это очень просто. Делай как обычно, но с проверкой на нечетность. А первый - оно само так получится, если проверять строгим неравенством.
FirstMaxOdd:=0;
for i:=1 to N do if Odd(a[i]) then
if (FirstMaxOdd=0) or (a[FirstMaxOdd]<a[i]) then FirstMaxOdd:=i;
WriteLn(FirstMaxOdd);

Автор: Lapp 18.05.2009 4:22

Цитата(Лейла @ 17.05.2009 13:02) *
2)Дано множество А из N точек с целочисленными координатами x,y. Порядок на координатной плоскости определим следующим образом sad.gifх1,у1)<(х2,у2), если либо х1<х2, либо х1=х2 и у1<у2.Расположить точки данного множества по возрастанию в соответствии с указанным порядком.
Вообще-то - на будущее - одна тема = одна задача (см. правила раздела вверху страницы). Но ладно уж..

смотри, примерно так:
....
type
tPoint = record
x,y: integer
end;
var
p: array[1..n]of tPoint;
b: tPoint;
....
for i:=2 to n do for j:=n downto 2 do if (p[i].x<p[i-1].x) or ((p[i].x=p[i-1].x) and (p[i].y<p[i-1].y)) then begin
b:=p[i];
p[i]:=p[i-1];
p[i-1]:=b
end;

Если что-то неясно - спрашивай.

Автор: Лейла 18.05.2009 17:01

Спасибо огромное, учту на будущее smile.gif а ведь можно и без типа запись обойтись наверно)))

Автор: Lapp 18.05.2009 22:41

можно наверно))))