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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2010, 18:08   #1
Awakie
 
Регистрация: 13.11.2010
Сообщений: 3
По умолчанию Входные и выходные данные!

Сегодня лектор помог написать программу но по прибытию домой стал разбиратся и ничего не понял.Прошу вас обьяснить мне что такое y,j,i,s я прост запутался что де обозначали где делители? и т.д
Код:
program lab;
uses crt;
type
N=word;
var
x:word;
{Подпрограмма}
procedure prost (y:word);
var
i,j,s:word;
begin
for i:=1 to y-1 do begin
s:=0;
for j:=1 to trunc(i/2+1) do
if i mod j = 0 then
s:=s+j;
if s=i then
writeln('совершенные числа = ',i);
end;
end;
{oсновная программа}
begin
clrscr;
writeln('введите целое число');
readln(x);
prost(x);
readln;
end.

Последний раз редактировалось Stilet; 15.11.2010 в 19:02.
Awakie вне форума Ответить с цитированием
Старый 15.11.2010, 19:17   #2
Anton
Пользователь
 
Регистрация: 06.08.2007
Сообщений: 43
По умолчанию

Попробую объяснить по простому.
y - это переменная типа word, которую ты передаешь в процедуру т.е procedure prost (y:word); В процедуру ты можешь передавать любую переменную типа word, т.е y - служит лишь для наименования этого типа в твоей процедуре. Так как ты передаешь параметры процедуре по значению, y и есть это значение, которое используется в твоей процедуре prost(X); - это передача Х в процедуру, т.е y=X, а y у тебя используется в цикле for i:=1 to y-1 do.
j,i,s - те же переменные типа word, только они объявлены в самой процедуре и
используются: i,j - для формирования цикла for j:=1 to trunc(i/2+1) do, а также для проверки условия if i mod j = 0 then. Сразу скажу что mod - это функция которая дает остаток от деления делимого на делитель. В данном случаи делимое у тебя i, а делитель j. s - служит лишь для результата вычислений s:=s+j;, а затем и для проверки твоих совершенных чисел - if s=i then
writeln('совершенные числа = ',i);
Anton вне форума Ответить с цитированием
Старый 15.11.2010, 19:35   #3
Awakie
 
Регистрация: 13.11.2010
Сообщений: 3
По умолчанию

Вот моя задача:Найдите все совершенные числа в диапазоне от 1 до 10000!
По твоему подробному обьяснению я понял так что во вх.данные у меня входит y,i,j,s,N а в выход.данные входит только x-т.е сам совершенные числа.я правелньо понял?
Awakie вне форума Ответить с цитированием
Старый 15.11.2010, 20:18   #4
Anton
Пользователь
 
Регистрация: 06.08.2007
Сообщений: 43
По умолчанию

Результат твоей задачи :

совершенные числа = 1
совершенные числа = 6
совершенные числа = 28
совершенные числа = 496
совершенные числа = 8128


Наверное не надо было так объяснять, а то наверное запутал тебя.
N - это собственный (ваш созданный )тип данных, который = стандартному типу word. В данном случае я вообще не понимаю зачем он нужен, так как он здесь нигде не фигурирует кроме объявления ( ну да Бог с ним), забудь за него.
X - это твоя глобальная переменная, как раз она и является входным данным.
Возможно лектор еще что-то задумал, но по сути выходными данными является переменная i, если она проходит условие if s=i then
writeln('совершенные числа = ',i);

Остальные лишь участвуют в организации цикла и его проверочных условиях.

Объясняю :

begin // начало тела функции
clrscr; // очистка экрана
writeln('введите целое число'); // на экране появляется надпись
readln(x); // введенное число передается глобальной переменной x;
prost(x); // вызов твоей процедуры с параметром х;
readln; // ждеш нажатия любой кнопки
end. // конец тела функции


В принципе все.
Anton вне форума Ответить с цитированием
Старый 15.11.2010, 20:20   #5
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию

х это целое число, которое ты вводишь при старте программы
Цитата:
writeln('введите целое число');
readln(x);
оно на входит в выходные данные.
На выходе ты получаешь совершенное число т.е. i
Цитата:
writeln('совершенные числа = ',i);
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Старый 15.11.2010, 20:41   #6
Awakie
 
Регистрация: 13.11.2010
Сообщений: 3
По умолчанию

Все понял спасибо большое! А эту программу возможно ли переделатьв програму с функцией вместо процедуры .Если да то какими методами?
Awakie вне форума Ответить с цитированием
Старый 15.11.2010, 20:59   #7
Ghost of Night
Форумчанин
 
Аватар для Ghost of Night
 
Регистрация: 08.08.2010
Сообщений: 371
По умолчанию

Это не имеет смысла
Хакинг - не преступление, а способ выживания.
Ghost of Night вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сохранять на форме предидущие входные данные TextBox-e? Natok Общие вопросы C/C++ 1 08.10.2010 06:35
Опишите входные и выходные данные программы predator14 Помощь студентам 0 06.06.2010 20:08
Входные данные сайта BALLIN Помощь студентам 3 13.05.2010 11:13
Входные и выходные данные allsolovey Общие вопросы C/C++ 1 12.02.2009 20:10
Выделить выходные gavrylyuk Microsoft Office Excel 5 01.08.2008 13:28