пʼятницю, 24 жовтня 2014 р.

Задачі програмування на мові Pascal


  Числові задачі  мовою програмування Pascal  
           
Задача Dobutok

Задача Dobutok.  Дано чотирицифрове  натуральне число.  Знайти добуток цифр цього числа.

Технічні умови. Вхідні дані:  а - ціле додатне чотирицифрове число. Вихідні дані – ціле число, що  є добутком цифр чотирицифрового числа, при умові, що  -32768<= a <=32678
Приклад.  Введення 7091 Виведення  0
 Розв'язання.
program  Dobutok;
var   a,b, c, d, n: integer;
begin
write(‘Введіть  4-цифрове ціле число n=’);
readln(n);
  a:= n div 1000
  b:= (n mod 1000) div 100;
  c:= (n mod 100) div 10;
 d:= n mod 10;
writeln(‘Добуток цифр числа  n=’, a*b*c*d);
end.


Задача Perestanovka 

Задача Perestanovka.  Поміняти між собою значення двох змінних, не використовуючи третьої змінної.
Технічні умови. Вхідні дані: перше і друге число – це цілі різні числа. Не використовувати додаткової третьої цілої змінної. Вихідні дані – друге число і перше число – це дві цілі змінні, при умові, що  -32768<= a,b <=32678
Приклад.  Введення 7 9 Виведення  9 7

Розв’язання.

program  Perestanovka;
var   a,b: integer;
begin
write(‘Введіть  перше ціле число а=’);
readln(а);
write(‘Введіть друге ціле число b=’);
 readln(b);
  a:=b+a
  b:=a+b;
  a:=b-a;
  b:=b-2*a;
writeln(‘Після перестановки  перше число а=’, a);

writeln(‘Після перестановки   друге число b=’, b);
end.

МАКСИМУМ ЧИСЛОВОЇ МНОЖИНИ

Задача MAXMIN2

Задача MAXMIN2.  Дано два  цілих числа.  Не використовуючи знаки порівняння “<” i “>”  та “<=” i “>=”,   знайти найбільше та найменше  із двох даних чисел.

Технічні умови. Вхідні дані:  а  та b – цілі числа.  Не використовувати знаки порівняння “<” i “>”  та “<=” i “>=”.    Вихідні дані. Перше число – ціле число, що  є найбільшим із двох чисел,  друге число – ціле число, що  є найменшим  із двох чисел, якщо  -32768<= a, b <=32678
Приклад.  Введення 779  897 Виведення  897  779.

program  MAXMIN2;

var   a,b, max, min: integer;

begin

write(‘Введіть  ціле число a=’);

readln(a);
write(‘Введіть  ціле число b=’);
readln(b);
max:=(abs(a-b)+a+b)  div 2;
min:=(-abs(a-b)+(a+b))  div 2;
writeln(‘Найбільше із двох чисел  max=’, max);
writeln(‘Найменше із двох чисел  mіn=’, min);
end.

 Задача MAXMIN3

Задача MAXMIN3.  Дано три  різні  цілі числа.  Не використовуючи знаки порівняння “<” i “>”  та “<=” i “>=”,   знайти найбільше, середнє, найменше  із трьох  даних чисел та розташувати дані числа  в порядку спадання.

Технічні умови. Вхідні дані вводяться з екрану:  x, y, z  – цілі числа.  Не використовувати знаки порівняння “<” i “>”  та “<=” i “>=”.    Вихідні дані виводяться на екран: перше число – ціле число, що  є найбільшим із трьох чисел,  друге число – ціле число, що  є середнім  із трьох  чисел, третє число – ціле число, що  є найменшим  із трьох  чисел,якщо  -32768<= x, y,z <=32678. Остаточно виводиться на екран спадна послідовність із трьох даних чисел.
Приклад. Введення: 
Введіть  ціле число x=3
Введіть інше ціле число y=8
Введіть інше ціле число z=0
Виведення:
Найбільше із трьох чисел  max=8
Середнє із трьох чисел  ser=3
Найменше із трьох чисел  mіn=0
Спадна послідовність із трьох чисел 8; 3; 0
Розв’язання.
program  MAXMIN3;
var   x,y,z,max,min,ser: integer;
begin
write('Введіть  ціле число x=');
readln(x);
write('Введіть інше ціле число y=');
readln(y);
write('Введіть інше ціле число z=');
readln(z);
max:=(abs(x-y)+x+y) div 2;
max:=(abs(z-max)+z+max) div 2;
min:=(-abs(z-y)+(z+y)) div 2;
min:=(-abs(min-x)+(min+x)) div 2;
ser:=x+y+z-max-min;
writeln('Найбільше із трьох чисел  max=', max);
writeln('Середнє із трьох чисел  ser=', ser);
writeln('Найменше із трьох чисел  mіn=', min);
writeln('Спадна послідовність із трьох чисел ', max, ser, min);
end.


Задача Більше_з_чотирьох чисел.  Дано чотири цілих числа a, b i c, d. Знайти більше з чотирьох чисел.
Технічні умови. Не використовувати додаткової змінної. Числа всі різні.
-32768<= a,b,c, d <=32678
Приклад.  Введення 7 9 1 3   Виведення  9

Розв′язання.

Program Fiernumer;
Var   a,b,c,d,z,x,y,x1,y1:integer;

 function max(x,y:integer):integer;
   begin
    if x>y then max:=x
     else max:=y;
    end;
begin
  writeln('Vvedite chisla integer');
   readln(a,b,c,d);
    x1:=max(a,b);
     y1:=max(c,d);
      z:=max(x1,y1);
    writeln('z=',z);
end.

