Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434

Открыть новую тему     Написать ответ в эту тему

buffy



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задачи и Программирование на языке Pascal/Object Pascal (Turbo, Delphi и Free Pascal)

 
Перед тем, как задать вопрос: загрузите "версию для печати" (ссылка справа вверху, над номерами страниц) и попробуйте поискать средствами браузера (ctrl+F). Большинство типовых задач уже решались, причем неоднократно!  
ВНИМАНИЕ!

Текст всех программ обязательно заключайте в теги [code][/code].
Большие тексты (более 15 строк) обязательно прячутся в [more]ВАШ ТЕКСТ и/или Ваш КОД[/more]


Альтернативный компилятор
Free Pascal Compiler (FPC) -- мощный компилятор Паскаля
 - девиз: пишешь единожды, компилируешь где хошь...
 - на 99% совместим по коду с ТР и Object Pascal (Delphi)
 - межплатформенный
 - свободный  
Lazarus -- среда разработки для FPC (аналог среды Delphi7)
 
Файлы
Русская справка
Turbo Pascal 7.1 добавлены некоторые модули из Borland Pascal, русская справка.
Borland Pascal 7.0 Полный (13-дискетный, вкл. исходники), никем не модифицированный  дистрибутив.
 
Учебники:
В.В.Фаронов - Turbo Pascal. Начальный курс
В.В.Фаронов - Turbo Pascal. Наиболее полное руководство
Д.М.Ушаков, Т.А.Юркова - Паскаль для школьников
С.М.Окулов - Основы программирования
С.М.Окулов - 2 главы из школьного учебника по информатике
В.М.Котов - Олимпиадные задачи по информатике с решениями
Никитин - набор исходников для типовых задач
Мансуров - Основы программирования в среде Lazarus - основы паскаля, много примеров, блоксхем, алгоритмов. 2010. 772 с. примеры к книге
Деревенец - Песни о Паскале - паскаль для школьников и студентов-первокурсников
Епанешниковы - Программирование в среде Turbo Pascal
Паскаль для школьников. Подготовка к ЕГЭ (2011)
Фадеев - Паскаль для школы
Потопахин - Turbo Pascal Решение сложных задач (2006)
Полезные линки
библиотека алгоритмов (есть и на Паскале)
библиотека алгоритмов (ещё одна)
библиотека алгоритмов (и ещё одна)
Разбор олимпиадных задач по информатике от Михаила Густокашина
 
Проблема с набором русского текста в консоли/Turbo Pascal
решение проблемы с набором русского текста в консоли Windows  скриптом (командным файлом)
 
Построение блок-схем
FCEditor -- Программа для автоматического построения блок-схем программ из исходного текста на языке Pascal (Delphi)
 - для правильной работы исходный текст должен начинаться со слова program или unit

Всего записей: 4 | Зарегистр. 24-10-2002 | Отправлено: 12:46 11-01-2003 | Исправлено: akaGM, 23:06 21-11-2019
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nata84ru

Цитата:
Вагон угля проще скидать чем эти задачи решить.  

Так может тогда ну её - эту учёбу?
На разгрузке угля всегда можно хорошо заработать.
 
Добавлено:
Nata84ru

Цитата:
да да девушка, могу все делать на компе, но только не решать эти ну не знаю задачки, даже простеньки

Поначалу всегда тяжело.
Но получилось же.
Дальше будет легче.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 20:59 24-11-2011
Nata84ru

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А с вариантом под буквой б то что.
так
program dl;  
  var  
   r:integer;  
   h,v:real;  
 begin  
  writeln ('Введите параметр R');  
  readln (R);  
  v:=50;  
     h:=v/(3.14*r*r);  
    writeln ('объем цилиндра равен ',v,' высота равна ',h);  
     readln;  
 end.

Всего записей: 6 | Зарегистр. 24-11-2011 | Отправлено: 21:00 24-11-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
if ((ch >= 'a') and (ch <= 'z')) or ((ch >= 'A') and (ch <= 'Z')) then  

 
upcase() -- _встроенная_ системная функа и пренебрегать ей... плохо...
 
