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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2009, 22:23   #1
leedhas
Новичок
Джуниор
 
Аватар для leedhas
 
Регистрация: 11.01.2009
Сообщений: 2
Печаль Помогите разобраться с процедурами и функциями.

Я не понимаю принцип процедур и функция.
Вначале решаю задачу без них - все получается, начинаю делать с ними - сразу запутываюсь..

очередной "шедевр"...
Нужно найти произведение подряд идущих элементов в одномерном массиве, расположенных между двумя нулевыми элементами.
вначале решил без процедур- все работало, потом решил сделать с ними- и вот что получилось( конечно не работает):
program z1;
uses crt;
type
ar=array[1..5] of integer;
var a:ar;
n,s,k:byte

procedure In_(var a:ar; n:byte);
var i,j,k:byte;
begin

for i:=1 to n do begin
writeln('ââåäèòå a[',i,']');
readln(a[i]);
end;
end;

procedure Poisk(var a:ar;n:byte);
var i,s,k:byte;
begin
for i:=n downto 1 do
if a[i]=0 then k:=i+1;
repeat

S:=s*a[k];

k:=k+1;
until a[k]=0;
end;

begin


writeln( 'ââåäèòå ðàçìåðíîñòü ìàññèâà');
readln(n);
In_(a,n);
Poisk(a,n);


writeln(S);

readkey;
end.
leedhas вне форума Ответить с цитированием
Старый 12.01.2009, 22:33   #2
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

Цитата:
Сообщение от leedhas Посмотреть сообщение

writeln( 'ââåäèòå ðàçìåðíîñòü ìàññèâà');

Очень познавательно ... =)

а что с принципом процедур и функций ?! =) ) Что тут такого чегов книгах не описывают ... Это некий кусок программы засунутый отдельно для того что б его несколько раз вызывать и тем самым экономить "СТРОКИ" программы... ЧТО не понятного ??

Различие ? - Процедура не возвращает значение а функц. возвращает ...
Тоесть к примеру процедура на проверку знака числа... Тут будет лучше использовать функцию и тогда сразу можно присвоить некое значение числу =) тут что не понятнО ?

и что именно у вас не работает ???
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 12.01.2009, 23:00   #3
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию Вот вроде так, протестируй на всякий слчай

uses crt;
type
ar=array[1..20] of integer;
var
mas:ar;
n:integer;
procedure read_array(var a:ar; k:integer);
var
I:integer;
begin
for i:=1 to k do
begin
write(' -> ');
readln(a[i]);
end;
end;
procedure print_array(a:ar; k:integer);
var
i:integer;
begin
for i:=1 to k do
write(a[i],' ');
end;
function pro(a:ar; k:integer):longint;
var
i,j:integer;
p:longint;
begin
i:=1;
p:=1;
repeat
if a[i]=0 then
begin
if i<k then begin
i:=i+1;
if a[i]=a[i+1] then
begin
p:=p*a[i];
while (a[i]<>0) and (a[i]=a[i+1]) and (i<k) do
begin
i:=i+1;
p:=p*a[i];
end;
end;
end; end;
i:=i+1;
until i>k;
pro:=p;
end;
begin
clrscr;
write(' KoJIU4ECTBO EJIEMEHTOB -> ');
readln(n);
writeln;
writeln;
read_array(mas,n);
writeln;
writeln;
print_array(mas,n);
writeln;
writeln;
write(pro(mas,n));
readln;
end.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Старый 14.01.2009, 14:23   #4
leedhas
Новичок
Джуниор
 
Аватар для leedhas
 
Регистрация: 11.01.2009
Сообщений: 2
По умолчанию

народ, спасибо
почитал книжку, вроде сам разобрался
leedhas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа со строковыми процедурами и функциями pooharilo Паскаль, Turbo Pascal, PascalABC.NET 3 26.12.2008 23:51
Помогите решить программу со строковыми процедурами и их функциями Тищук Евгений Паскаль, Turbo Pascal, PascalABC.NET 1 08.11.2008 22:59
Помогите по работе с процедурами... ЕвгениуS Помощь студентам 1 28.05.2008 15:52
Помогите разобраться с функциями! Rembo Общие вопросы C/C++ 4 08.02.2008 21:24