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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2013, 13:05   #1
ksenija15reg
Пользователь
 
Регистрация: 03.10.2013
Сообщений: 22
По умолчанию Работа с процедурами и функциями

Составить процедуру нахождения третьего положительного элемента массива А(n). Ввод элементов массива оформить в виде процедуры.
ksenija15reg вне форума Ответить с цитированием
Старый 16.11.2013, 13:07   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Ксения, какой язык программирования? Что именно не получается?
Описание типов и переменных сделали?
Процедуру ввода массива сделали?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.11.2013, 13:08   #3
ksenija15reg
Пользователь
 
Регистрация: 03.10.2013
Сообщений: 22
По умолчанию

язык - pascal
вот что получилось:
Код:
program z2;
uses crt;
type
  mas = array[1..100] of integer;

var
  a: mas;
  n, rez: integer;

procedure vvodmas(var b: mas);
var
  i: integer;
begin
  randomize;
  for i := 1 to n do
  begin
    b[i] := random(32) - 10;
    write(b[i]: 4);
  end;
end;

function poisk(var b: mas): integer;
var
  i, k, ii: integer;
begin
  for i := 1 to n do
    if b[i] > 0 then begin
      k := k + 1;
      if k = 3 then ii := i;
    end;
  poisk := ii;
end;

begin
  clrscr;
  write('n= ');
  read(n);
  vvodmas(a);
  rez := poisk(a);
  writeln('tretiy polozhitelniy element: ', rez);
  readkey;
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 16.11.2013 в 13:27.
ksenija15reg вне форума Ответить с цитированием
Старый 16.11.2013, 13:17   #4
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Код:
Poisk:=b[ii];
Вам же надо сам элемент, а не его индекс
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 16.11.2013, 13:20   #5
ksenija15reg
Пользователь
 
Регистрация: 03.10.2013
Сообщений: 22
По умолчанию

Цитата:
Сообщение от ZX Spectrum-128 Посмотреть сообщение
Код:
Poisk:=b[ii];
Вам же надо сам элемент, а не его индекс
я так делала. программа не выводит результат
ksenija15reg вне форума Ответить с цитированием
Старый 16.11.2013, 13:39   #6
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Код:


program z2;
uses crt;
type
  mas = array[1..100] of integer;

var
  a: mas;
  n, rez: integer;

procedure vvodmas(var b: mas);
var
  i: integer;
begin
  randomize;
  for i := 1 to n do
  begin
    b[i] := random(32) - 10;
    write(b[i]: 4);
  end;
end;

function poisk(b: mas): integer;
var
  i, k, ii: integer;
begin
  k:=0;
  for i := 1 to n do
    if b[i] > 0 then begin
      k := k + 1;
      if k = 3 then ii := i;
    end;
  poisk := b[ii];
end;

begin
  clrscr;
  write('n= ');
  read(n);
  vvodmas(a);
  rez := poisk(a);
  writeln('tretiy polozhitelniy element: ', rez);
  readkey;
end.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 16.11.2013, 13:41   #7
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Не забудьте добавить проверку в функции poisk на то, что положительных элементов нет вообще или их не три.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 16.11.2013, 13:41   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Ксения, если тот код, что Вы привели, Вы писали самостоятельно, то Вы умница.
Решение почти рабочее, так, мелочи упущены! Но направление точное.

Посмотрите, я немного доработал Ваш код, избавился от использования глобальных переменных и сделал так, чтобы процедура Poisk возвращала не величину нужного элемента, а его ИНДЕКС. При этом, если такого элемента в массиве НЕТ, тогда возвращается -1 (это просто любое число, индекс заведомо несуществующего элемента массива. Можно было взять -2, можно n+1 - главное, чтобы был несуществующих индекс).

будут вопросы - спрашивайте:
Код:
program z2;
uses crt;
type
  mas = array[1..100] of integer;

procedure vvodmas(var b: mas; var n : integer);
var
  i: integer;
begin
  randomize;
  for i := 1 to n do
  begin
    b[i] := random(32) - 10;
    write(b[i]: 4);
  end;
  WriteLn;
end;

function poisk(const b: mas; const n : integer): integer;
var
  i, k, ii: integer;
begin
  k := 0;
  for i := 1 to n do
    if b[i] > 0 then begin
      k := k + 1;
      if k = 3 then begin 
         ii := i;
         break; {если нашли третий положительный элемент - прерываем цикл}
      end;  
    end;
  if k=3 then 
    poisk := ii
  else
    poisk := -1; {возвращаем -1 если нет третьего положительного числа}
end;

var
  a: mas;
  n, rezIndex: integer;



begin
  clrscr;
  write('n= ');
  read(n);
  vvodmas(a,n);
  rezIndex := poisk(a, n);
  if  rezIndex<>-1 then
     writeln('tretiy polozhitelniy element: ', a[rezIndex])
  else
     writeln('Net v massive tretiego pologitelnogo chisla!');
  readkey;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.11.2013, 13:57   #9
ksenija15reg
Пользователь
 
Регистрация: 03.10.2013
Сообщений: 22
По умолчанию

Ребят, большое спасибо! опять из-за маленькой ошибки мучилась)) ох уж эта невнимательность!
ksenija15reg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с процедурами и функциями (Pascal) loxanet Помощь студентам 3 24.11.2011 21:55
Работа с функциями и процедурами Luckyman Помощь студентам 0 16.05.2011 18:21
Работа с процедурами и функциями Чумак Татьяна Паскаль, Turbo Pascal, PascalABC.NET 2 27.03.2011 07:56
работа с процедурами и функциями. Tanushka5606 Паскаль, Turbo Pascal, PascalABC.NET 2 06.05.2009 23:01
работа со строковыми процедурами и функциями pooharilo Паскаль, Turbo Pascal, PascalABC.NET 3 26.12.2008 23:51