IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Процедуры и функции
сообщение
Сообщение #1


snoWolf
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


Уважаемые форумчане. Помогите пожалуйста задачку решить.


Прикрепленные файлы
Прикрепленный файл  ______.doc ( 25 килобайт ) Кол-во скачиваний: 1485


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Art87, объясни мне, неужели нельзя было присоединить скриншот с экрана, а не сам DOC-файл? Я понимаю, что ТЕБЕ так удобнее, но ты и о других подумай !!!

Прикрепленное изображение

(кстати, заметь, мой файл по размеру меньше чем тот, что присоединил ты...)

P.S. На форуме тема про вычисление траекторий снарядов поднималась неоднократно... Вот 2 примера решений:
Задача с циклом
Имитация полета снаряда
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


snoWolf
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


Спасибо за ссылки, почитаю,
если что в следующий раз буду присоеденять :D


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


snoWolf
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


Посмотрите, нормально, нет?
var f,g:real;
x,v,dx:integer;

function y(x:integer;f:real;v:integer):real;
var g:real;
begin
 g:=0.0098/((1/60)*(1/60));
 y:=x*sin(f)/1-(g*x*x)/(2*v*v*cos(f)*cos(f));
end;
begin
 v:= 35;
 f:=2*Pi/6;
 x:=-2;
 dx:=2;
 repeat
  x:=x+dx;
 until y(x,f,v)<0;
 writeln('With V=35km/h and Angle=2P/6 way(path) = ',x);

 v:= 30;
 f:=Pi/4;
 x:=-2;
 dx:=2;
 repeat
  x:=x+dx;
 until y(x,f,v)<0;
 writeln('With V=30km/h and Angle=P/4 way(path) = ',x);
 readln;
end.


Сообщение отредактировано: Art87 -


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


snoWolf
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


Такая задача,
Заданы массивы X1(7), X2(6), X3(4). Найти среднее арифмитическое сумм отрицательных элементов массивов. Определение суммы отрицательных элементов массива оформить в виде подпрограммы.

type mass=array[1..7] of integer;
Var
X1,X2,X3:mass;
kX1,kX2,kX3:byte;
t:real;
Procedure Col(var A:mass; n:byte; var k:byte);
Var i,j:byte;
begin
writeln('Введите ', n , 'элементов массива');
for i:=1 to n do
read(X1[i]);
k:=0; j:=0;
For i:=1 to n do
begin
if X1[i] < 0 then begin
j:=j+X1[i];
k:=k+1;
end; end;t:=abs(j)/k; end;
begin
Col(X1,7,kx1);
writeln ('Среднее арифметическое', kx1 ,'элементов в массиве X1=',t:5:3);
Col(X2,6,kx2);
writeln ('Среднее арифметическое', kx2 ,'элементов в массиве X2=',t:5:3);
Col(X3,4,kx3);
writeln ('Среднее арифметическое', kx3 ,'элементов в массиве X3=',t:5:3);
end.


Программа запускается, но считает непонятно что sad.gif


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ты уж если передаешь в процедуру A: mass как параметр, то им же и пользуйся... Кстати, использовать здесь функцию более оправдано, чем возвращать результат через глобальную переменную (глобальные переменные лучше вообще использовать как можно реже :yes: ). И еще: используй открытые массивы (A: array of <type>, без указания длины) как параметр. Работать с ними дальше - как с обычными массивами; единственное отличие - индексы не [1 .. n], а [0 .. n - 1]

type mass=array[1..7] of integer;

function Col(var A: array of integer; n: byte;
         var k:byte): real;
Var i, sum: integer;
begin
  writeln('Введите ', n , 'элементов массива');
  for i:=0 to pred(n) do
    read(A[i]);

  k:=0; sum:=0;
  For i:=0 to pred(n) do begin
    if A[i] < 0 then begin
      inc(sum, A[i]); inc(k);
    end;
  end;

  Col := abs(sum)/k;
end;

var
  t: real;
  kX1,kX2,kX3: byte;
  X1, X2, X3: array[1 .. 7] of integer;

begin
  t := Col(X1,7,kx1);
  writeln ('Среднее арифметическое ', kx1 ,' элементов в массиве X1=',t:5:3);
  t := Col(X2,6,kx2);
  writeln ('Среднее арифметическое ', kx2 ,' элементов в массиве X2=',t:5:3);
  t := Col(X3,4,kx3);
  writeln ('Среднее арифметическое ', kx3 ,' элементов в массиве X3=',t:5:3);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


snoWolf
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


volvo, спасибо за программу, а почему не предлогается ввести элементы массивов Х2 и Х3?

Сообщение отредактировано: Art87 -


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Что значит "не предлагается"? Что, моя программа тебе не пишет
Цитата
'Введите 6 элементов массива'
...
'Введите 4 элементов массива' ?

Она вообще-то делает ТО ЖЕ САМОЕ, что и твоя из поста №5, только еще и возвращает правильный результат...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


snoWolf
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


Нет, в моей, ввожу 7 элементов, Enter,
потом предлогается ввести массив X2 потом X3.
А в вашем варианте, X1 вводится и ничего дальше не происходит sad.gif


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Вот лог выполнения моей программы:
Цитата
Введите 7элементов массива
2 -1 -7 8 -3 5 9
Среднее арифметическое 3 элементов в массиве X1=3.667
Введите 6элементов массива
1 2 -3 -4 5 6
Среднее арифметическое 2 элементов в массиве X2=3.500
Введите 4элементов массива
-1 -2 -3 5
Среднее арифметическое 3 элементов в массиве X1=2.000
Что не устраивает?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


snoWolf
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


Мои извинения. Все работает, спасибо smile.gif Видимо опять я где-то перемудрил smile.gif


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


snoWolf
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


Да, долго ругался на меня сегодня препод. И это лишнее и это бред angry.gif Чтоб его. Все же работает, а её не нравится angry.gif
Заставила переделать
СКАЗАЛА, много лишнего, ... корова.

с for i:=0 to pred(n) do
на for i:=1 to n do и i:=byte
И еще убрались все kx1


Заданы массивы X1(7), X2(6), X3(4). Найти среднее арифмитическое сумм отрицательных элементов массивов. Определение суммы отрицательных элементов массива оформить в виде подпрограммы.

А как эту же самую задачу с процедурой сделать huh.gif
Я на паре всю голову сломил, задачу урезал, но засейвить на дискету не успел. Был косяк с передачей формальных параметров из процедуры в программу.


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


вот так ?

procedure Additional(var A: array of integer; n: byte; var k:byte; 

var Col :real

);
Var i, sum: integer;
begin
  writeln('Введите ', n , 'элементов массива');
  for i:=0 to pred(n) do
    read(A[i]);

  k:=0; sum:=0;
  For i:=0 to pred(n) do begin
    if A[i] < 0 then begin
      inc(sum, A[i]); inc(k);
    end;
  end;

  Col := abs(sum)/k;
end;

объяви глобальную переменную и передавай ее процедуре в параметр Col. После отработки процедуры эта переменная будет хранить значение abs(sum)/k; rolleyes.gif

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


snoWolf
**

Группа: Пользователи
Сообщений: 80
Пол: Мужской
Реальное имя: Артем

Репутация: -  0  +


Спасибо, попробуем ;)


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.04.2025 19:49
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name