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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2014, 14:06   #1
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию паскаль выдает ошибку

паскаль выдает ошибку в Program1.pas(12) : Переменная цикла for должна описываться в том же блоке, что и цикл for .
Код:
Program holeckogo;
Uses crt;
const n=3;
Var
   i,j:byte;
   A,L,Lt: array[1..n,1..n] of integer;
   B,X,y: array[1..n] of integer;
{Блок ввода-вывода}
Procedure inmassA;
begin
 WriteLn('Введите элементы массива A');
  For i:=1 to N do
     For j:=1 to N do
       Begin
           Write('a[',i,',',j,']=');
           Read(A[i,j]);
       end;
end;
 Procedure inmassB;
 begin
Writeln('Введите элементы массива B');
  For i:=1 to n do
      Begin
           Write('b[',i,']=');
           ReadLn(b[i]);
       End;
  end;
Procedure Outx;
Begin
  Writeln('Результат:');
  For i:=1 to n do
      Begin
           Write('x',i,'=');
           Writeln(X[i]);
       End;
End;
{Конец блока ввода-вывода}
Begin
 ClrScr;
  inmassA;
  inmassB;
  if a[1,1]<0 then
  Begin
       for j:=1 to n do
           a[1,j]:=-a[1,j];
       b[1]:=-b[1];
  end;
 {Вычисления}
  L[1,1]:=sqrt(A[1,1]);
  Lt[1,1]:=sqrt(A[1,1]);
  L[2,1]:=A[1,2]/sqrt(A[1,1]);
  Lt[1,2]:=A[1,2]/sqrt(A[1,1]);
  L[3,1]:=A[1,3]/sqrt(A[1,1]);
  Lt[1,3]:=A[1,3]/sqrt(A[1,1]);
  L[2,2]:=sqrt(A[2,2]-L[2,1]*L[2,1]);
  Lt[2,2]:=sqrt(A[2,2]-L[2,1]*L[2,1]);
  L[3,2]:=(A[3,2]-L[2,1]*L[3,1])/L[2,2];
  Lt[2,3]:=(A[3,2]-L[2,1]*L[3,1])/L[2,2];
  L[3,3]:=sqrt(A[3,3]-L[3,1]*L[3,1]-L[3,2]*L[3,2]);
  Lt[3,3]:=sqrt(A[3,3]-L[3,1]*L[3,1]-L[3,2]*L[3,2]);
 
  y[1]:=B[1]/L[1,1];
  y[2]:=(B[2]-L[2,1]*y[1])/L[2,2];
  y[3]:=(B[3]-L[3,1]*y[1]-L[3,2]*y[2])/L[3,3];
 
  x[3]:=y[3]/Lt[3,3];
  x[2]:=(y[2]-Lt[2,3]*x[3])/Lt[2,2];
  x[1]:=(y[1]-Lt[1,2]*x[2]-Lt[1,3]*x[3])/Lt[1,1];
{Конец вычислений}
Outx;
 
End.
как описать в том же блоке что и сам цикл



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.
Изображения
Тип файла: jpg Безымянный.jpg (13.1 Кб, 134 просмотров)

Последний раз редактировалось Serge_Bliznykov; 23.05.2014 в 14:10.
now2 вне форума Ответить с цитированием
Старый 23.05.2014, 14:13   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от now2 Посмотреть сообщение
паскаль выдает ошибку в Program1.pas(12) : Переменная цикла for должна описываться в том же блоке, что и цикл for .
т.е. по сообщению непонятно, в чём ошибка, да?!

Код:
...
Procedure inmassA;
var i,j : integer;
begin
 WriteLn('Введите элементы массива A');
  For i:=1 to N do
     For j:=1 to N do
       Begin
           Write('a[',i,',',j,']=');
           Read(A[i,j]);
       end;
end;
 Procedure inmassB;
var i : integer;
 begin
Writeln('Введите элементы массива B');
  For i:=1 to n do
      Begin
           Write('b[',i,']=');
           ReadLn(b[i]);
       End;
  end;
Procedure Outx;
var i : integer;
Begin
  Writeln('Результат:');
  For i:=1 to n do
      Begin
           Write('x',i,'=');
           Writeln(X[i]);
       End;