без множества оптимальным будет след. код:
 
  ch := upcase(ch);
  if ( (ch >= 'A') and (ch <= 'Z') ) then
 

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 21:02 24-11-2011
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nata84ru

Цитата:
А с вариантом под буквой б то что.  

Простейший вариант - копипаст 3-х строк начиная с v:= нужное число раз с заменой присваиваемого в v значения.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 21:06 24-11-2011
Nata84ru

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
То есть так
 
program dl;  
 var  
 r:integer;  
 h,v:real;  
 begin  
 writeln ('Введите параметр R');  
 readln (R);  
 v:=50;
 v:=55;
 v:=65;
 v:=120;
 v:=170;
 h:=v/(3.14*r*r);  
 writeln ('объем цилиндра равен ',v,' высота равна ',h);  
 readln;  
 end.
а так можно.

Всего записей: 6 | Зарегистр. 24-11-2011 | Отправлено: 21:19 24-11-2011
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я написал про 3 строки, а не про 1.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 21:26 24-11-2011
Corsairs

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не-а... А вот так:
Код:
program dl;
 var
 r:integer;
 h,v:real;
begin
 writeln ('Введите параметр R');
 readln (R);
 v:=50;
 h:=v/(3.14*r*r);
 writeln ('объем цилиндра равен ',v,' высота равна ',h);
 v:=55;
 h:=v/(3.14*r*r);
 writeln ('объем цилиндра равен ',v,' высота равна ',h);
 v:=65;
 h:=v/(3.14*r*r);
 writeln ('объем цилиндра равен ',v,' высота равна ',h);
 v:=120;
 h:=v/(3.14*r*r);
 writeln ('объем цилиндра равен ',v,' высота равна ',h);
 v:=170;
 h:=v/(3.14*r*r);
 writeln ('объем цилиндра равен ',v,' высота равна ',h);
 readln;
end.

Всего записей: 569 | Зарегистр. 30-06-2006 | Отправлено: 21:26 24-11-2011
Nata84ru

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну чуть чуть не угадала. Что бы я без тебя делала.Осталось эту бяку сдать. огромное спасибо!Век буду помнить и не забуду такого милого человечка.

Всего записей: 6 | Зарегистр. 24-11-2011 | Отправлено: 21:31 24-11-2011
Corsairs

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nata84ru
Можно еще для лучшей читабельности сделать форматируемый вывод результата.
Например, вот так: writeln ('объем цилиндра равен ',v:3:1,' высота равна ',h:3:5);
т.е. для объема - 3 цифры до запятой и одна - после, а для высоты - 3 цифры до запятой, и 5 - после...
 
В подобных задачах особой сложности нет... главное - понять, как и что делается...

Всего записей: 569 | Зарегистр. 30-06-2006 | Отправлено: 22:00 24-11-2011
murkovich



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Почему не так?
 

Код:
program dl;  
 var  
 r:integer;  
 
procedure cilindr(v: real);
 var h: real;
begin
 h:=v/(3.14*r*r);  
 writeln ('объем цилиндра равен ',v:3:1,' высота равна ',h:3:5);  
end;
 
begin  
 writeln ('Введите параметр R');  
 readln (R);  
 
 cilindr(50);
 cilindr(55);
 cilindr(65);
 cilindr(120);
 cilindr(170);
 
 readln;  
end.

Всего записей: 1551 | Зарегистр. 26-05-2005 | Отправлено: 22:15 24-11-2011
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите сделать задачи:

Цитата:
1. type TE: <любой тип>; файл = file of char;
список = ^ звено; звено = record элем: TE; следующий: список; end;
Описать функцию, значениями которой есть список, который построен из элементов файла.
 
2. Описать процедуру или функцию, которая определяет число вхождений элемента E в дерево T. type TED = <любой тип>; дерево = ^ верхушка;
верхушка = record элем: TED; левая, правая: дерево; end;

Не понимаю что и как делать.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 12:24 25-11-2011 | Исправлено: A1exSun, 16:48 25-11-2011
indapublic



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Знакомые попросили решить задачу, а я не то что решить, алгоритм придумать не могу. Может кто подскажет идею.
 
