Пятница, 10.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Помогите переделать программы для решения других задач.
VirtualPCДата: Понедельник, 22.12.2008, 03:21 | Сообщение # 1
Новичок
Группа: Пользователи
Сообщений: 1
Репутация: 0
Замечания: 0%
Статус: Offline
Есть несколько программ на Паскале. Возникла потребность их переделать под решение других задач. Пробовал переделать, но не все в них понимаю.

1. 2 способа.

Code
При помощи FOR

Program P1;
uses crt;
var x,r,s,sv,f,c:real;
      i,j:integer;
begin clrscr;

Writeln('Аргумент: X=0,29');
       x:=0.29; s:=0; f:=2;
for j:=4 to 12 do begin     
      c:=1;
      Sv:=0;
for i:=1 to 10 do begin     
      c:=c*x;                
      f:=(i+2)*f;
      if odd(i) then
      r:=(sqrt(i)*ln(x+1))/((sqrt(j)+f)) else       
      r:= (-1)*(sqrt(i)*ln(x+1))/((sqrt(j)+f));     
      Sv:=Sv+r;               
      writeln('Внутренняя сумма S[',i,']=',SV);
end;                            
      s:=s+sv;                   
      writeln('Внешняя сумма S[',j,']=',S);

end;                    
      writeln('Общая сумма S=',S:12:6);
      readln;     
end.

При помощи WHILE

Program P2;
uses crt;
var x,r,s,sv,f,c:real;
      i,j:integer;
begin clrscr;

Writeln('Аргумент: X=0,29');
       x:=0.29; s:=0; f:=2; j:=4;   
while (j<=12) do begin     
      c:=1;
      Sv:=0;
While (i<=10) do begin     
      c:=c*x;                 
      f:=(i+2)*f;
      if odd(i) then
      r:=(sqrt(i)*ln(x+1))/((sqrt(j)+f)) else       
      r:= (-1)*(sqrt(i)*ln(x+1))/((sqrt(j)+f));     
      Sv:=Sv+r;               
      i:=i+1;
      writeln('Внутренняя сумма S[',i,']=',SV);
end;                            
      s:=s+sv;                   
      writeln('Внешняя сумма S[',j,']=',S);
      j:=j+1;
end;                      
       
      writeln('Общая сумма S=',S:12:6);
      
      readln;     
end.

Изменить нужно для решения:

(где 0.63 это переменная Х, а пример - общий член ряда)

Добавлено (21.12.2008, 20:21)
---------------------------------------------
2.

Code
I. Сумма бесконечного ряда
program P1;
uses crt;
var i:integer;
        M,S:real;
const  x =1.2;
            e =5*(1E-5);
            pi=3.1415;
function fact(n:integer):longint;
var F:longint;
         k:integer;
begin   
F:=1;
for k:=1 to n do F:=F*k;   
fact:=F;   
end;   
function rowm(a:integer;b:real):real;
begin   
if odd(a) then rowm:=(-1)*sqr(ln(x+a))/fact(2*a+1)
{"a" - непар.}
else rowm:= sqr(ln(x+a))/fact(2*a+1) {"a" - пар.}
end;   
begin clrscr;

writeln('Аргумент: X=1.2');
writeln('Точность: е=5*(1E-5)');
i:=1;
S:=0;
M:=rowm(i,x);
while abs(M) >= e do begin   
        S:=S+M;   
        writeln('    Член = ',M:20:10,'    Сумма  = ',S:20:10);
        i:=i+1;   
        M:=rowm(i,x);
end;   
      
writeln(' Общая сумма = ',S:20:10);   
writeln
writeln
readln;
end.   

II. Обработка массива

program P2;
uses crt;
const m = 6;
         n = 6;
type matr = array [1..m, 1..n] of integer;
var v:matr;
        i,j:integer;
procedure inputarr(var a:matr);   
var c:byte;
      i,j:integer;
begin   
writeln('  Процедура ввода матрицы');
writeln('  Выберите вариант ввода:');
writeln('    1:Случайные числа');
writeln('    2:Ввод с клавиатуры');
readln(c);
case c of
1: begin randomize;
for i:=1 to m do
        for j:=1 to n do
        a[i,j]:=random(100);   
end;
2: begin   
        for i:=1 to m do
        for j:=1 to n do
        begin
         write('Введите a[',i,',',j,']: ');
         readln(a[i,j]);
        end;
end;
end;
end;   
procedure obrab(a:matr);   
var sum,i,j:integer;
begin   
    sum:=0;
      
writeln('  Сумма элементов главной и побочной диагонали:');
for i:=1 to m do
for j:=1 to n do
sum:=sum+a[i,i] +a[n-j+1,j];
writeln('',sum:12);   
    end;   
begin clrscr;

inputarr(v);    
writeln(' Матрица:');
for i:= 1 to m do begin
        for j:= 1 to n do
          write(v[i, j]:3);   
       writeln;
             end;
      writeln;
    obrab(v);   
readln;   
end.   

Изменить нужно для решения:
Задана матрица:

Найти ряди с наибольшей и наименьшей суммой элементов. Распечатать найденные ряды и суммы.

3.

Code
program P1;
uses crt;
type mas=array[1..4,1..4] of integer;
const b:mas=((1,2,3,4),(5,6,7,8),(9,10,11,12),(13,14,15,16));
var c,i,j:integer;
       a:mas;   
procedure showmatrix(m:mas);   
begin   
    for i:= 1 to 4 do begin
        for j:= 1 to 4 do
          write(m[i, j]:3);
       writeln;
             end;
end;   
begin clrscr;
writeln('  Выберите вариант заполнения матрицы:');
writeln('    1: Как константа');
writeln('    2: Случайные числа');
writeln('    3: Ввод с клавиатуры');
readln(c);
case c of
1: begin   
for i:=1 to 4 do
        for j:=1 to 4 do
        a[i,j]:=b[i,j];
end;
2: begin randomize;   
for i:=1 to 4 do
        for j:=1 to 4 do
        a[i,j]:=random(100);   
end;
3: begin   
        for i:=1 to 4 do
        for j:=1 to 4 do
        begin
         write('Введите a[',i,',',j,']: ');
         readln(a[i,j]);   
        end;
end;
end;
writeln('  Матрица имеет вид:');
showmatrix(a);
for i:=1 to 4 do
for j:=1 to 4 do
begin   
c:=a[i,1];   
a[i,1]:=a[5-j,j];   
a[5-j,j]:=c;   
    end;
writeln('  Преображенная матрица имеет вид:');
showmatrix(a);   
readln;   
end.   

Изменить нужно для решения:
Задана матрица:

Нужно поменять местами наибольший и первый элементы в каждом ряде матрицы.

Помогите, кто может.

Сообщение отредактировал VirtualPC - Понедельник, 22.12.2008, 03:22
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;