Программирование на Паскаль

Автор работы: Пользователь скрыл имя, 30 Октября 2013 в 18:05, лабораторная работа

Описание работы

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

Файлы: 1 файл

0083922_A1F38_zadachi_zadachi_s_resheniyami_v_srede_turbopascal.doc

— 138.00 Кб (Скачать файл)

Часто при решении задач приходится многократно вычислять значения по одним и тем же зависимостям для различных значений входящих в их величины.

Такие многократно повторяемые  участки вычислительного процесса называются циклами.

Использование циклов позволяет существенно сократить объем схемы алгоритма и длину соответствующей ей программы. Различают циклы с заданным и неизвестным числом повторений. С заданным числом повторений - цикл со счетчиком. С неизвестным числом повторений - цикл с предусловием, цикл с постусловием.

Для организации цикла необходимо выполнить следующие действия:

  • Задать перед циклом начальное значение переменной, изменяющейся в цикле.
  • Изменять переменную перед каждым новым повторением цикла проверять условие окончания или повторения цикла.
  • Управлять циклом, т.е. переходить к его началу, если он не закончен, или выходить из него по окончанию.

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

 

Формат записи:

while Условие выполнения цикла do

    begin

      {Инструкции}

    end;

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

 

Формат записи:

repeat

     {Инструкции}

until Условие выхода из цикла

 

Алгоритм цикла со счетчиком - For. Цикл со счетчиком или цикл с параметром является частным случаем цикла с предусловием. Отличие состоит в том, что в цикле со счетчиком задаются границы диапазона, по которым определяется количество повторений тела цикла.

 

Формат записи:  
Вариант 1 (с увеличением счетчика)

for Счетчик := НачальноеЗначение to КонечноеЗначение do  

       begin

           {Инструкции}

       end;

 

 
Вариант 2 (с уменьшением счетчика)

for Счетчик := КонечноеЗначение downto НачальноеЗначение do  

       begin

           {Инструкции}

       end;

 

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

Задачи


1.Дано два числа. Определить какое число имеет больше делителей.

program zadacha_1;

  uses crt;

  var

   a,b:integer; {два числа}

   k1, k2: integer; {количество делителей чисел}

   i: integer; {переменная счетчик}

  begin

   clrscr;

   writeln('Введите два числа');

   readln(a,b);

    for i:=1 to a do

     begin

      if a mod i=0 then k1:=k1+1;

     end;

     writeln('Количество  делителей числа ',a,' равно ',k1);

    for i:=1 to b do

     begin

      if b mod i=0 then k2:=k2+1;

    end;

    writeln('Количество  делителей числа ',b,' равно ',k2);

     if k1>k2 then

      begin

       writeln('Число ',a,' имеет больше делителей')

      end

       else

        begin

         writeln('Число ',b,' имеет больше делителей')

        end;

        readln;

   end.

2.В возрастающем порядке напечатать все целые числа из диапазона 1..10000, представимые в виде n2+m2, где n,m > =0

program zadacha_2;

uses crt;

  var

   k,i,m,n: longint;

    begin

     clrscr;

       for i:=1 to 20 do

        for n:=1 to i do

         for m:=1 to i do

          begin

           if i=sqr(n)+sqr(m) then

            begin

             writeln (i,'=',sqr(n),'+',sqr(m));

            end;

          end;

         readln;

     end.

 

3.Вычислить k-количество точек с целочисленными координатами, попадающих в круг радиуса R (R > 0).

program zadacha_3;

uses crt;

  var

   k,r,y,x: integer;

    begin

     clrscr;

      writeln ('vvedite radius');

      readln (r);

       for x:=0 to r do

        for y:=0 to r do

         begin

          if r>sqrt(sqr(x)+sqr(y)) then

           begin

            k:=k+1;

           end;

         end;

          k:=((4*k)-(6*(r-1)))-1;

          writeln ('k=',k);

          readln;

    end.

4. Найти количество четырехзначных чисел, делящихся на 23 и на последнюю свою цифру.

program zadacha_4;

uses crt;

var

  s, a, b, c, d, g: integer;

   begin

   clrscr;

   s:= 0; a:= 1;

    while a<= 9 do begin

     b:=0;           

     while b<= 9 do begin

     c:=0;            

     while c<= 9 do begin

     d:=0;             

    while d<= 9 do

      begin

        g:= 1000*a + 100*b + 10*c + d;

          if (g mod 23 = 0) and (g mod d = 0) then

            begin

              s:= s + 1;

               writeln (g);

             end;

                d:= d + 1;

            end;

               c:= c + 1;

               end;

               b:= b + 1;

               end;

               a:= a + 1;

               end;

                writeln (s);

                 readln;

                 end.

5. Определить пары натуральных чисел a < 100 и b < 100, произведение которых в 10 раз больше их суммы. Сколько таких пар?

program zadacha_5;

uses crt;

   var

    a, b, s, p, k : integer;

  begin

    clrccr;

     k:=0;

       for a:=1 to 100 do

       for b:=1 to100 do

         begin

           s:= a + b; p:= a*b;

             if p=10*s then

               begin

                  writeln (‘a=’,a,’b=’,b);

                  k:=k+1;

                  b:=b+1;

              end;

         end;

      a:=a+1;

      writeln(k); readln;

  end.