Задача  Maximus. Підрахувати кількість чисел у масиві, які більші за дане число.
Технічні умови.  Вхідні дані. Перше число – це ціле число – еталон, з яким порівнюють  числа у масиві. Друге число - це ціле число, означає  розмір масиву  або кількість цілих чисел у масиві. Масив цілих чисел виводиться з клавіатури. Вихідні дані.   Усі числа даного масиву і  число, що вказує кількість цілих чисел у масиві, які більші за дане число.

Приклад1.
Введення
vvedite celoe chislo m i razmer massiva(n)
3
4
b[j]
5
7
9
9
Виведення
5 7 9 9
kolichestvo=4
Приклад2.
Введення
vvedite celoe chislo m i razmer massiva(n)
7
3
b[j]
2
9
7
Виведення
2 9 7
kolichestvo=1

Розв′язання.
program  Maximus;
uses crt;
type mas=array[1..100]of integer;
      func=function(var x:mas):integer;
var a:mas;
    j,n,m,x:integer;
    {$F+}
    function kolichestvo(var c:mas):integer;
     var k,i:integer;
     begin
     k:=0;
     for i:=1 to n do
     if c[i]>m
     then k:=k+1;
     kolichestvo:=k;
     end;
     {$F-}
     procedure deist(var b:mas; operation:func);
     begin
     writeln('b[j]');
     for j:=1 to n do
     readln(b[j]);
     for j:=1 to n do
     write(b[j],' ');
     writeln;
     x:=operation(a);
     end;
begin
  clrscr;
  writeln('vvedite celoe chislo m i razmer massiva(n)');
  readln(m,n);
  deist(a,kolichestvo);
  writeln('kolichestvo=',x);
end.




Задача МІN+МАХ+МАСИВУ. В одновимірному масиві, що складається із 15 дійсних чисел,  які задані випадковим чином від -100 до 100, визначити позиції максимального і мінімального елементів, переписати всі елементи масиву, які перебувають між двома знайденими позиціями в інший масив. Вивести одержаний масив  на екран.

program r56;
const m=15;
var      a, b : array [1..m] of real;
           i, pmin, pmax, p: integer;
begin
    for i:=1 to m do   begin
a[i]:=random*200-100; {присвоєння випадкових чиcел масиву}
    writeln('a[',i , ']:= ',a[i]);     
end;     
    pmin:=1;    pmax:=1;   
  for i:=2 to m do     begin
    if  a[i]<a[pmin]   then    pmin:=i;              
     if a[i]>a[pmax] then    pmax:=i;              
  end;
writeln('Найменший елемент стоїть на позиції  а', pmin);
writeln('a[', pmin , '] =  ', a[pmin]); 
writeln('Найбільший елемент стоїть на позиції  a' , pmax);
writeln('a[', pmax , '] =  ', a[pmax]); 
writeln(' Множина усіх елементів між  найменшим елементом  та найбільшим елементом: ');
        p:=0;                     
  if  pmin<pmax    then
        for  i:=pmin+1  to   pmax-1  do
    begin
      inc(p);   b[p]:=a[i];   end
  else    for i:=pmax+1  to  pmin-1  do
    begin
      inc(p);  [p]:=a[i];
    end;
  for i:=1 to p do 
 writeln('b[',i , ']  = ',b[i]);     
end;  end.

Двійкова система числення. Десяткова система числення.
Програми  на мові  Pascal переводу чисел.

