Реферат: Программирование решения задач

Задача №1

 

Написать программу для вычисления значения выражения:

                                                                                 2

/>                                                                  1+        

                                                           3+            4 

/>/>                                                                              6     

                                                                  5+                 

                                                                           7+x 

при различных значениях х.

Предусмотреть программнуюобработку значений х, при которых выражение не существует.

 

Решение

 

1.    Анализ введенных с клавиатурыисходных данных

2.    Условие, при котором х > 0

3.    Повторение предыдущей операции длякаждой функции

4.    Выведение условия для выхода

5.    Вывод результатов

 

programProject1;

{$APPTYPECONSOLE}

uses

  SysUtils;

var

  x,y,n:real;

begin

  repeat

   writeln('enter x');

    readln(x);

    if (x+7)=0then writeln('resheniy net') else

      if(5+6/(7+x))=0 then writeln('resheniy net') else

        if(3+4/(5+6/(7+x)))=0 then writeln('resheniy net')

          else

   y:=1+2/(3+4/(5+6/(7+x)));

   writeln('y=',y:1:10);

   writeln('dly vuhoda nagmite 0, esli net to 1');

    readln(n);

    if n=0then break

  until false

end.

/>

Рис.1. Результаты работы программы  для задачи 1

 


Задача№2

Шахматная доска содержит 8х8клеток. Горизонтали и вертикали обозначаются цифрами 1-8. Написать программу,проверяющую, можно ли с первой заданной клетки попасть на вторую одним ходомчерного слона.

 

Решение

 

1.        Анализ введенныхс клавиатуры исходных данных для первой клетки

2.        Условие для а1> 8 или  в1 > 8.

3.        Анализ введенныхс клавиатуры исходных данных для второй клетки

4.        Условие для abs (а2-а1).

5.        Выведение условиядля выхода

6.        Вывод результатов

 

Для решения задачи введемкоординаты первой клетки, притом, что они должны быть меньше восьми; затемкоординаты второй клетки (они также должны быть меньше восьми). Если разностькоординат первой клетки равна разности  координат второй клетки, то значит спервой клетки можно попасть на вторую одним ходом черного слона, есликоординаты не равны, то нельзя. Запишем результат.

program Project2;

{$APPTYPECONSOLE}

uses

  SysUtils;

var

 a1,a2,b1,b2:integer;

  c:real;

begin

  repeat

   writeln('Enter koordinati 1-oy kletki ot 1 do 8');

   readln(a1,b1);

    if(a1>8) or (b1>8) then writeln('Nelsya enter eto chislo, enter other');

   writeln('Enter koordinati 2-oy kletki ot 1 do 8');

   readln(a2,b2);

    ifabs(a2-a1)=abs(b2-b1) then writeln('mogno') else writeln('nelsya');

    readln;

   writeln('dly vuhoda nagmite 0, esli prodolgit to 1');

    readln(c);

    if c=0then break;

  until false

end.

/>

Рис.2.Результаты рабаты программы для задачи 2

Задача№3

Татьяна Ларина, читаяочередной французский роман, подсчитала сумму номеров прочитанных страниц.Написать программу, определяющую номер последней прочитанной страницы.

Решение

 

1.        Анализ введенныхс клавиатуры исходных данных

2.        Решение с помощьюарифметической прогрессии

3.        Выведение условиядля выхода

4.        Вывод результатов

programProject2;

{$APPTYPECONSOLE}

uses

  SysUtils;

var

  sum,i,n:integer;

begin

  write('entern:');

  readln(n);

  i:=0;

  repeat

    inc(i);

   sum:=sum+i;

  untilsum>=n;

 writeln('otvet',i);

  readln(i);

end.


/>

Рис.3. Результаты работы программы для задачи 3

 

Задача№4

Найти все двузначныечисла, сумма цифр которых не меняется при умножении на 2,3,4,5,6,7,8,9.

Решение

 

Для написания этойпрограммы воспользуемся функцией sumc (умножениеI на любое однозначное число ). Дляпроверки кратности удобно использовать операцию mod, позволяющую определить остаток при делении целыхчисел. Так как числа двузначные, то цикл будет от 10 до 99.

program Project4;

//usesSysUtils;

var

  sum, i:integer;

functionsumc(val: integer): integer;

var

  x: integer;

begin

  x:= 0;

  repeat

    x := x +val mod 10;

    val := valdiv 10;

  until val =0;

  sumc := x;

end;

begin

  for i := 10to 99 do

  begin

    sum :=sumc(i);

    ifsumc(i*2) = sum then writeln('2: ', i);

    ifsumc(i*3) = sum then writeln('3: ', i);

    ifsumc(i*4) = sum then writeln('4: ', i);

    ifsumc(i*5) = sum then writeln('5: ', i);

    ifsumc(i*6) = sum then writeln('6: ', i);

    ifsumc(i*7) = sum then writeln('7: ', i);

    ifsumc(i*8) = sum then writeln('8: ', i);

    ifsumc(i*9) = sum then writeln('9: ', i);

ReadLn;

end.


/>

Рис.4. Результаты работы программы для задачи 4

 

Задача№5

 

Одномерный массив,содержащий N элементов, состоит из нулей, единици двоек, расположенных в произвольном порядке (заполнение массива-случайнымобразом). Преобразовать массив так, чтобы вначале расположились все двойки,затем все нули и, наконец, все единицы.

 