6. Совершенным числом называется число, равное сумме всех делителей, меньших, чем оно само. Например, 28=1+2+4+7+14. Составить программу, которая находит все совершенные числа в пределах некоторого числа. (вариант 1)

program zadacha_6;

uses crt;

var

    n: integer; {число в пределах которых будут находятся совершенные числа}

    d: integer;  {делители}

    s: integer;  {сумма делителей}

    i: integer;  {искомые числа}

      begin

       clrscr;

         writeln ('введите число в пределах которого будут находиться совершенные числа');

         readln (n);

            for i:= 2 to n-1 do

                s:= 1;

                  for d:= 2 to i-1 do

                    begin

                      if i mod d = 0  then

                         begin

                         s:= s + d;

                         d:= d + 1;

                         end;

                         if s = i then begin

                                  writeln (i,'совершенное');

                                  end;

                     end;

       end.

6. Составить программу, которая находит все совершенные числа в пределах от 2 до 10000. (вариант 2)

program zadacha_6;                                                                

uses crt;                                                                   

  var                                                                        

   i,j,k: integer;                                                        

   s,s1: integer;                                                       

    begin                                                                 

     clrscr;                                                               

      for i:=2 to 10000 do                                        

       begin                                                              

        s:=0;                                                              

        for j:=1 to i-1 do                                           

        begin                                                               

          if i mod j=0 then                                           

           begin                                                            

            s:=s+j;                                                          

           end;                                                              

         end;                                                                

          if  (s=i) then                                                  

             begin                                                          

              writeln ('Число ',i,' совершенное '); 

              end;                                                           

          end;                                                               

         readln;                                                            

      end.                                                                   

 

7. Найти максимальное из натуральных чисел, не превышающих 5000, которое нацело делится на 39.

program zadacha_7;

uses crt;

  var

   i,b : integer     {числа}

   max : integer   {максимальное число}

begin

   clrscr;

     max := 39;

       for i := 1 to 5000 do

        begin

          if i mod 39 = 0 then

             b := i;

               if b > max then

                 max := b;

       end;

    writeln (‘max число= ‘,max);

    readln;

end.

8. Найдите двузначное число, равное квадрату числа его единиц , сложенному с кубом числа его десятков.

program zadacha_8;

uses crt;

  var

   a,b,kb,q,kv:integer;

     begin

       clrscr;

        a:=1;

          while a<=9 do

            begin

              for b:=0 to 9 do

               begin

                 kv:=b*b;

                 kb:=a*a*a;

                 q:=10*a+b;

                   if q = kv + kb then

                     write ('искомое двузначное число', q );

                     b:=b+1 ;

               end ;

                 a:=a+1;

          end;

     readln;

end.

9. Найти все простые числа - близнецы (пример: 3 и 5, 5 и 7 и т.д.) в интервале от 3 до 100.

program zadacha_9;

uses crt;

  var

   i,j,q,j1 : integer;  {Переменная счётчик}

   k,k1: integer;

     begin

       clrscr;

        for i:=3 to 100 do {проверяемые числа}

         begin

          k:=0;

           for j:=1 to i do

            begin

             if (i mod j)=0 then

               begin

                k:=k+1;

               end;

            end;

             q:=i+2;

             k1:=0;

              for j1:=1 to q do

               begin

                if (q mod j1)=0 then

                 begin

                  k1:=k1+1;

                 end;

               end;

                if (k=2) and (k1=2) then

                 begin

                  writeln ('числа ',i, ' и ',i+2, ' близнецы');

                 end;

             end;  readln;

   end.

10. Ввести шесть чисел и найти произведение чисел больших 5

program zadacha_10;

  uses crt;

  var

   x,p: integer;

   i: integer; 

begin                                                                      

   clrscr;

    p:=1;

    for i:=1 to 6 do

     begin

      writeln('Введите число');  

      readln(x);

       if x>5 then 

        begin 

         p:=p*x;  

        end; 

      end;  

     writeln('p=',p); 

     readln; 

  end.

11. Даны целые числа от 1 до n. Посчитать среднее арифметическое этих чисел, если оно превышает 17, то на экран вывести число на 5 меньше среднего арифметического. В противном случае на экран вывести произведение этих чисел.

program zadacha_11;

var                                                                  

      i: integer; {счетчик}                                                  

      n: integer; {количество  чисел}                                         

      s: integer; {сумма чисел}                                              

      sr: real; {среднее  арифметическое}                                     

      p: integer; {произведение}                                             

      msr: real; {величина на 5 меньше ср. арифметического}                 

      begin                                                                  

        writeln ('введите количество чисел ряда');                          

        readln (n);                                                          

      s:=0;  p:=1;                                                         

         for i:=1 to n do                                                    

          begin                                                              

           s:=s+i;                                                           

          sr:=s/n;                                                          

           p:=p*i;                                                           

           end;                                                              

               if sr>17 then                                                 

             begin                                                           

               msr:=sr-5; 

               writeln ('величина на 5 меньше среднего  арифметического', '  ',);

               readln;                                                       

Информация о работе Программирование на Паскаль