End;
...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.05.2014, 14:25   #3
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
т.е. по сообщению непонятно, в чём ошибка, да?!

Код:
...
Procedure inmassA;
var i,j : integer;
begin
 WriteLn('Введите элементы массива A');
  For i:=1 to N do
     For j:=1 to N do
       Begin
           Write('a[',i,',',j,']=');
           Read(A[i,j]);
       end;
end;
 Procedure inmassB;
var i : integer;
 begin
Writeln('Введите элементы массива B');
  For i:=1 to n do
      Begin
           Write('b[',i,']=');
           ReadLn(b[i]);
       End;
  end;
Procedure Outx;
var i : integer;
Begin
  Writeln('Результат:');
  For i:=1 to n do
      Begin
           Write('x',i,'=');
           Writeln(X[i]);
       End;
End;
...
я не знаю как исправить ее (((((
now2 вне форума Ответить с цитированием
Старый 23.05.2014, 14:27   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от now2 Посмотреть сообщение
я не знаю как исправить ее (((((
в моём сообщении выше в коде зелененький текст большими буквами написанный видно?
Это для исправления данной ошибки!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.05.2014, 14:28   #5
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

)))заработало спасибо большое

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в моём сообщении выше в коде зелененький текст большими буквами написанный видно?
Это для исправления данной ошибки!
а не подскажите почему результат какие-то буквы , в чем ошибка
я там еще в Var integer заменила на real а то не работал
Изображения
Тип файла: jpg Безымянный1.jpg (8.6 Кб, 133 просмотров)

Последний раз редактировалось Stilet; 26.05.2014 в 08:13.
now2 вне форума Ответить с цитированием
Старый 23.05.2014, 14:48   #6
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Nan - переполнение. Или слишком большое, или слишком маленькое число получается. Ошибка, короче.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 25.05.2014, 23:45   #7
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
Nan - переполнение. Или слишком большое, или слишком маленькое число получается. Ошибка, короче.
а как эту ошибку исправить?

должно три корня получится

Последний раз редактировалось Stilet; 26.05.2014 в 08:16.
now2 вне форума Ответить с цитированием
Старый 26.05.2014, 09:51   #8
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Надо проверить на эталонных данных. Если на них ошибка, то алгоритм, либо его реализация неверны.
Код:
  L[2,2]:=sqrt(A[2,2]-L[2,1]*L[2,1]);
Вот в этой строке у вас ошибка, скорее всего корень квадратный из отрицательного числа. Проверяйте алгоритм.

Последний раз редактировалось ZX Spectrum-128; 26.05.2014 в 12:12.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 26.05.2014, 15:19   #9
now2
Форумчанин
 
Регистрация: 12.03.2014
Сообщений: 217
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
Надо проверить на эталонных данных. Если на них ошибка, то алгоритм, либо его реализация неверны.
Код:
  L[2,2]:=sqrt(A[2,2]-L[2,1]*L[2,1]);
Вот в этой строке у вас ошибка, скорее всего корень квадратный из отрицательного числа. Проверяйте алгоритм.
блиин(((((все равно не получается (((( буквами и выводится ответ , я запуталась

почему во второй строчке ошибка ? здесь вроде все так

Последний раз редактировалось Stilet; 27.05.2014 в 09:58.
now2 вне форума Ответить с цитированием
Старый 26.05.2014, 17:28   #10
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Я трассировщиком прогнал. На этой строке программа выпадает с ошибкой. Проверяйте алгоритм (программу).
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа выдает ошибку. Паскаль Тетрадь Помощь студентам 0 29.03.2014 16:12
почему выдает ошибку паскаль? Program3.pas(30) : Встречено 'and', а ожидался оператор Julia1 Паскаль, Turbo Pascal, PascalABC.NET 13 08.02.2014 21:28
выдает ошибку ВрединкаИринка Общие вопросы Delphi 2 18.06.2012 20:46
выдает ошибку (C++) Carter Помощь студентам 2 10.03.2012 17:37
Написал прогу в паскаль в ответ после запуска выдает ошибку.Что не так? sawel23 Паскаль, Turbo Pascal, PascalABC.NET 5 27.05.2010 15:37