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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2013, 14:42   #1
Руслан56
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 30
По умолчанию Проверьте программу. Паскаль

Одномерный массив А длиной N<=40 заполнить случайными числами из диапазона [–25..10]. Составить программу определения суммы элементов массива значения, которых лежат в диапазоне [y1..y2].

Написал такую программу. Но вот с определением суммы выходит ерунда. Можете помочь с написанием суммы.
Код:
program pro1;
const
n=40;
var
   a:array[1..40] of integer;
   i, y1, y2, s:integer;
procedure sluchay(var x: array[1..40] of integer; i:integer);
begin
Randomize;
          For i:=1 to N do
                        begin
                        A[i]:=Random(36)-25;
                         Writeln(A[i]:4);
                         end;
end;

procedure sum( var s:integer);
begin
   for i:=1  to n do
   begin
   if(a[i]>=y1) and (a[i]<=y2)
   then
   s:=s+a[i];
	 writeln('Сумма  элементов=  ', s);
 end;
	end;
	begin
sluchay(a, i);
 writeln('Введите y1');
 read(y1);
 write('Введите y2');
 read(y2);
sum(s);

	end.
Руслан56 вне форума Ответить с цитированием
Старый 26.11.2013, 14:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Согласен. Есть недочеты.
Код:
procedure sum;
var s:integer;
begin
 s:=0;
   for i:=1  to n do   
    if(a[i]>=y1) and (a[i]<=y2)   then   s:=s+a[i];
   writeln('Сумма  элементов=  ', s);
End;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.11.2013, 14:53   #3
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

В процедуре sluchai на вход подаете массив х, а работаете все равно с глобальным массивом а.
Попробуйте отрассировать программу.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 26.11.2013, 15:03   #4
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию

кажись вот так
Код:
const
  n = 40;
var
  a: array[1..n] of integer;
  y1, y2:integer;

procedure sluchay;
var
  i: Integer;
begin
  Randomize;
  For i:=1 to n do
  begin
    A[i] := Random(36)-25;
    Write(A[i]:4);
  end;
  Writeln;
end;

function sum: Integer;
var
  i, s: Integer;
begin
  s := 0;
  for i := y1 to y2 do
    s := s + a[i];
  sum := s;
end;

begin
  sluchay;
  writeln('Введите y1');
  read(y1);
  writeln('Введите y2');
  read(y2);
  write(sum);
end.
Unique_Maks вне форума Ответить с цитированием
Старый 26.11.2013, 15:30   #5
Руслан56
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 30
По умолчанию

Процедуры/функции должны быть с параметрами
Руслан56 вне форума Ответить с цитированием
Старый 26.11.2013, 15:37   #6
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию

Зачем?
Код:
const
  n = 40;
var
  a: array[1..n] of integer;
  s, i, y1, y2:integer;

begin
  Randomize;
  For i:=1 to n do
  begin
    A[i] := Random(36)-25;
    Write(A[i]:4);
  end;
  Writeln;
  writeln('Введите y1');
  readln(y1);
  writeln('Введите y2');
  readln(y2);
  s := 0;
  for i := y1 to y2 do
    s := s + a[i];
  write(s);
  Readln
end.
Unique_Maks вне форума Ответить с цитированием
Старый 26.11.2013, 15:46   #7
Руслан56
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 30
По умолчанию

Требуют, обязательно должно быть(
Руслан56 вне форума Ответить с цитированием
Старый 26.11.2013, 16:50   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Рискну предложить свой вариант решения:
Код:
const
  n = 40;
type
 TMyArray = array[1..n] of integer;

procedure sluchay(var Mas : TMyArray; MinValue, MaxValue : integer);
var
  i: Integer;
begin
  Randomize;
  For i := 1 to n do
  begin
    Mas[i] := Random(MaxValue+1-MinValue)+MinValue;
    Write(Mas[i]:4);
  end;
  Writeln;
end;

function sum(const Mas: TMyArray; const y1, y2: integer): integer;
var
  i, s: Integer;
begin
  s := 0;
  for i := 1 to n do
    if (Mas[i]>=y1) and (Mas[i]<=y2) then
      s := s + Mas[i];
  sum := s;
end;

var
  a :  TMyArray;
  y1, y2: integer;

begin
  sluchay(a, -25, 10);
  writeln('Введите y1');
  readln(y1);
  writeln('Введите y2');
  readln(y2);
  writeLn('Summa =',sum(a, y1, y2));
  Readln;
end.

Последний раз редактировалось Serge_Bliznykov; 26.11.2013 в 23:48.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверьте программу на запуск Dinangel Помощь студентам 0 08.03.2013 23:23
Проверьте программу. Демик Помощь студентам 0 10.05.2011 23:17
Проверьте мою программу kakawkin Софт 5 13.07.2010 02:32
проверьте программу натка:) Помощь студентам 12 03.02.2010 09:40
ПАскаль матрицы, проверьте программу Nubik Помощь студентам 3 24.01.2010 20:57