Задача N2_N10. Переведіть  натуральне число із двійкової системи числення в десяткову систему числення, використовуючи мову Pascal.
Технічні умови.  З клавіатури вводяться  числа із двійкової системи числення, використовуючи цілий тип даних longint. На виході  отримуємо це ж число, що записане у десятковій системі числення.
Приклад.  А)Введення:112, виведення:310;Б) Введення:10102, виведення:1010;  В)Введення:11112, виведення:1510; Г) Введення:100002 , виведення:1610. 
Розв’язання.
program n2_n10;
var  n10, n2,  ost, k : longint;
begin
write( Введіть натуральне число в двійковій системі  із цифр  1 та  0,   n2=: ');
 read(n2); k:=1;  n10:=0;  while n2 > 0 do
begin
ost:= n2 mod 10;   if  ost=1 then  n10:= ost*k+n10;
n2:= n2 div 10;   k:= k*2; end;
writeln('  Число в десятковій  системі  має запис  n10 = ', n10);
end.
Задача N10_N2. Переведіть  натуральне число із десяткової  системи числення в двійкову систему числення , використовуючи мову Pascal.
Технічні умови.  З клавіатури вводяться  числа в десятковій системи числення, використовуючи цілий тип даних longint. На виході  отримуємо це ж число, що записане у двійковій системі числення.
Приклад.  А)Введення:310, виведення:112; Б)Введення:1010, виведення:10102
В)Введення:1510, виведення:11112; Г) Введення:1610,  виведення:100002. 
Розв’язання.
program n10_n2;
var a, b, n10, n2,  ost, k : longint;
begin
write( Введіть натуральне число в десятковій  системі  числення  із цифр:  1,2,3,4,5,6,7,8,9,0,  n10=  ');
 read (n10);   k:=1; n2:=0;    while n10 > 0 do
begin
        ost:= n10 mod 2;   n10:= n10 div 2;  n2:= ost*k+n2;
        k:= k*10; 
end;
         writeln('   Число в двійковій  системі числення  має запис  n2 = ',n2);

         end.



Задача Сircle
Василько взяв великого циркуля та зайшов до кімнати, підлога якої являє собою квадрат зі стороною рівною M(M>1м). Поставивши циркуль на перетині діагоналей цього квадрата він почав будувати кола. Перше коло мало діаметр 10 см., друге – 30, трете – 40, четверте – 60, п’яте – 70, шосте – 90 см. і т.д. Скільки повних кіл може побудувати в цій кімнаті Василько?
Технічні умови. Програма зчитує з клавіатури ціле число M – довжину стіни кімнати в сантиметрах. Програма виводить на екран одне ціле число – кількість повних кіл, які можна тут побудувати.
Приклад.
Введення> 240
Виведення> 16
Введення> 380
Виведення> 25
Розв'язання. 
program Circle;
var M, r: integer;
begin
readln(M);
r:=2*(m div 30);
if(m mod 30)>=10 then
  r:=r+1;
  writeln(r);
  end.

Задача Leopold
Кіт Леопольд пішов на рибалку та наловив риби. Кожну рибу він старанно зважив. Перша риба (найменша), яку він зважував важила рівно L грам. Кожна наступна рибина була на К грамів важча за попередню. Скільки заважила вся риба, яку наловив Леопольд, якщо відомо, що спіймав він N (N>0) риб?
Технічні умови. Програма зчитує з клавіатури ціле число N - кількість рибин, потім, через пропуск, L - маса першої риби в грамах та, через пропуск - К - на скільки кожна наступна рибина важча від попередньої. Програма виводить на екран одне ціле число - масу всієї упійманої риби в грамах.
Приклад.
Введення> 10 250 100 
Виведення> 7000
Введення> 12 100 150
Виведення> 11100
Розв’язання.
program  Leopold;
var s, r, n, l, k: integer;
begin
read(n, l, k);
s:=0;
for r:=1 to n do
s:=s+l+k*(r-1);
  writeln(s);
  end.


Задача Slon
Петрик П'яточкін вишикував у рядок слоненят та рахує їх по кожному кольору окремо. Всього буває 8 кольорів слоненят. У рядок вишикувались N (10<N<999) слоненят. Скільки слоненят кожного кольору стоїть перед Петриком? Бажано їх порахувати пройшовши всього один раз перед строєм.
Технічні умови. Програма зчитує з клавіатури ціле число N - кількість слоненят, потім, через пропуск - Nчисел від 1 до 8, якими ми пронумеровали кожен колір в тій послідовності, в якій вони потрапляли на очі Петрику від початку рядка. Програма виводить на екран в один рядок через пропуски пари цілих чисел, де перше число пари - колір, а друге - кількість слоненят такого кольору.
Приклад.
Введення>12 1 1 2 3 3 1 5 6 8 7 6 5 
Виведення> 1 3 2 1 3 2 4 0 5 2 6 2 7 1 8 1
Розв’язання.

program  slon;
const q=1; g=998;
type Massiv = array[q..g] of integer;
var s, r, n, l, k: integer;
    b:array[1..8] of integer;
    a: Massiv;
begin
read(n);
for r:=1 to n do
 read (a[r]);
 for r:=1 to 8 do
 b[r]:=0;
for r:=1 to n do
case  a[r] mod 9 of
1:  b[1]:=b[1]+1;
2:  b[2]:=b[2]+1;
3:  b[3]:=b[3]+1;
4:  b[4]:=b[4]+1;
5:  b[5]:=b[5]+1;
6:  b[6]:=b[6]+1;
7:  b[7]:=b[7]+1;
8:  b[8]:=b[8]+1;
  end;
for r:=1 to 8 do
  write(r,'  ',b[r],'  ');
  end.

Задачі для програмування на  мові Pascal

Задача Vinni.  Вінні Пух любить складати віршики говорячи речення задом наперед. Якось йому попалось довге складне речення і він забув свій віршик, пробуючи його виговорити. Складіть програму, яка б допомагала ведмедику легко складати такі віршики. Зауваження: віршик може складатись як із 1 слова, так і з декількох, розділених пропусками.

Технічні умови. Програма зчитує з клавіатури стрічку-віршик. В кінці віршика ніколи не ставиться крапка. Довжина віршика менша за 255 символів. Програма виводить на екран стрічку, яку отримано внаслідок повороту.

Приклад. Введення> роза.  Виведення> азор.
Приклад. Введення> Все медведи любят мед. Виведення> дем тябюл идевдем есВ
Розв’язання.


program  vinni;
var
n,m,s: string;
i: byte;
b:char;
begin
   read(s);
   m:=s;
   n:=s;
   for i:=1 to length(s) div 2 do
    n[i]:= s[length(s)-i+1];
      for i:=length(s) div 2 downto  1 do
       n[length(s)-i+1]:= m[i];
       writeln(n);

end.



Задача Worms. Черв’ячки - цікаві тваринки. Якщо їх залишити вдвох і не турбувати, то через 10 хвилин їх стане четверо, через 20 хвилин – восьмеро, через 30 хвилин – 16 штук. Скільки їх стане через N (N>1) хвилин? Зауваження: на появу нових черв’ячків потрібно рівно 10 хвилин. Всі нові черв’ячки появляються одночасно.

Технічні умови. Програма зчитує з клавіатури ціле число N – кількість хвилин. Програма виводить на екран одне ціле число – кількість черв’ячків через вказаний час.

Приклад. Введення> 5.  Виведення> 2
Приклад. Введення> 48. Виведення> 32




Задача Nhex. Дано число  в системі числення з основою  m (2≤m≤16) .  Написати програму що переводить дане число в систему числення з основою 10.
Технічні умови: Програма читає  з клавіатури першому рядку  число m (основу системи числення), а в другому - текстовий рядок, в якому записано саме число Ch (0≤Ch≤2+109) .  Програма виводить на екран відповідь в вигляді десяткового числа.
Приклад:
 Введення: 16
FFFF
Виведення:65535.
Задача Hex. Дано число Ch  в десятковій системі числення.  Написати програму що переводить дане число в систему числення з основою m.
 
Технічні умови: Програма читає  з клавіатури в першому рядку число m (2≤m≤16), в другому -   число Ch(0≤Ch≤2+109)  в десятковій системі.  Програма виводить на екран відповідь в вигляді текстового рядка.
Приклад:
Введення:

16
 
1024
Виведення:
400

Задача CUBE.Дано довжину ребра куба. Знайти його об’єм та площу всієї поверхні.
 Вхідні дані.  Ви вводите з клавіатури одне ціле число.
Вихідні дані. Ви виводите на екран два цілих числа – об’єм та площу поверхні куба.

Приклад вхідних і вихідних даних.
Вхід: 4
Вихід: 64   96

Розв’язання.

program  cube;
var
a,s,v: integer;
begin
 read(a);
   v:=a*a*a;
   s:=6*a*a;
         write(v,' ', s);
           end.






Класичні алгоритми мовою Pascal

Задача NSK. Знайти НСК 2-х натуральних чисел a, b.
Розв’язання: Нам відомо,  НСД(a,b)×НСК(a,b)=a×b, як знаходити НСД (nsd) за алгоритмом Евкліда ( це усім відома задача). Скористаємось ним для знаходження НСК(a,b)= nsk на підставі такого твердження: якщо НСК(a,b)=a×b:НСД(a,b), тобто nsk=(a div nsd)·b. Спробуйте самостійно вивести дану формулу. А ми приведемо програмну реалізацію розв’язку задачі на мові Pascal, не використовуючи ніяких коментарів, ми вже й так все роз’яснили.
program n_s_k2;
var a, b, a1, b1, nsk : longint;
begin
         write(’ Введіть перше число: ’); readln(a);
         write(’ Введіть друге число: ’); readln(b);
         a1:=a; b1:=b;
         while a1 <> b1 do
                         if a1 > b1 then a1 := a1–b1
                         else b1 := b1–a1;
         nsk := (a div a1)*b;
         writeln(’НСК чисел ’,a,’ та ’,b,’ = ’,nsk);
         readln
end.
Задача NSK-5. Знайти найменше спільне кратне (НСК) 5-ти натуральних чисел.
Тепер ми можемо повернутись до попередньої задачі. Спосіб знаходження НСК для п’яти чисел полягатиме у тому, що ми знайдемо НСК для першого і другого числа, потім знайдемо НСК для знайденого перед цим НСК і третього числа, потім для НСК і четвертого і, нарешті, знайдемо НСК для знайденого на попередньому кроці НСК і п’ятого (останнього!) числа. Спробуйте самостійно реалізувати запропонований спосіб і перевірити, наскільки ваша програма відрізнятиметься від приведеної нижче нами.
program n_s_k5;
var a, b, b1, b2, b3, b4, b5, nsk : longint;
begin
            write('Введiть перше число: '); readln(b1);
            write('Введiть друге число: '); readln(b2);
            write('Введiть трете число: '); readln(b3);
              write('Введiть четверте число: '); readln(b4);
            write('Введiть п''яте число: '); readln(b5);
            a:=b1; b:=b2;
            while a <> b do  if a > b then a := a – b  else b := b - a;  nsk := (b1 div a)*b2;  a:=nsk; b:=b3;
            while a <> b do  if a > b then a := a – b  else b := b - a;  nsk := (nsk div a)*b3;   a:=nsk; b:=b4;
            while a <> b do   if a > b then a := a – b  else b := b - a;  nsk := (nsk div a)*b4; :=b1; b:=b2;   a:=nsk;  b:=b5;
            while a <> b do  if a > b then a := a – b  else b := b - a;  nsk := (nsk div a)*b5;
             writeln('НСК п''яти чисел = ',nsk);
            readln;   end.
Погодьтесь, що навіть читати текст програми, у якій чотири рази використовується один і той самий алгоритм, справа не для зовсім нормальних людей. Мабуть саме так мислили ті, хто стояв у витоків програмування, і мабуть, саме тому і було створено механізм процедур і функцій, який дозволяє написати досить великий одноманітний фрагмент програми у вигляді процедури або функції, а потім при необхідності викликати його, або як ще іноді кажуть – звертатись до нього при допомозі одного єдиного слова, яке і є назвою процедури або функції. Втім, перейдемо до справи. Перейдемо спочатку до процедур, адже нам потрібно вияснити різницю між процедурами і функціями, а також потрібно вияснити у якому випадку краще використовувати процедури, а у якому – функції.


program nsk_n_v2;            { Програма знаходження НСК для n чисел }
var a, nsk : longint;             { нам будуть потрібні всього дві змінні: число і НСК}
procedure nsk_2;             { процедура для знаходження НСК двох чисел }
var x, y : longint;                { додаткові змінні, значення яких програма не бачить }
begin                             { початок процедури }
   x := nsk;   y := a;        { зберігаємо вхідні дані }
   while x <> y do                { і працюємо з внутрішніми змінними }
     if x > y then x := x - y    { процедури, використовуючи вже відомий  }
     else y := y - x;                { нам алгоритм Евкліда для НСД }
   nsk := (nsk div x) * a;    { і знаходимо НСК  }
end;                    { кінець процедури }
begin                     { головна програма }
  nsk := 1;              { для першого входження в процедуру nsk_2 }
  a :=  1;                    { для входження в цикл }
  while a <> 0 do  { цикл завершується коли з клавіатури ввели 0 }
  begin                 write('Введіть число: ');
 readln(a);                   {  зчитали число }
    if a<>0 then          { і якщо воно не нуль }
    begin                                     
nsk_2;                      { то знаходимо НСК двох чисел }
       writeln('НСК = ',nsk);     { і виводимо значення на екран }
    end;
  end;        { кінець циклу, коли ввели 0 }
  writeln('Для закінчення нажміть <Enter>');                { повідомлення }
  readln; { чекаємо натиснення <Enter> }
end.    { кінець програми }

Задача Сортування. Запропонований спосіб сортування називають способом обміну.  Програмна реалізація даного способу сортування матиме вигляд:
            Program sort1;
                   const  b : array[1..10] of byte =  (172,165,180,174,182,179,183,185,176,181);
                var  a: array[1..10] of byte;
                       i, j, n : integer;
                   k : byte;
                begin
                    for i:=1 to 10 do a[i]:=b[i];   { Нижче реалізовано алгоритм сортування методом обміну }
                      n:=10;
                   for i:=1 to n-1 do
           begin
                     for j := i+1 to n  do
                            if a[i]<a[j] then
                          begin
                            k := a[j];
                              a[j] := a[i];
                           a[i] := k;
                       end;
                   end;       { Кінець сортування }

Задача. Задати масив випадкових чисел.
program r56;
var
   a,b :array [1..15] of real;
   i:integer;
 begin
    for i:=1 to 15 do
    begin
    a[i]:=random*200-100;

    writeln('a[',i , ']:= ',a[i]);     end;     end.



Задача  Clock.  Стрілки годинника рухаються з постійним кутовими швидкостями  годин хвилин. Найти число повних хвилин до найближчого моменту, в яких стрілки співвпадуть.
Технічні умови: Програма читає два цілих числа та з клавіатуриПрограма виводитьцілечисло хвилин на екран.
Приклади.
Введення: 0  0
Виведення 0

 Введення: 1  1
Виведення:  4.

Задача Bracket. Дано алгебраїчний вираз з дужками, записаний одним рядком. Вірно чи не вірно в ньому розставлено дужки?
 Технічні умови: Програма читає  з клавіатури рядок з виразом (не довший за 255 символів) .  Програма виводить на екран відповідь в вигляді текстового рядка. Якщо дужки розставлено вірно - друкує слово True, якщо не вірно -Folse
Приклад:
Введення:
(a+b)
Виведення:
True

Задача NewCircle. Дано  послідовність  цілих чисел.  Відрізок послідовності утворюють числа, що йдуть в послідовності підряд в порядку зростання. Знайти номери чисел, якими починається і закінчується  перший відрізок з максимальною сумою, а також цю суму.

Технічні умови. Програма читає спочатку кількість елементів послідовності, а потім саму цю послідовність. Всі числа в одному рядку, їх розділено пропусками. Гарантовано, що послідовність не порожня, і всі розрахунки можна вести в межах типу longint. Програма виводить  в один рядок 3 числа через пропуск - номера першого і останнього елемента шуканого відрізка і суму чисел відрізку

Приклад.  Введення 3 -2 -1  0.  Виведення 3  3 0.
Приклад.   Введення  5 1  2  -3  3  0. Виведення 1  2  3

Задача GIRLS. Якщо на одну шальку терезів посадити Даринку, яка важить n кг, і Тетянку, яка важить на 5 кг більше, а на іншу насипати m кг цукерок, то скільки кілограм цукерок доведеться з’їсти дівчаткам, щоб шальки терезів врівноважились?
Вхідні дані.  Ви вводите з клавіатури два цілих числа n і m.
Вихідні дані. Ви виводите на екран одне шукане число.

Приклад вхідних і вихідних даних
Вхід: 40   89
Вихід: 4

Задача CIRCLE2. Дано довжину кола. Визначити площу круга, обмеженого цим колом.
Вхідні дані. Ви вводите з клавіатури одне дійсне число.
Вихідні дані. Ви виводите на екран одне дійсне число з трьома знаками після коми (без округлення).
Приклад вхідних і вихідних даних
Вхід: 12
Вихід: 11.459


Задача PUPIL.Учень-невдаха Сашко сів виконувати домашнє завдання і просидів за столом 2 години. З них х хвилин він чухав потилицю і дивився у вікно, у шукав у письмовому столі гумку, щоб стерти у підручнику з англійської мови карикатуру на свого товариша, на малювання якої він витратив перед цим z хвилин. Решту часу Сашко перекладав англійські слова. Скільки слів він встиг перекласти, якщо переклад одного слова у нього займав 5 хвилин?
Примітка. Використовувати цілочисельне ділення (команду div).

Вхідні дані.Ви вводите з клавіатури три цілих числа x, y, z.
Вихідні дані.Ви виводите на екран одне число – шукану кількість слів.

Приклад вхідних і вихідних даних
Вхід: 10  15  25
Вихід: 14

Задача HEIGHTS. Дано сторони трикутника а, b, с. Знайти висоти трикутника, радіуси вписаного та описаного кіл.
Вхідні дані. Ви вводите з клавіатури три дійсних числа а, b, с.
Вихідні дані. Ви виводите на екран п’ять дійсних чисел з трьома знаками після коми (без округлення).

Приклад вхідних і вихідних даних
Вхід: 23.000   34.000   43.000
Вихід: 33.813   22.873   18.086   21.619   7.777 

Задача MIRROR. У Несміяни кругле обличчя, радіус якого R см. Визначте, яку сторону повинно мати квадратне дзеркало, щоб, коли Несміяна милується собою, її відображення поміщалось у дзеркалі?
Вхідні дані. Ви вводите з клавіатури одне дійсне число R.
Вихідні дані. Ви виводите на екран одне дійсне число – сторону дзеркала. Результат містить 2 знаки після коми (без округлення).

Приклад вхідних і вихідних даних
Вхід: 7.6
Вихід: 15.20

Задача SALARY. Визначити, яку заробітну платню одержить на фірмі сумісник за виконану роботу, якщо йому нараховано Sгрн., а податок становить 20%.
Вхідні дані. Ви вводите з клавіатури одне дійсне число S.
Вихідні дані. Ви виводите на екран одне дійсне число з двома знаками після коми (без округлення).
Приклад вхідних і вихідних даних
Вхід: 1000
Вихід: 800.00

Задача Cat. Одного разу кіт Леопольд на рибалці наловив N (1<= N <=100) риб. Прийшовши додому він ретельно їх зважив, пронумерував кожну рибу та записав результати до зошита. Допоможіть Леопольду знайти вагу найбільшої та найменшої рибини, та вагу всієї риби, яку зловив кіт. Вага рибини - ціле число, не більше 1000. Всі розрахунки не виходять за межі типу integer Turbo Pascal.
Технічні умови. Програма Cat читає з клавіатури кількість рибин, а далі вагу кожної рибини в порядку їх номерів. Всі числа в одному рядку через пропуск. Програма виводить на екран одним рядком через пропуск вагу найважчої та найлегшої рибини та сумарну вагу спійманих Леопольдом риб.

Приклад. Введення   5 2 3 5 7 8. Виведення  8 2 25


Задача Puh. Ведмедик Вінні-Пух тікає від бджіл по алеї, яка складається із товстих дерев, яких N (1<= N <=300). Кожне дерево має дупло певного діаметра D ( D >=0). Якщо діаметр дупла більший за діаметр черевця Вінні-Пуха, то ведмедик може заховатись в цьому дуплі. Діаметр черевця Вінні-Пуха – V ( V>0). У якому  першому за рахунком дереві він може заховатись? Скільки на алеї росте дерев, де може заховатись Вінні-Пух?
Технічні умови.  Програма Puh читає з клавіатури послідовність цілих чисел одним рядком через пропуск: N ,V, D1, D2 ,..., DN . Програма виводить на екран шукані велечини в указаній в умові послідовності. Якщо заховатися неможливо, програма виводить  0.

Приклад.  Введення 10 5 1 0 4 8 10 2 0 1 9 0.  Виведення 1 4 3
Приклад.  Введення  2 6 3 4. Виведення  0

Задача Multik. Заєць із відомого мультфільму втікає від Вовка по сходах довжиною N сходинок. Для того, щоб втекти, Зайцю потрібно сховатись за дверима, які знаходяться на останній сходинці. Вовк не може схопити зайця, якщо вони одночасно не знаходяться на 1 сходинці, або якщо Вовк не випереджає Зайця. Заєць за 1 крок може піднятись на 1 сходинку, а Вовк – на 2. На початку бігу Вовк знаходиться на 0-й сходинці, а  Заєць на К -ій (К >0 ) сходинці. Чи зможе Вовк схопити Зайця? Якщо Вовк і Заєць останнім кроком стають одночасно на останню сходинку, то Вовк схопить Зайця. Вовк та Заєць роблять кроки одночасно (синхронно).

Технічні умови.  Програма Мultik читає з клавіатури числа N і K через пропуск. Програма виводить на екран 1, якщо Вовк поласував Зайцем або 0, якщо залишився голодним.  Всі розрахунки не виходять за межі типу іnteger Turbo Pascal

Приклад.  Введення 10 7    Виведення 0
Приклад.   Введення 10 5    Виведення 1

Задача Petro. Петрик П'яточкін хоче дістати яблуко, яке висить на висоті N ( N >=1) метрів. Для цього йому потрібно зв'язати кілька жердин, довжини яких він знає. Таких жердин у нього М. (М >=1),  кожна має довжину Lі.  Яку найменшу кількість жердин йому потрібно зв'язати щоб дістати яблуко? Вважати, що жердини монтуються стик в стик, тобто при зв'язуванні жодний сантиметр жодної жердини не втрачається.

Технічні умови. Програма Petro читає з клавіатури рядок чисел через пропуск: N, M, L1 ,L2, ..., LM   Програма виводить єдине число - шукану величину. Якщо яблуко дістати неможливо, програма повинна вивести 0.

Приклад.    Введення 10 5 1 3 4 3 6  Виведення  2
Приклад.  Введення 10 5 1 1 1 1 1   Виведення  0

Задача Buratino. Буратіно має лише N золотих монет, які він отримав від Карабаса-Барабаса. Кіт та лисиця розповіли йому, що закопавши гроші на Полі чудес, за кожен урожай можна збирати їх у L разів більше. Для вирощування урожаю необхідно Т повних годин. Скільки монет зможе зібрати Буратіно у разі удачі за M годин ( M >= T ) ? Ті монети, які він закопав – зникають. Кожен раз Буратіно закопує всі наявні монети.

Технічні умови. Програма Buratino читає з клавітатури числа N, L, T, M одним рядком через пропуск. Програма виводить на екран єдине число число - шукану величину. Всі числа не більші 10000.

Приклад. Введення 10 2 5 10  Виведення 40






Задача  Djoz1. Під час громадянської війни 1861-1862 р.р між Північними та Південними Американськими Штатами невеликий загін "північних" під командою генерала Джозефуса потрапив в оточення. Було прийняте рішення прориватися поодинці. Але хто понесе прапор? За командую Джозефуса він і солдати стали в коло. Кожен отримав свій номер в порядку обходу кола. За командою кожен з солдатів "викинув" пальці. В сумі отримали число К. Рахувати завжди починали з солдата з найменшим номером в напрямку збільшення номерів по колу, відраховували К-го, він виходив з кола. Так робили доти, поки не залишився один солдат, який виніс прапор, а ми дізналися про цю задачу :-) 
Дано  N солдатів  у колі  і  число  k. Все відбувається за легендою.  Який солдат понесе прапор?