Решение

programProject5;

//usesSysUtils;

const

  n = 20;

var

  arr: array[1..n] of byte;

  tmp, i, j, k: byte;

begin

  randomize;

  for i := 1to n do arr[i] := random(3);

  for i := 1to n do

    for j := ito n do

      ifarr[i] < arr[j] then

      begin

        tmp :=arr[i];

        arr[i]:= arr[j];

        arr[j]:= tmp;

      end;

  for i := 1to n do if arr[i] = 1 then

  begin

    k :=i;

    break;

  end;

  for i := kto n do

    for j := ito n do

      ifarr[i] > arr[j] then

      begin

        tmp :=arr[i];

        arr[i]:= arr[j];

        arr[j]:= tmp;

      end;

  for i := 1to n do write(arr[i],' ');

  ReadLn;

end.

/> 

Рис.5. Результаты работы программы для задачи 5

Задача№6

 

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

 

Решение

programProject6;

//usesSysUtils;

const

  a = 20;

var

  arr: array[1..5, 1..5] of byte;

  i, j: byte;

begin

  randomize;

  for i := 1to 5 do

    for j := 1to 5 do arr[i, j] := 0;

  for i := 2to 5 do

    for j := 1to i-1 do arr[i, j] := random(50)+1;

  for i := 1to 5 do

    for j := 1to 5 do if (arr[i, j] <= a) and (arr[i, j]<>0) then writeln(i, ' ', j,' ', arr[i, j]);

  ReadLn;

end.

/>

Рис.6. Результаты работы программы для задачи 6

Задача№7

 

Удалить ведущие иконечные пробелы в строке.

Решение

 

1.  Анализ введенных с клавиатурыисходных данных

2.  Применение функции trim

3.   Выведение условия для выхода

4. Вывод результатов

Для решения этой задачи используемстроковый тип данных. Для удаления пробелов воспользуемся функцией trim(удаляет все ведущие и конечныепробелы). Запишем результат.

programProject7;

{$APPTYPECONSOLE}

uses

  SysUtils;

var

  s:string;Index, Count:integer;

   n:real;

begin

   repeat

    s:=('enter stroku s klaviaturi');

    readln(s);

    s:=trim(s);

    writeln(s);

    write('dly vuhoda nagmite 0, esli prodolgit to 1');

    readln(n);

     if n=0then break

   until false

end.


/>

Рис.7.Результаты работы программы для задачи 7

Задача№8

 

Написать программу дляудаления всех строк двумерного массива с отрицательными элементами.

 

Решение

 

Для решения задачииспользуем функцию haveotr, а такжепроцедуру delete(удаляет из строки символы, начиная спозиции Index). Отметим, что haveotr=ложь, но если массив от 1 до 5 <0, то в этом случае  haveotr=правда.

programProject8;

//usesSysUtils;

var

  arr: array[1..5, 1..5] of integer;

  i, j: byte;

functionhaveotr(n: byte): boolean;

begin

  haveotr :=false;

  for j := 1to 5 do if arr[n, j] < 0 then haveotr := true;

end;

proceduredel(n: byte);

begin

  for j := 1to 5 do arr[n, j] ;

end;

begin

 repeat

  randomize;

  for i := 1to 5 do

    for j := 1to 5 do arr[i, j] := random(5)-1;

  for i := 1to 5 do

    ifhaveotr(i) then del(i);

  until false

end.

Задача№9

Даны два непустыхмножества прописных и строчных букв. Написать программу, которая выводитперечисленные множества в алфавитном порядке.

 

Решение

 

Для решения задачи вводимдва непустых множества (случайным образом вдвоём буквы).N – число постоянное и равно 20.Вычисляем с помощью to length. Записываем результат.

program Project9;

//uses SysUtils;

const

  n = 20;

var

  tmp: char;

  pr, st:string;

  i, j: byte;

  a:real;

begin

 repeat

 writeln('enter st');

  readln(st);

  for i := 1to length(st) do

    for j := ito length(st) do

      if st[i]> st[j] then

      begin

        tmp :=st[i];

        st[i]:= st[j];

        st[j]:= tmp;

      end;

 writeln('enter pr');

  readln(pr);

    for i := 1to length(pr) do

    for j := ito length(pr) do

      if pr[i]> pr[j] then

      begin

        tmp :=pr[i];

        pr[i]:= pr[j];

        pr[j]:= tmp;

      end;

  writeln(st);

  writeln(pr);

  write('dlyvuhoda nagmite 0, esli prodolgit to 1');

  readln(a);

  if a=0 thenbreak

 until false

end.

/>

Рис.9. Результаты работы программы для задачи 9

Задача№10

В файле целых чиселзаменить все четные натуральные числа их квадратами.

 

Решение

 

programProject1;

//usesSysUtils;

var

  n, i, tmp:integer;

  Fin, Fout:text;

begin

 assignfile(Fin, 'in.txt');

  ReSet(Fin);

 assignfile(Fout, 'out.txt');

 ReWrite(Fout);

  readln(fin,n);

  for i := 1to n do

  begin

    read(fin,tmp);

    if tmp mod2 = 0 then write(fout, tmp*tmp, ' ')

    elsewrite(fout, tmp, ' ');

  end;

 closeFile(Fin);

 closeFile(Fout);

end.

еще рефераты
Еще работы по информатике, программированию