На город нападает флот инопланетян. Флот состоит из n космических кораблей, имеющих форму равнобедренного прямоугольного треугольника. Носом инопланетного корабля считается вершина, угол при которой прямой, а осью корабля называется высота, опущенная на гипотенузу.
Для битвы с инопланетянами необходим лазер. Пущенный луч прожигает насквозь все вражеские корабли, через которые он проходит (даже те, которые он задевает по границе). Но этот выстрел повредит только в случае, если все n кораблей будут при этом поражены.
Военные решили поставить лазер в одну из точек, над которыми находятся все n вражеских кораблей.Необходимо определить площадь территории, на которой можно поставить лазер.  
 
В первой строке входного файла INPUT.TXT содержится целое число n количество инопланетных кораблей. В каждой из следующих n строк описывается положение очередного корабля. Описание состоит из трех целых чисел xi, yi и si, где xi и yi координаты носа, а si размер корабля. Поскольку корабль имеет форму равнобедренного прямоугольного треугольника, размером корабля является длина катета. Размеры кораблей положительные числа, не превышающие 1 000. Координаты носов кораблей не превышают по абсолютной величине 105.
 
В выходной файл OUTPUT.TXT выведите площадь территории, над которой находятся все инопланетные корабли. Выведите ответ с точностью до трех знаков после десятичной точки.  

Всего записей: 200 | Зарегистр. 05-02-2008 | Отправлено: 18:35 25-11-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
эмм... надо все корабли одним махом что ли поразить? и они что, все друг над дружкой плашмя что ли висят? иначе где гарантия, что вообще найдется такой луч, пробивающий их всех за 1 раз?

Всего записей: 11539 | Зарегистр. 03-08-2008 | Отправлено: 19:02 25-11-2011
murkovich



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
indapublic
Странная задачка. Там не указана ни размерность пространства (это двумерные инопланетяне нападают на одномерный мир, который расположен на прямой? или мир тоже двумерный, а инопланетяне настолько глупы, что держат корабли параллельно земле, чтобы легче в них попасть было?), ни ориентация кораблей (вводится понятие оси корабля, но дальше нигде не используется). Можно только предположить, что методом решения должен быть перебор точек от -105 до +105 с шагом 1, и для каждой точки смотреть, прожигает ли все корабли лазер, поставленный в этой точке. Или вариация на эту тему.

Всего записей: 1551 | Зарегистр. 26-05-2005 | Отправлено: 19:04 25-11-2011
jonis84

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток!Помогите пожалуйста с задачками:
 
1 . Составить программу для выполнения заданных действий над двумерным массивом вещественных чисел A(N,M). В про-грамме предусмотреть ввод значений его элементов, вывод исходной и, при необходимости, преобразованной матриц.    
  Найти строку с наибольшей и наименьшей суммой элементов. Вывести на печать найденные строки и суммы их элементов;
 
2. Составить блок-схему алгоритма и программу для вычисления суммы бесконечного сходящегося ряда. Суммирование прекратить при появлении в сумме слагаемых, имеющих абсолютную величину, меньшую заданной погрешности d. Значение d задается при помощи оператора ввода.
 S=  1 / tg(x) - 1 / tg(2x) + 1 / tg(3x) - ...
 
3. Составить блок-схему алгоритма и программу для вычисления и вывода на экран таблицы значений функции. Вывод выполнить в два столбика: первый столбик - значения аргумента, второй - значения функции. При разработке программы следует учитывать область определения функции и в случае необходимости организовать печать сообщения - “функция не определена”.  
F = lg(x2 + 3x + 0.1)  ; нач.зн.  -4 ; кон. зн. 2.5 ;шаг  0.2;
( *x2 - это x во 2 степени )
Заранее благодарен!!!

Всего записей: 5 | Зарегистр. 26-11-2011 | Отправлено: 00:37 26-11-2011
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
indapublic
MERCURY127
murkovich
А по-моему большая часть описания - это лирика (весьма бредовая к тому же; ну и тест на умение отсечь лишнее) и вся задача сводится к финальной фразе:
Цитата:
выведите площадь территории, над которой находятся все инопланетные корабли. Выведите ответ с точностью до трех знаков после десятичной точки.