Технічні умови. Програма читає з клавіатури 2 натуральні числа N s К через пропуск. Кожне не більше 1000. Програма виводить на екран одне число - шукану величину.
Приклад.  Введення: 7 45   Виведення: 5


Задача  Djoz2. Під час громадянської війни 1861-1862 р.р між Північними та Південними Американськими Штатами невеликий загін "північних" під командою генерала Джозефуса потрапив в оточення. Було прийняте рішення прориватися поодинці. Але хто понесе прапор? За командую Джозефуса він і солдати стали в коло. Кожен отримав свій номер в порядку обходу кола. За командою кожен з солдатів "викинув" пальці. В сумі отримали число К. Рахувати  почали з солдата  з  номером 1 в напрямку збільшення номерів по колу, відраховували К-го, він вийшов з кола. Так робили доти, поки не залишився один солдат, який виніс прапор, а ми дізналися про цю задачу :-) 
Дано  N солдатів  у колі  і  число  k. Все відбувається за легендою.  Який солдат понесе прапор?

Технічні умови. Програма читає з клавіатури 2 натуральні числа N і К через пропуск. Кожне не більше 1000. Програма виводить на екран одне число - шукану величину.
Приклад.  Введення: 6 7  Виведення: 5

Задача DEMO_A.     На площині задано координати двох відрізків AB і CD. Знайти спільну частину проекцій цих відрізків на вісь абсцис.

