Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal] Задачи на вычисление


Автор: Koschei 10.11.2006, 19:43
Помогите решить задачи на Паскале,хоть несколько!Осталось решить всего 9 задач!!
примерное решение 9,10,11 выложу,помогите их оптимизировать чтолиsmile,а то как то коряво все получилось



Автор: Alexeis 10.11.2006, 21:14

M
alexeis1
Модератор: Название темы должно отражать ее суть!

Автор: Koschei 10.11.2006, 21:30
так как ее по другому то назвать?теперь я ничего исправить не могу..

Автор: mr.Anderson 10.11.2006, 21:44
Могу нарисовать код на первые две...

Первая ( про функции )
Код

Program Number1;
Uses CRT;
Var x,y: Integer;
Begin

 ClrScr;

 Write( "Enter X: " );
  ReadLn( x );

 If( x < 0 ) Then
  y := Sqr( x ) + 7
 Else If( x = 0 ) Then
  y := 0
 Else
  y := Sqr( x ) * x + 9;

 Write( "F(x) = ", y );

 Write( #13#10 + #13#10 + "Press any key..." );
 Repeat
 Until KeyPressed;

End.

Вторая
Код

Program Number2;
Uses CRT;
Var m,n,i,j: Integer;
Begin

 ClrScr;

 Write( "Enter M and N: " );
  ReadLn( m,n );

 If( m > n ) Then 
 Begin
  i := n;
  j := m;
 End
 Else
 Begin
  i := m;
  j := n;
 End;

 For( i := i; i < j; i++ )
  If( i mod 2 = 0 ) Then
   Write( i, " " );

 Write( #13#10 + #13#10 + "Press any key..." );
 Repeat
 Until KeyPressed;

End.

Код не проверял, посему не ручаюсь за правильность хотя наврать не должен был.
А чего ты, друг, так поздно спохватился? smile 

Остальные задачки решать не стал. Если сегодня еще будет время, то сделаю еще пару.

Автор: Alexeis 10.11.2006, 22:06
Цитата(Koschei @  10.11.2006,  21:30 Найти цитируемый пост)
так как ее по другому то назвать?

Если размещать их по одной, то назвать будет несложно.
А если внимательно прочитать правила?
Цитата

Если ты ошибся при вводе названия темы, то просто отправь письмо любому из модераторов раздела (через PM или оставь report). Мы обязательно его исправим.

Автор: Koschei 11.11.2006, 07:03
sim7, 
спасибо задачи работают!
Цитата(sim7 @  10.11.2006,  21:44 Найти цитируемый пост)
А чего ты, друг, так поздно спохватился? smile

Привычка змеелова тянуть до последнего smile 

Автор: Koschei 30.11.2006, 20:39
вот решение 9,10,11 задачи!помогите расписать чего в каждом шаге происходит;)как говорится как можно более подробно.
9.
Код

program pr9;
const n=5;
var a:array[1..n] of integer;
    i,j:integer;
procedure search;
          begin
          if a[i]>a[1] then begin
                           a[1]:=a[i];
                           j:=i;
          end;
          end;
begin
     for i:=1 to n do begin
         write('Vvedite ',i,'-iy element');
         readln(a[i]);
     end;
     for i:=2 to n do search;
     writeln('Maksimalniy element c nomerom ',j,' = ',a[1]);
end.

10.
Код

program pr10;
uses crt;
const n=10;
var sw,i,j:integer;
    a:array[1..n,1..n] of integer;
procedure swap;
begin
     sw:=a[i,j];
     a[i,j]:=a[j,i];
     a[j,i]:=sw;
end;
begin
clrscr;
randomize;
writeln;
for i:=1 to n do begin
    for j:=1 to n do begin
        a[i,j]:=random(9);
        write(a[i,j],'');
    end;
    writeln;
end;
writeln;
for i:=2 to n do begin
    for j:=1 to i-1 do begin
        swap;
    end;
end;
for i:=1 to n do begin
    for j:=1 to n do write(a[i,j]);
    writeln;
    end;
end.

11.
Код

program pr11;
uses crt;
const n=5;
var i,j,u:integer;
    a,b,c:array[1..n,1..n] of real;
function calcA:real;
begin
     calcA:=(i-j)/(i+j);
end;
function calcB:real;
begin
     calcB:=i*j/(2*i+j);
end;
begin
clrscr;
for i:= 1 to n do begin
    for j:=1 to n do begin
        a[i,j]:=calcA;
        b[i,j]:=calcB;
        write(a[i,j]:6:2);
    end;
    writeln;
    writeln;
end;
writeln;
writeln;
for i:= 1 to n do begin
    for j:=1 to n do begin
        write(b[i,j]:6:2);
    end;
    writeln;
    writeln;
end;
writeln;
writeln;
for i:=1 to n do begin
    for j:=1 to n do begin
        for u:=1 to n do c[i,j]:=c[i,j]+a[i,u]*b[u,j];
        write(c[i,j]:6:2);
    end;
    writeln;
    writeln;
end;
end.


также помогите дорешать оставшиеся задачи,буду признателе и благодарен.


M
alexeis1
Модератор: не забывайте выделять код!

Автор: mr.Anderson 30.11.2006, 21:00
В смысле расставить комментарии по коду, что ль? Пожалуйста, вот для 9 задачи.
Код

program pr9; {название программы}
const n=5; {объявление целочисленной константы}
var a:array[1..n] of integer; {объявление массива из 5 элементов целого типа}
    i,j:integer; {две переменные целого типа}
procedure search; {начало процедуры SEARCH}
          begin
          if a[i]>a[1] then begin {если текущий элемент больше первого}
                           a[1]:=a[i]; {первому элементу присвоить текущий элемент}
                           j:=i; {запомнить номер текущего элемента в переменной}
          end;
          end;
begin
     for i:=1 to n do begin {цикл от 1 до 5 по массиву}
         write('Vvedite ',i,'-iy element'); {выводим приглашение}
         readln(a[i]); {вводим в массив текущий элемент}
     end;
     for i:=2 to n do search; {цикл с 2 до 5 по массиву. В цикле работает SEARCH.}
     writeln('Maksimalniy element c nomerom ',j,' = ',a[1]); {выводим макс. элемент и его номер}
end.

Только этот же код можно проще написать. Без процедур, Или надо обязательно с ними?

Добавлено @ 21:07 
Для задачи 10:
Код

program pr10; {название программы}
uses crt; {подключение модуля CRT}
const n=10; {объявление целочисленной константы}
var sw,i,j:integer; {три переменных целого типа}
    a:array[1..n,1..n] of integer; {двумерный массив 10х10}
procedure swap; {процедура, меняющая элементы массива местами}
begin
     sw:=a[i,j]; {получаем текущий элемент}
     a[i,j]:=a[j,i]; {текущему элементу присваиваем следующий}
     a[j,i]:=sw; {следующему присваиваем текущий}
end;
begin
clrscr; {очищаем экран}
randomize; {устанавливаем датчик случайных чисел}
writeln; {выводим пустую строку}
for i:=1 to n do begin {цикл по столбцам массива}
    for j:=1 to n do begin {цикл по строкам массива}
        a[i,j]:=random(9); {в текущий элемент вводим случайное число от 0 до 9}
        write(a[i,j],''); {выводим текущий элемент}
    end;
    writeln; {выводим пустую строку}
end;
writeln; {еще пустая строка}
for i:=2 to n do begin {цикл по столбцам от 2}
    for j:=1 to i-1 do begin {цикл от 1 до i-1}
        swap; {меняем элементы местами}
    end;
end;
for i:=1 to n do begin {цикл по массиву для вывода элементов}
    for j:=1 to n do write(a[i,j]);
    writeln;
    end;
end.


Добавлено @ 21:15 
B для задачи 11:
Код

program pr11; {название}
uses crt; {подключение модуля CRT}
const n=5; {целочисленная константа}
var i,j,u:integer; {три переменные целого типа}
    a,b,c:array[1..n,1..n] of real; {три двумерных массива типа Real, т.е. с числами с плавающей точкой}
function calcA:real; {функция, возвращающая результат типа Real}
begin
     calcA:=(i-j)/(i+j); {возвращаем частное от разности и суммы элементов массива}
end;
function calcB:real; {функция типа Real}
begin
     calcB:=i*j/(2*i+j); {возвращаем произведение I на частное J от суммы 2I и J}
end;
begin
clrscr; {очистка экрана}
for i:= 1 to n do begin {пробегаемся по массивам A и B}
    for j:=1 to n do begin
        a[i,j]:=calcA; {применяем функции}
        b[i,j]:=calcB;
        write(a[i,j]:6:2); {форматированно выводим текущий элемент}
    end;
    writeln; {пара пустых строк}
    writeln;
end;
writeln; {то же самое}
writeln;
for i:= 1 to n do begin {пробег по массиву B}
    for j:=1 to n do begin
        write(b[i,j]:6:2); {вывод текущего элемента (странно, зачем снова?)}
    end;
    writeln; {пара пустых строк}
    writeln;
end;
writeln; {то же самое}
writeln;
for i:=1 to n do begin {пробег по массиву C}
    for j:=1 to n do begin
        for u:=1 to n do c[i,j]:=c[i,j]+a[i,u]*b[u,j]; {вложенный цикл, оперирующий с элементами массива}
        write(c[i,j]:6:2); {вывод текущего элемента}
    end;
    writeln; {пара пустых строк}
    writeln;
end;
end.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)