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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2013, 13:32   #1
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию задача на подпрограмму в Pascal - вычислить импульс и кинетическую энергию точек

Сама задачка:
вычислить импульс (p -формулу я прикрепил) и кинетическую энергию (t -тоже приккрепил к теме) системы n=10 материальных точек заданными массивами своих масс и скоростей M (10) = (1,2,3,4,5,6,7,8 , 9,10) U(10)= (2,3,4,5,6,7,8,9)
Вот код:
Код:
program laba9_3;
const n=10;
type 
     massiv =  array[1..2,1..10] of real;
procedure vvid_mas(var r1:massiv ; n1:integer); 
var i:integer;
begin
writeln('введіть елементи массиву');
For i:=1 to 2 do 
begin
For j:=1 to 10 do
read(r1[i,j]);
end;
end;
procedure vuvid_massivy(r2:massiv; n2:integer);
var i:integer;
begin
writeln('вивід елементів');
for i:=1 to 2 do
begin
for j:=1 to 10 do begin
write(r2[i,j])
end;
end;
procedure impuls(r:massiv ; var m,v:real);
var 
   m,i:integer;
   p:real;
   begin
   For i:=1 to m do begin
   p:=p+m+v;
   end;
   procedure kinetichna(r:massiv; var m,v:real);
   var 
      t:real;
      n,i:integer;
      For i:=1 to n do begin
      t:=t+m+sqr(v);
      end;
      t*1/2;
      End;
      procedure vuvid_res
      begin
      writeln('impuls',p);
      writeln('kinetihna',t);
      end;
не могу разобраться с циклом в impuls - не знаю правильно ли написал. помогите плиз
Изображения
Тип файла: gif latex.gif (956 байт, 56 просмотров)
mishammm вне форума Ответить с цитированием
Старый 08.11.2013, 13:35   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
procedure impuls(r:massiv ; var m,v:real);
зачем тут m и v??
Код:
procedure impuls(r1:massiv ; n1:integer;Res:Real);
var i:integer;
begin
Res:=0;
for  i:=1 to n1 do
Res:=res+r[i,1]*r[i,2];
end;
с энергией аналогично практически
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 08.11.2013, 13:47   #3
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

Код:
procedure impuls(r1:massiv ; n1:integer; Res:Real);
var 
   i:integer;
   begin
   Res:=0;
   For i:=1 to n1 do begin
   res:=res+r[i,1]*r[i,2];
   end;
   procedure kinetichna(r:massiv; n2:integer; res2:real;);
   var 
      
      i:integer;
      res2:=0;
      For i:=1 to n2 do begin
      res2:=res2+r[i,1]+sqr(r[i,2]);
      end;
      res2:=res2*1/2;
      End;
написал так как вы сказали но ошибка на строке:
Код:
procedure impuls(r1:massiv ; n1:integer; Res:Real);
Встречено 'procedure', а ожидался оператор
mishammm вне форума Ответить с цитированием
Старый 08.11.2013, 13:48   #4
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

А оно вообще работало?
Код:
procedure impuls(r1:massiv ; n1:integer; Res:Real);
var 
   i:integer;
   begin
   Res:=0;
   For i:=1 to n1 do begin
   res:=res+r[i,1]*r[i,2];
   end;
End;// для процедуры
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 08.11.2013 в 13:53.
SaLoKiN вне форума Ответить с цитированием
Старый 08.11.2013, 13:54   #5
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

Код:
procedure impuls(r1:massiv ; n1:integer; Res:Real);
var 
   i:integer;
   begin
   Res:=0;
   For i:=1 to n1 do begin
   res:=res+r[i,1]*r[i,2];
   end;
   End;
тоже самое
Изображения
Тип файла: jpg Безымянный.jpg (33.5 Кб, 125 просмотров)
mishammm вне форума Ответить с цитированием
Старый 08.11.2013, 14:04   #6
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

не понимаю данная строка написана правильно не понимаю почему там ошибка?
mishammm вне форума Ответить с цитированием
Старый 08.11.2013, 14:18   #7
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

бегинов -3
эндов - 2
ничего не говорит?
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 08.11.2013, 14:27   #8
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

доставил 1 End; перед procedure impuls вроде бы нормально
mishammm вне форума Ответить с цитированием
Старый 08.11.2013, 14:28   #9
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
доставил 1 End; перед procedure impuls вроде бы нормально
Лучше бы begin убрал из цикла по j
P.S работает верно? (в чем я сомневаюсь)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 08.11.2013, 14:32   #10
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

Код:
program laba9_3;
const n=10;
type 
     massiv =  array[1..2,1..10] of real;
procedure vvid_mas(var r1:massiv ; n1:integer); 
var i:integer;
begin
writeln('введіть елементи массиву');
For i:=1 to 2 do 
begin
For j:=1 to 10 do
read(r1[i,j]);
end;
end;
procedure vuvid_massivy(r2:massiv; n2:integer);
var i:integer;
begin
writeln('вивід елементів');
for i:=1 to 2 do
begin
for j:=1 to 10 do 
write(r2[i,j])
end;
end;
procedure impuls(r1:massiv; n1:integer; Res:Real);
var 
   i:integer;
   begin
   Res:=0;
   For i:=1 to n1 do begin
   res:=res+r[i,1]*r[i,2];
   end;
   End;
   procedure kinetichna(r:massiv; n2:integer; res2:real);
   var 
      
      i:integer;
      res2:=0;
      begin
      For i:=1 to n2 do begin
      res2:=res2+r[i,1]+sqr(r[i,2]);
      end;
      res2:=res2*1/2;
      End;
      procedure vuvid_res;
      begin
      writeln('impuls',p);
      writeln('kinetihna',t);
      end;
      End.
убрал begin , теперь в самом конце кода пишет Встречено 'End', а ожидалось begin ему я так понял еще что то надо написать в програме? может вызвать процедуру? ))
mishammm вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить какая цифра правее через подпрограмму Guagpro Паскаль, Turbo Pascal, PascalABC.NET 9 22.01.2013 11:23
Задача на Pascal ABC. Определить среднюю кинетическую энергию вращательного движения молекул водорода faqbi4vosk Помощь студентам 1 22.04.2012 17:39
Задаnm n точек. Найти m=3,4... точек и построить на них m-угольник: количество точек , лежащих внутри и вне его мин. различается L.Rain Помощь студентам 0 11.12.2011 22:19
Задача на Pascal. Дано натуральное число n вычислить y=2*4*6...(2n) Xe0n Помощь студентам 14 15.03.2011 21:24
Pascal, задача на подпрограмму. Elusive Devil Помощь студентам 2 03.05.2009 21:15