Вхідні дані. Ви вводите з клавіатури 8 цілих чисел - координати точок  A, B, C, D. Кожне число не перевищує за абсолютною величиною 1000.
Вихідні дані.  Ви виводите на екран одне число - спільну частину проекцій. Якщо спільна частина - порожня множина, вивести -1, якщо це одна точка - вивести 0.

Приклад вхідних та вихідних даних
Вхід: 2 2 7 5 3 4 8 1
Вихід: 4

Задача Populy. Професор Стограмович та аспірант Наливайко купили квитки в швидкісний трамвай підвищеного  комфорту  "Телепеньки-Тюшки". Квитки мали номери від А до В і продавалися пасажирам підряд. Першим квитк купив Стограмович, останнім - Наливайко. Як тільки трамвай рушив, Стограмович, не бажаючи гаяти час (швидкісний трамвай долав цей маршрут довго) розпочав готувати Наливайка до захисту дисертації. Професор запропонував Наливайку дізнатися, яка цифра найчастіше буде використана, якщо виписати номери квитків пасажирів трамвая, але не всіх, а лише ті номери, що є простими числами. Наливайко дістав з рюбзака ноутбук і дуже швидко написав програму, що давала відповідь на це питання. Напишіть її і ви, якщо, як і Наливайко, знатимете, що (А<=B<=100 000).
Технічні умови. Програма читає з клавіатури два числа через пропуск. Програма виводить на екран єдине число- шукану величину.
Приклад.  Введення: 5 25 Виведення: 1




