Помощь - Поиск - Пользователи - Календарь
Полная версия: процедуры и функции > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
иван 23
Дано произвольное значение b и два произвольных массива G, V размера n, m соответственно. Найти сумму элементов массива G, меньших заданного b, а также сумму элементов массива V, меньших заданного b. Исходные данные взять самостоятельно.
вот мои наработки, но если через тип описывать, то роде как по другому. помогите разобраться с решением


Program Mas;
Type
g: array [1..n] of integer;
v: array [1..m] of integer;
Var
n,m,S1,S2:integer;
Begin
writeln('Введите n');
readln(n);
writeln('Введите m');
readln(m);
Randomize;
For I := 1 to n do g[I] := Random(500);
For I := 1 to m do v[I] := Random(500);
Write(‘Введите число b’);
Readln(cool.gif;
s1:=0;
s2:=0;
For i:=1 to n do
If g[i]<b then s1:=s1+i;
For i:=1 to m do
If v[i]<b then s2:=s2+i;
writeln('Сумма элементов массива g ',s1);
writeln('Сумма элементов массива v ',s2);
readln;
End.
граф Монте-Кристо
Зачем Вы делаете s=s+i? Ведь Вы добавляете к s не элемент, а его индекс. Пишите тогда уже s=s+g[i].
иван 23
спасибо, так в этом и была моя ошибка?
граф Монте-Кристо
Ну в этом коде вроде бы нету больше ошибок.
иван 23
но если через тип описывть, то он пишет, что здесь:
g: array [1..n] of integer;
v: array [1..m] of integer; нужно вместо : поставить =, а затем он пишет, что n m неизвестные идентификаторы
иван 23
а еще вопрос такой: а можно ли вместо типа например решить ее как Procedure? тогда и m n может описывать не придется?
граф Монте-Кристо
Да,это упустил из виду. Естественно, пас ругается. Переменные n и m определены после того,как уже появились в тексте.
Думаю,что это не так уж и сложно(про процедуру).
иван 23
помогите пожалуйста определить эти переменные n и m заранее, а через процедуру я не разобрался как делать, так что приходится через тип пробовать
Julia
Объявите любые 2 константы (не m и n), как вы делали в других задачах. Или при описании массивов зафиксируйте их размер (он должен быть больше, чем предполагаемые значения m и n).

И замените слово type на var.
Julia
Описание типов:
type <идентификатор типа>=<описание типа>;
var <идентификатор переменной>:<идентификатор типа>;
иван 23
милая Юлия, а можно еще каким то способом решить эту задачу? просто в этой ошибки одни за другой выдает( например, через Procedure?
Julia
Боюсь, что если вы начнете описывать процедуру, ошибок только добавится.

Напишите полностью исправленный код программы, будем избавляться от ошибок.
иван 23
дело в том, что с нас как бы спрашивают желательно именно через procedure, а с этим я не сталкивался еще ни разу
Julia
Процедура - это подпрограмма, которая решает какую-то небольшую законченную задачу внутри основной. Применяется, когда некоторый набор действий необходимо выполнить несколько раз.
Функция - частный случай процедуры, всегда возвращает какое-то конкретное значение.
По структуре процедуры и функции совпадают с основной программой, т.е. в них могут присутствовать все те же разделы. Отличаются первой строкой.
Процедура
PROCEDURE <список формальных параметров>;
FUNCTION <список формальных параметров>;

Формальные параметры - это некоторые шаблоны, которые получают свои значения из самой программы.
Процедуры и функции могут быть использованы в программе любое количество раз. Вызываются по имени и в скобках указываются фактические значения параметров. Процедура может и не иметь параметров.
Рассмотрим ваш пример:
Program Mas;

Type
g: array [1..n] of integer;
v: array [1..m] of integer;
Var
n,m,S1,S2:integer;
Begin
writeln('Введите n');
readln(n);
writeln('Введите m');
readln(m);
Randomize;
For I := 1 to n do g[I] := Random(500); {Ввод массива повторяется несколько раз, поэтому можем описать процедуру ввода}
For I := 1 to m do v[I] := Random(500);

...
Эта часть прогаммы примет следующий вид:
Program Mas;
const nm=25;
Type
mas=array [1..nm] of integer; {опишем новый тип и определим две переменные этого типа}
Var
g,v:mas;
n,m,S1,S2:integer;
Procedure Vvod(var x:mas,n:byte); {слово var показывает, что x - изменяемая величина}
begin
For I := 1 to n do x[I] := Random(500);
end;
Begin
Randomize;
writeln('Введите n');
readln(n);
Vvod(g,n); {вызываем процедуру}
writeln('Введите m');
readln(m);
vvod(v,m);
...

Дальше попробуйте сами.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.