То есть надо посчитать площадь этого множества кораблей.
И судя по второму предложению цитаты, сделать это надо методом Монте-Карло.
Если кратко:
1. покрыть множество кораблей неким телом, таким чтобы его можно было полностью покрыть генератором случайных чисел. Например прямоугольником/квадратом;
2. бросать в это тело случайно сгенерированные по равномерному закону точки и смотреть, попало в корабль или нет;
3. поставив таким образом необходимое число экспериментов, определить площадь этой "фигуры" с нужной точностью.
 
A1exSun

Цитата:
2. Описать процедуру или функцию, которая определяет число вхождений элемента E в дерево T. type TED = <любой тип>; дерево = ^ верхушка;
верхушка = record элем: TED; левая, правая: дерево; end;  

Ну тут всё просто: надо обойти бинарное дерево и в каждом узле проверять, оно или не оно и считать если оно.
 
А вот к первой задаче явно должна быть какая-то предыстория, без которой задача не понятна.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 00:40 26-11-2011 | Исправлено: KChernov, 00:43 26-11-2011
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov
Нагуглил книгу "Пильщиков В. Н. - Сборник упражнений по языку Паскаль", нашел там вроде такие же задачи и частичные их решения, 1:

Код:
{список с заглавным звеном}
function newlist(var f: файл): список;
var    L, p, q: список;
    x: ТЄ;
begin
    reset(f);
    new(L); {создать заглавное звено}
    p := L; {ссылка на последнее из созданных звеньев}
    while not eof(f) do begin
        read(f,x);
        new(q);
        q^.элем := x; {создать звено с x}
        p^.след := q; {добавить его за p}
        p := q {объявить его последним}
    end;
    p^.след := nil; {записать nil в последнее звено}
    newlist := L
end

С этим вроде все пока ясно... Получаю имя файла, открываю его, если нет - создаю, читаю список и если он не пустой - вывожу его (пока не знаю как... но чувствую это не проблема).
2:

Код:
function count(T: дерево; E: ТЭД): integer;
var    S: стек;
    k: integer;
begin
    очистек(S);
    k := 0; {число вершин с E}
    while T <> nil do begin {T-ссылка на очередную вершину}
        if T^.элем = E then k := k+l;
        {переход к следующей вершине:}
        if T^.лев <> nil then  begin {есть ветвь влево}
            if T^.прав <> nil then встек(S,T^.прав); {правую ветвь, если есть, - в стек}
            T:=T^.лев {идти влево}
        end
        else if T^.прав<>nil then T:=T^.прав {идти вправо}
        else {нет обоих ветвей} begin {взять ветвь из стека и идти по ней}
        if пустек(S) then T := nil {конец просмотра}
        else изстека(S,T)
        end
    end;
    count := k
end;

Что за стек? Скан книги. Как описать эти функции и процедуры? Готовых там не к сожалению

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 00:53 26-11-2011
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun

Цитата:
Что за стек? Скан книги

Стэк - это стэк. В книге же написано.
То есть это связанный список элементов и указатель на конец списка. А каждый элемент указывает на следующий.
Ищется легко.
 
В данном случае нужен, чтобы хранить путь к вершине дерева (и знать путь назад).

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 01:03 26-11-2011
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov
Как-то все сложно получается...

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 01:23 26-11-2011
Corsairs

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jonis84
 
По первой задаче: откройте "версию для печати" и поищите - подобные задачи уже были (по крайней мере - ввод и вывод элементов матрицы точно есть...) в цикле находим сумму ряда (если ряд первый - то принимаем сумму за начальное минимальное и максимальное значение), сравниваем полученное значение с минимальным и максимальным, при необходимости - обновляем...
Потом выводим результат...
 
По второй задаче: а разве это сходящийся ряд???
 
По третьей задаче: Тоже не вижу особых сложностей... берем на предыдущей странице программу поиска высоты цилиндра, меняем формулу... добавляем проверку условия существования функции - и все...

Всего записей: 569 | Зарегистр. 30-06-2006 | Отправлено: 01:32 26-11-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru