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

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

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

Автор: Вацура 19.12.2006 19:17

Здравствуйте.
21 мне ехать на олимпеаду по информатике, а я практически не готов. Учитель заболел, так что помочь можете только вы.
Изучать паскаль начал совсем недано, с массивами и с графикой вообще не знаком blink.gif , может кто может дать ссылки на статьи о массивах?
Вот две задачи из прошлой олимпеады, как решать даже не представляю. Помогите разобраться.

C помощью одного из языков программирования приближённо решите графическим способом уравнение:
x^3-cosx=0. Решите это же уравнение с использованием компьютерной модели в электронной таблице.


Разработайте программу, в которой реализуеться сортировка числового массива по убыванию с использованием общей процедуры поиска максимального элемента. Элементы массива задаються ЭВМ случайным образом.

Заранее благодарен.

Автор: Ozzя 19.12.2006 19:47

Такие задачи решались многократно. Используйте поиск.
Что за олимпиада такая? С элементарными заданиями?

Автор: Вацура 19.12.2006 20:29

Цитата
Что за олимпиада такая? С элементарными заданиями?


Школьная районая олимпиада.

Автор: Michael_Rybak 19.12.2006 21:04

Ну напиши программу которая увеличенный график выводит. Ты знаешь что такое "решить графически"?

Автор: Вацура 19.12.2006 21:28

Цитата
Ну напиши программу которая увеличенный график выводит. Ты знаешь что такое "решить графически"?


Я знаю что такое решить графически, на бумаге я всё сделал, но как это сделать в паскале?
Я незнаю даже как нарисовать прямую, а строить графики наверное сложнее.
Покажи как, я постараюсь понять.
Для второй задачи я что то нарыл, щяс буду пробовать решать.

Автор: Michael_Rybak 19.12.2006 21:44

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

Автор: Вацура 20.12.2006 1:34

Ко второй задачи вот только что мог сделать:


uses crt;
type mas=array[1..20] of real;
var a:mas; i,n:integer; amax:real;
begin clrscr;
write('‚ўҐ¤ЁвҐ N:'); readln(n);
for i:=1 to n do
begin
writeln('A[',i,']='); a[i]:=random(50)
end;
amax:=a[1]; ;
for i:=2 to n do
if a[i]>amax then
begin
amax:=a[i];
end;
writeln('…Ј® §­ зҐ­ЁҐ', amax:5:1);
readln;
end.



Как сделать чтобы случайные числа выбиралис случайно от минус и до плюс бесконечности?
Как сделать чтобы у знака равно пасалось а[i]?
И гланое, как сделать чтобы напечатался ряд по убыванию?

Автор: Вацура 20.12.2006 2:13

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

Автор: мисс_граффити 20.12.2006 2:20

понятие бесконечности для компа не определено...
ну, можно так:

a[i]:=random(MaxInt)-(MaxInt div 2);

будет достаточно большой разброс

первая - воспользуйся поиском.
почему мы должны это делать за тебя?

Автор: Вацура 20.12.2006 2:27

Цитата(мисс_граффити @ 19.12.2006 22:20) *

первая - воспользуйся поиском.
почему мы должны это делать за тебя?


спасиб за 2 задачу, хоть одна готова.
Пробовал поиском, но ничего не нашол, надол только разложение синуса в ряд.
В FAQ нашол только как строить графики 3 и 4 порядка, но что то ничего для решения задачи... уж извините, наверное плохо умею пользоваться поиском wacko.gif

Автор: мисс_граффити 20.12.2006 2:36

и чем тебе не нравится то, что нашел?
построил графики y=x^3
y=cos(x)
это и будет графическим решением

Автор: Lapp 20.12.2006 4:57

Цитата(мисс_граффити @ 19.12.2006 23:20) *

понятие бесконечности для компа не определено...
ну, можно так:
a[i]:=random(MaxInt)-(MaxInt div 2);


Понятие бесконечности в этом смысле не определено не только для компа. Дай мне выборку из десятка действительно случайных чисел в диапазоне от -00 до +00 - и я гарантирую тебе Нобеля.. smile.gif

мисс_граффити, человек просил числа типа real.
a[i]:=(Random - 0.5)*2*R;
Это даст действительные числа от -R до +R.

Автор: Bokul 20.12.2006 5:23

Цитата
Дай мне выборку из десятка действительно случайных чисел в диапазоне от -00 до +00 - и я гарантирую тебе Нобеля..

7, 12, 10456, 134573, 54792858306857, 1828348290345625412, 2134234, 83535, 895, 3834747.
Где мой ШНобель? smile.gif

Автор: мисс_граффити 20.12.2006 6:05

Цитата(Bokul @ 20.12.2006 1:23) *

7, 12, 10456, 134573, 54792858306857, 1828348290345625412, 2134234, 83535, 895, 3834747.
Где мой ШНобель? smile.gif

диапазон: [7;182834829034562541] ;)

Автор: Bokul 20.12.2006 6:14

Цитата
диапазон: [7;182834829034562541] ;)

А так?
-00,55535, 32423, ,3345, 00, 33424545, 245463653, 3435453, 4656, 345467 smile.gif

Автор: Lapp 20.12.2006 7:24

Цитата(Bokul @ 20.12.2006 3:14) *

А так?
-00,55535, 32423, ,3345, 00, 33424545, 245463653, 3435453, 4656, 345467 smile.gif

smile.gif
да как бы ни было..
Любой диапазон бесконечно мал по сравнению с бесконечностью.
Давай, для примера, возьмем размер нашей Галактики - типа 100 000 000 000 000 000 000 м. Ну и окажется, что твоя выборка пляшет где-то вблизи нашего Солнца.. Еще скажи спасибо, что я взял расстояние в метрах, а не в мм или в ангстремах.. smile.gif. А также не взял размер всей Вселенной (что тоже не предел, по крайней мере для чисел smile.gif))))

Автор: Вацура 20.12.2006 14:35

Цитата(мисс_граффити @ 19.12.2006 22:36) *

и чем тебе не нравится то, что нашел?
построил графики y=x^3
y=cos(x)
это и будет графическим решением


Как на основе этого построить график y=x^3? или =cosx?

procedure semi_cubic(t: double;
var x, y: double); far;
begin
x := sqr(t);
y := a * sqr(t) * t;
end;
{ Вызов: }
draw_curve(-10, 10, step, semi_cubic);


Я незнаю. Если поподробней объясните что это такое
Цитата
draw_curve(-10, 10, step, semi_cubic);

и вот это
procedure semi_cubic(t: double;
var x, y: double); far;
то возможно пойму rolleyes.gif я непойму откуда берёться t и a...

Автор: мисс_граффити 20.12.2006 21:07

это что-то, заданное параметрически, по-моему.
вот здесь посмотри лучше:
http://forum.pascal.net.ru/index.php?showtopic=2729&hl=%EF%EE%F1%F2%F0%EE%E5%ED%E8%E5+%E3%F0%E0%F4%E8%EA%E0