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

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

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

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


snoWolf
**

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

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


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


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


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


Гость






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

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

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

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


snoWolf
**

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

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


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


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Art87
сообщение 19.10.2005 10:15
Сообщение #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 - 19.10.2005 10:48


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Art87
сообщение 22.10.2005 7:38
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.10.2005 9:27
Сообщение #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.
 К началу страницы 
+ Ответить 
Art87
сообщение 22.10.2005 11:36
Сообщение #7


snoWolf
**

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

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


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

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


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


Гость






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

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


snoWolf
**

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

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


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


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.10.2005 15:00
Сообщение #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
Что не устраивает?
 К началу страницы 
+ Ответить 
Art87
сообщение 22.10.2005 16:24
Сообщение #11


snoWolf
**

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

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


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


--------------------
Нас десять братьев на тропе, идем мы быстро, на легке ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Art87
сообщение 25.10.2005 7:01
Сообщение #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 
 К началу страницы 
+ Ответить 
klem4
сообщение 25.10.2005 8:14
Сообщение #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 - 25.10.2005 8:15


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


snoWolf
**

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

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


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


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

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

 



- Текстовая версия 8.08.2025 10:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"