Задача Beads. Дано N<=100 намистинок. Спочатку вони не пофарбовані. Дозволено пофарбувати a намистинок в червоний колір, b  намитстинок - в синій та  c - в жовтий. Позначимо кожну червону намистинку цифрою 1, синю 2, а жовту 3.Тоді першим в лексикографічному порядку для N=6 a=2 b=1 c=3 ,буде намисто 112333. Вивести К-те (в вказаному порядку) намисто.
Технічні умови. Програма читає з клавіатури числа N,a,b,с,K через пропуск. Програма виводить на екран відповідь - послідовність цифр без пропусків.

ПрикладВведення 3 1 1 1 5  Виведення 312


Задача Value. Обчислити значення  функції  для заданого значення х:  
                  у=5х2 – 7, якщо х<=2;      
                  у = 1/(2х – 4), якщо  2< х<5;      
                  у=(х – 5)0,5, якщо х>=5.
Результат вивести з 3-ма знаками після коми.

Технічні умови. Із клавіатури вводиться одне дійсне число х, а виводиться дійсне значення у (із трьома знаками після коми).

Приклад.  Введення: 0   Виведення:  -7.000
Розв'язання.
program  value;
var
f,x: real;
k, p,t: boolean;
begin
   read(x);
   t:=((x>2)and(x<5));
   p:=(x<=2);
   k:=(x>=5);
if p=true then  f:=5*x*x -7;
if t=true then  f:=1/(2*x -4);
if k=true then  f:=sqrt(x -5);
   writeln(f:10:3);
end.



Задача Flowers.Оксанка назбирала v волошок та r ромашок. Дівчинка вирішила зробити букети так, щоб у  кожному обов’язково було p ромашок та b волошок. Скільком друзям дівчинка зможе подарувати квіткові композиції?

Технічні умови. Із клавіатури вводиться чотири цілих числа: v, r, p, b. На екран виводиться одне ціле число – кількість отриманих букетів.

Приклад. Введення:  45  23  4   9  Виведення: 5

Задача НitІnАrea. Дано коло радіусом r та точка з координатами (x, y). Вивести 1, якщо точка знаходиться всередині кола і в І або ІІІ чверті, 0 – в іншому випадку.

Технічні умови. Із клавіатури вводиться 3 цілих числа: r, x, y. На екран виводиться одне число – 0 або 1.

Приклад.  Введення: 5  1  1   Виведення: 1
Приклад.  Введення: 4  8  6    Виведення: 0

Задача ChessСells. Дано шахову дошку розмірами NxN (N<=100) та координати 2-ох клітинок (x1, y1) і (x2, y2), де 1-а координата – це номер рядка, 2-а – номер стовпця. Визначити, чи одного кольору задані клітинки. Вивести 1, якщо це правда, 0 – в іншому випадку.

Технічні умови. Із клавіатури водяться 5 цілих чисел: N, х1, у1, х2, у2. На екран виводиться одне число – 0 або 1.

Приклад. Введення: 10  1  1  2  2   Виведення: 1
Приклад.  Введення: 6  1  1  1  4   Виведення: 0







