Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2012, 22:01   #1
Camelot_2012
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 90
По умолчанию Подпрограммы

Код:
Uses crt;
const 
     n=3;
     e= 0.0001;

procedure one;
Var a: array [1..n,1..n] of integer;
    i,j,d,p1,p2:integer;
begin Clrscr;
for i:=1 to n do
for j:=1 to n do
begin
write('vvedite a[', i, ',', j, ']=');
readln(a[i,j]);
end;
for i:=1 to n do begin
writeln;
for j:=1 to n do
write(a[i,j]:6);
end;
for i:=1 to n do
begin
p1:=a[1,1]*a[2,2]*a[3,3]+a[1,2]*a[2,3]*a[3,1]+a[2,1]*a[3,2]*a[1,3];
p2:=a[1,3]*a[2,2]*a[3,1]+a[1,2]*a[2,1]*a[3,3]+a[2,3]*a[3,2]*a[1,1];
d:=p1-p2;
end;
writeln;
writeln;
writeln('det=',d:3);
readln;
end;

procedure two;
var a:array[1..n,1..n] of integer;
    i,j,k:integer;
begin clrscr;
for i:=1 to n do
for j:=1 to n do
begin
write('vvedite a[', i, ',', j, ']= ');
read(a[i,j]);
end;
for i:=1 to n do
begin
writeln;
for j:=1 to n do
write(a[i,j]:6);
end;
for i := 1 to n- 1 do 
for j := i + 1 to n do
if abs(a[i,i]) > abs(a[j,j]) then
begin
k := a[i,i];
a[i,i] := a[j,j];
a[j,j] := k;
end;
writeln;
for i:=1 to n do
writeln(a[j,j], ' ');
readln;
end;

procedure three;
var x,tg: real;
begin clrscr;
write('x= ');
readln(x);
tg:=(exp(x)-exp(-x))/(exp(x)+exp(-x));
writeln('tg(x)= ',tg:2:2);
readln;
end;

procedure four;
var x, t, s, n, c: real; 
begin clrscr;
x:=-1;
while x<=1 do
begin
if x < 0.5 then begin
s := 0; 
n := 0; 
c := 1; 
t := 1; 
while (t / c) > e do 
begin
n := n + 1; 
s := s + t / c; 
t := t * x * x; 
c := 1 + 4 * n; 
end; 
s := (x * x + 3 * x + 4) * s / (5 * x + 1);	 
end
else
begin
s := 0; 
n := 1; 
t := x; 
while n <= 10 do 
begin
s := s + t / n; 
t := t * x; 
n := n + 1; 
end; 
s := x * s / 3;    
end;
writeln('x= ',x:2:1,'  y=: ', s:2:3);
x:=x+0.1;
end;
readln;
end;

begin
         one;
         two;
         three;
         four
end.
Не выводит вторую подпрограмму, помогите пожалуйста!
Camelot_2012 вне форума Ответить с цитированием
Старый 17.04.2012, 22:40   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

может потому что выводить должен чёрти что?
Цитата:
Код:
for i:=1 to n do
writeln(a[j,j], ' ');
переменная j не имеет точного значения
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 17.04.2012, 23:10   #3
Camelot_2012
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 90
По умолчанию

Поменял на [i,i] не выводит все равно!
Camelot_2012 вне форума Ответить с цитированием
Старый 17.04.2012, 23:17   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

так...
Тоест после вывода первой процедуры
вы жмёте ентер и ничего не выводить
после чего вы жмёте ещё раз ентер и выводит 3 процедуру
правильно?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 18.04.2012, 16:52   #5
Camelot_2012
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
так...
Тоест после вывода первой процедуры
вы жмёте ентер и ничего не выводить
после чего вы жмёте ещё раз ентер и выводит 3 процедуру
правильно?
Сначала я ввожу матрицу в первой процедуре нажимаю на ентер и он выводит, во второй процедуре ввожу матрицу нажимаю на ентер, он не выводит, сразу переходит к 3 процедуре!
Camelot_2012 вне форума Ответить с цитированием
Старый 18.04.2012, 17:22   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

выводит! просто буфер у вас не пуст поэтому конечный ReadLn не стопит выполнение!
Вот так поправте
Код:
procedure two;
var a:array[1..n,1..n] of integer;
    i,j,k:integer;
begin clrscr;
for i:=1 to n do
for j:=1 to n do
begin
write('vvedite a[', i, ',', j, ']= ');
read(a[i,j]);
end;
ReadLn;
for i:=1 to n do
begin
writeln;
for j:=1 to n do
write(a[i,j]:6);
end;
for i := 1 to n- 1 do 
for j := i + 1 to n do
if abs(a[i,i]) > abs(a[j,j]) then
begin
k := a[i,i];
a[i,i] := a[j,j];
a[j,j] := k;
end;
writeln;
for i:=1 to n do
writeln(a[j,j], ' ');
readln;
end;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 18.04.2012, 21:10   #7
Camelot_2012
Пользователь
 
Регистрация: 19.12.2011
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
выводит! просто буфер у вас не пуст поэтому конечный ReadLn не стопит выполнение!
Вот так поправте
Код:
procedure two;
var a:array[1..n,1..n] of integer;
    i,j,k:integer;
begin clrscr;
for i:=1 to n do
for j:=1 to n do
begin
write('vvedite a[', i, ',', j, ']= ');
read(a[i,j]);
end;
ReadLn;
for i:=1 to n do
begin
writeln;
for j:=1 to n do
write(a[i,j]:6);
end;
for i := 1 to n- 1 do 
for j := i + 1 to n do
if abs(a[i,i]) > abs(a[j,j]) then
begin
k := a[i,i];
a[i,i] := a[j,j];
a[j,j] := k;
end;
writeln;
for i:=1 to n do
writeln(a[j,j], ' ');
readln;
end;
Спасибо за помощь!
Camelot_2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подпрограммы! pechenka Помощь студентам 0 04.01.2011 19:34
Подпрограммы-процедуры, подпрограммы-функции в Pascal rishikesh Помощь студентам 19 18.05.2010 23:05
Подпрограммы в C# Doublefaced Помощь студентам 3 18.06.2009 21:19
подпрограммы Nightt Помощь студентам 0 18.06.2009 19:22