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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 15:54   #11
Rainz
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию

Огромное спасибо! и на последок вопрос, в паскале в процедуру(функцию) можно передать массив?
Rainz вне форума Ответить с цитированием
Старый 31.05.2010, 16:09   #12
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Без проблем!!! Но лучше передавать не сам массив, а ссылку на этот массив...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 31.05.2010, 16:13   #13
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Если не хотите возиться с указателями, то так:
Код:
Type
TArr = Array[0..5,0..3] of Integer;

Procedure(C,D,E : TArr);
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 31.05.2010, 16:19   #14
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Не уверен, что это лучший вариант!!! Если внимательно рассмотреть какие передаются параметры в процедуры/функции и как они передаются, то станет ясно, что для массивов лучше передавать все же ссылки.
Не думаю, что лучший вариант передавать массив, допустим в тысячу элементов, как параметр...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 31.05.2010, 16:37   #15
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Я имел в виду, что это один из простейших способов. А для того, чтобы все равно не возиться с указателями сделайте так:
Код:
Type
TArr = Array[0..5,0..3] of Integer;

Procedure( Var C,D,E : TArr);
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.06.2010, 14:07   #16
Rainz
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию

Код:
const MAX=100;
type mas=array[1..MAX] of integer;

function SredArifm(inX:mas; x:integer):integer;
var i,sr:integer;
begin
for i:=1 to x do sr:=sr+inX[i];
sr:=sr/x;
SredArifm:=sr;
end;
sr:=sr/x; - на этом месте указатель становится за x и ругается ошибкой Error 26: Type mismatch. что сдесь не так? вроде типы совпадают..
Rainz вне форума Ответить с цитированием
Старый 02.06.2010, 14:23   #17
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

При делении ВСЕГДА получается дробный тип. Round/Trunc в помощь.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.06.2010, 14:44   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
При делении ВСЕГДА получается дробный тип. Round/Trunc в помощь.
ага. или использовать целочисленное деление:
Код:
sr:=sr div x;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.06.2010, 14:48   #19
Rainz
 
Регистрация: 31.05.2010
Сообщений: 9
По умолчанию

Ввести массив A(n) и B(m). организовать вывод элемнтов массивов использовав процедуру и поменять местами первый и последний элемент. Используя функцию вычеслить среднее орифметическое каждого из массивов. Все сделал, а среднеарефметическое вычесляется не верно, в чем ошибка может быть?
Код:
program zadanie2;
const MAX=100;
type mas=array[1..MAX] of integer;
var
A,B:mas;
i,n,m:integer;
sa:real;

procedure WriteArray(var inA,inB:mas; n,m:integer);
var i,x:integer;
begin
write('Array A: ');
for i:=1 to n do write(' ',inA[i]);
writeln('');

write('Array B: ');
for i:=1 to m do write(' ',inB[i]);
writeln('');

x:=inA[1];
inA[1]:=inA[n];
inA[n]:=x;

x:=inB[1];
inB[1]:=inB[m];
inB[m]:=x;
end;

function SredArifm(inX:mas; x:integer):real;
var
i:integer;
sr:real;
begin
for i:=1 to x do
  sr:=sr+inX[i];
sr:=sr/x;
SredArifm:=sr;
end;

begin
writeln('Vvedite kol-vo elementov massiva A');
read(n);
writeln('Vvedite elementi massiva A:');
for i:=1 to n do
  read(A[i]);

writeln('Vvedite kol-vo elementov massiva B');
read(m);
writeln('Vvedite elementi massiva B:');
for i:=1 to m do
  read(B[i]);

WriteArray(A,B,n,m);

write('Array xA: ');
for i:=1 to n do write(' ',A[i]);
writeln('');

write('Array xB: ');
for i:=1 to m do write(' ',B[i]);
writeln('');

sa:=SredArifm(A,n);
writeln('sredne arifmiticheskoe: ', sa:5);

sa:=SredArifm(B,m);
writeln('sredne arifmiticheskoe: ', sa);
end.
Rainz вне форума Ответить с цитированием
Старый 02.06.2010, 16:19   #20
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

всё верно:
Массив А: 9 12 2 3 4
Массив B: 19 2 3 9 2 1 2 3
среднее арифметическое А: 6.000
среднее арифметическое В: 5.125
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как отбросить целую часть оставив дробную Alex26RusLink Паскаль, Turbo Pascal, PascalABC.NET 1 24.10.2009 11:36
простой вопрос - как получить дробную часть Inta Microsoft Office Excel 2 19.11.2008 22:11
отделить дробную часть от числа |v||v|<<IpShot Общие вопросы C/C++ 19 24.09.2008 18:21
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть Дикий Помощь студентам 7 12.05.2008 17:57
подскажите какая процедура округляет дробные числа , а не откидывает дробную часть, к ***СкаЙ*** Помощь студентам 5 13.06.2007 16:03