Задача Clockwork. При змащуванні годинникового механізму краплинка масла випадково потрапила на місце зачеплення двох шестерень, утворивши на них своєрідні мітки (див. малюнок). Через який найменший проміжок часу з моменту пуску годинникового механізму "мітки" знову співпадуть, якщо шестерні щосекунди повертаються на один зуб? Число зубів першої шестерні N1, другої – N2. (5≤N1, N2≤1000)
Описание: http://www.olymp.vinnica.ua/admin/modules/uploaded/2010/image001.jpgТехнічні умови: Програма читає з клавіатури числа N1 та N2, записані через пропуск. Програма виводить на екран в один рядок через пропуск три цілих числа – час, виражений в годинах, хвилинах та секундах.
Приклад.  Введення:    15  12   Виведення:  0  1  0
Приклад.     Введення:    59  67   Виведення:  1  5  53


Задача Square. Використовуючи тротуарну плитку, що має форму прямокутника з сторонами a х b см (a, b – цілі додатні числа, що не перевищують 1000), потрібно вимостити квадратну площадку мінімальних розмірів. Плитку можна викладати, орієнтуючи її лише в одному напрямку. Розрізати чи ламати плитку забороняється.Знайти сторону квадратної площадки та кількість плиток, необхідних для її будівництва.
 Технічні умови: Програма читає з клавіатури числа a та b, записані через пропуск. Програма виводить на екран в один рядок через пропуск два цілих числа – перше число  - довжина сторони квадратної площадки, друге – кількість тротуарних плиток.  
 Приклад:   Введення:  20  30   Виведення: 60  6


Задача Squares. Лист металу прямокутної форми розміром a х b см (a, b – цілі додатні числа, що не перевищують 1000) розрізають на однакові квадратні пластини так, щоб сторона квадрата дорівнювала цілому числу сантиметрів та була найбільшою з усіх можливих, крім того, при розрізанні не повинні утворюватись відходи. Знайти кількість квадратних пластин, що утворилися внаслідок розрізання та довжину сторони квадратної пластини.

Технічні умови: Програма читає з клавіатури числа a та b, записані через пропуск. Програма виводить на екран в один рядок через пропуск два цілих числа:  перше число- кількість квадратних пластин,  друге –  довжина сторони пластини.
 Приклади:  Введення:  6  8  Виведення: 12  2


Задача NewCircle2. Дано  послідовність  цілих чисел.  Відрізок послідовності утворюють числа, що йдуть в послідовності підряд. Знайти номери чисел, якими починається і закінчується  перший відрізок з максимальною сумою, а також цю суму.

Технічні умови. Програма читає спочатку кількість елементів послідовності, а потім саму цю послідовність. Всі числа в одному рядку, їх розділено пропусками. Гарантовано, що послідовність не порожня, і всі розрахунки можна вести в межах типу longint. Програма виводить  в один рядок 3 числа через пропуск - номера першого і останнього елемента шуканого відрізка і суму чисел відрізку

Приклад.  Введення 3 1 5 3  Виведення 1  3  9
Приклад.  Введення  7 1  2  3 -10 1 2 3   Виведення 1  3  6

Задача Більше_з_трьох (Lagest). Дано три цілих числа a, b i c. Знайти більше з трьох чисел.

Технічні умови. Не використовувати додаткової змінної.Числа всі різні.-32768<=a,b,c<=32678
Приклад.  Введення 1 5 0   Виведення  5





Задача BZD (Більше з двох). Дано 2 дійсних числа, кожне з яких по модулю не перевищує 107. Знайти більше з них

Технічні умови. Програма читає з клавіатури два дійсних числа і віводить на екран більше з них.
Приклад. Введення 1.3  2.56    Виведення 2.56

Задача KWDOD (квадрати не від’ємних чисел).  Дано три дійсних числа кожне з яких не перевищує  105 .  Піднесіть до квадрату ті з них, які не  від’ємні.

Технічні умови. Програма читає з клавіатури три дійсних числа. Програма виводть на екран квадрат кожного з чисел, якщо число невід’ємне, і саме число в іншому випадку. Всі числа розділено пропусками.
Приклад.   Введення 1.3  2.56  -5  Виведення  1.69 6.5536 -5

Задача Zamina.  Дано 2  цілих числа, кожне із яких не більше 2·109 по модулю. Якщо ці числа рівні, замінити обидва числа на 0, якщо ні - меньше замінити більшим, а більше залишити без  змін.
Технічні умови. Програма читає з пристрою стандартного введення (клавіатури) два цілих числа, і виводить на пристрій стандарного виведення (екран) два цілих числа - результат роботи програми. Числа розділено пропуском.

Приклад. Введення  1 1  Виведення 0 0

Приклад. Введення   2 3   Виведення 3 3

Задача  пошуку елементів у масиві


Задача POCSHUK+МАСИВУ. В одновимірному масиві, що складається із 50 дійсних чисел,  які задані випадковим чином від 0 до 10, визначити існування числа, що задається з клавіатури переписати всі елементи масиву на екран, і за знайденим числом у масиві вивести одержаний результат на екран.


program POCSHUK3;
const k=50; n=50;
var
   a:array[1..k] of integer;
  x,p:integer;
   i:integer;
begin
writeln('Множина випадкових чисел у масиві');
   for i:=1 to N do  begin  a[i]:=random(10);
    writeln('a[',i , ']:= ',a[i]);
end;
   writeln('Введіть число для пошуку його у масиві');
   readln(x);
  p:=-1; 
  for i:=1 to N do          
    if a[i]=x then  
    begin
      p:=i; 
      break;     
    end;
  if p<>-1 then 
    writeln('Число знайдено у масиві')
  else
      writeln(' Число не знайдено у масиві');
end.


Немає коментарів:

Дописати коментар