иван 23
Сообщение
#48115 16.12.2009, 13:55
Дано произвольное значение 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(

;
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.
граф Монте-Кристо
Сообщение
#48116 16.12.2009, 14:01
Зачем Вы делаете s=s+i? Ведь Вы добавляете к s не элемент, а его индекс. Пишите тогда уже s=s+g[i].
иван 23
Сообщение
#48119 16.12.2009, 14:29
спасибо, так в этом и была моя ошибка?
граф Монте-Кристо
Сообщение
#48120 16.12.2009, 15:11
Ну в этом коде вроде бы нету больше ошибок.
иван 23
Сообщение
#48212 17.12.2009, 10:36
но если через тип описывть, то он пишет, что здесь:
g: array [1..n] of integer;
v: array [1..m] of integer; нужно вместо : поставить =, а затем он пишет, что n m неизвестные идентификаторы
иван 23
Сообщение
#48233 17.12.2009, 13:54
а еще вопрос такой: а можно ли вместо типа например решить ее как Procedure? тогда и m n может описывать не придется?
граф Монте-Кристо
Сообщение
#48239 17.12.2009, 14:57
Да,это упустил из виду. Естественно, пас ругается. Переменные n и m определены после того,как уже появились в тексте.
Думаю,что это не так уж и сложно(про процедуру).
иван 23
Сообщение
#48245 17.12.2009, 15:16
помогите пожалуйста определить эти переменные n и m заранее, а через процедуру я не разобрался как делать, так что приходится через тип пробовать
Julia
Сообщение
#48340 18.12.2009, 1:30
Объявите любые 2 константы (не m и n), как вы делали в других задачах. Или при описании массивов зафиксируйте их размер (он должен быть больше, чем предполагаемые значения m и n).
И замените слово type на var.
Julia
Сообщение
#48343 18.12.2009, 1:58
Описание типов:
type <идентификатор типа>=<описание типа>;
var <идентификатор переменной>:<идентификатор типа>;
иван 23
Сообщение
#48472 19.12.2009, 13:26
милая Юлия, а можно еще каким то способом решить эту задачу? просто в этой ошибки одни за другой выдает( например, через Procedure?
Julia
Сообщение
#48752 21.12.2009, 2:42
Боюсь, что если вы начнете описывать процедуру, ошибок только добавится.
Напишите полностью исправленный код программы, будем избавляться от ошибок.
иван 23
Сообщение
#48775 21.12.2009, 9:55
дело в том, что с нас как бы спрашивают желательно именно через procedure, а с этим я не сталкивался еще ни разу
Julia
Сообщение
#48969 22.12.2009, 17:17
Процедура - это подпрограмма, которая решает какую-то небольшую законченную задачу внутри основной. Применяется, когда некоторый набор действий необходимо выполнить несколько раз.
Функция - частный случай процедуры, всегда возвращает какое-то конкретное значение.
По структуре процедуры и функции совпадают с основной программой, т.е. в них могут присутствовать все те же разделы. Отличаются первой строкой.
Процедура
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);
...
Дальше попробуйте сами.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.