Помощь - Поиск - Пользователи - Календарь
Полная версия: Подготовка к олимпеаде
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Вацура
Здравствуйте.
21 мне ехать на олимпеаду по информатике, а я практически не готов. Учитель заболел, так что помочь можете только вы.
Изучать паскаль начал совсем недано, с массивами и с графикой вообще не знаком blink.gif , может кто может дать ссылки на статьи о массивах?
Вот две задачи из прошлой олимпеады, как решать даже не представляю. Помогите разобраться.

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


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

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


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


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

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]?
И гланое, как сделать чтобы напечатался ряд по убыванию?
Вацура
Со второй задачей почти разобрался, немогу только сделать, чтобы числа выбирались любые.
Помогите пожалуйста решить первую задачу! Или дайте ссылку на похожее задание.
мисс_граффити
понятие бесконечности для компа не определено...
ну, можно так:
a[i]:=random(MaxInt)-(MaxInt div 2);

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

первая - воспользуйся поиском.
почему мы должны это делать за тебя?
Вацура
Цитата(мисс_граффити @ 19.12.2006 22:20) *

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


спасиб за 2 задачу, хоть одна готова.
Пробовал поиском, но ничего не нашол, надол только разложение синуса в ряд.
В FAQ нашол только как строить графики 3 и 4 порядка, но что то ничего для решения задачи... уж извините, наверное плохо умею пользоваться поиском wacko.gif
мисс_граффити
и чем тебе не нравится то, что нашел?
построил графики y=x^3
y=cos(x)
это и будет графическим решением
Lapp
Цитата(мисс_граффити @ 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
Цитата
Дай мне выборку из десятка действительно случайных чисел в диапазоне от -00 до +00 - и я гарантирую тебе Нобеля..

7, 12, 10456, 134573, 54792858306857, 1828348290345625412, 2134234, 83535, 895, 3834747.
Где мой ШНобель? smile.gif
мисс_граффити
Цитата(Bokul @ 20.12.2006 1:23) *

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

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

А так?
-00,55535, 32423, ,3345, 00, 33424545, 245463653, 3435453, 4656, 345467 smile.gif
Lapp
Цитата(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))))
Вацура
Цитата(мисс_граффити @ 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...
мисс_граффити
это что-то, заданное параметрически, по-моему.
вот здесь посмотри лучше:
Построение любого графика
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.