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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2013, 00:47   #1
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию Делфи. При вводе с клавиатуры не работает.

Нужно найти максимальную длину последовательности элементов массива,которые идут подряд и не увеличиваются.
Когда заполняется случайными числами,то работает правильно.
Когда с клавиатуры - всегда выдает ноль.
В чем ошибка?

Код:
program Zadacha_1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const Nmax=20;
type mass=array[1..Nmax] of integer;

procedure gMass1( var m:mass;   {заповнення випадковими числами}
                  var n:integer);
var i:integer;
begin
      randomize;
      n:=random(20);
      for i:=1 to n do
      m[i]:=10+random(21);
end;



procedure gMass2( var m:mass;             {заповнення з клавіатури}
                  var n:integer);
                  var i:integer;
begin
      repeat  writeln('vvedit n vid 1 do 10');
              readln(n);
      until (n>=1)and(n<=10);
      for i:=1 to n do begin
                           write('vvedit element z indexom ',i,' ');
                           readln(m[i]);
                       end;
end;



procedure outMass(const m:mass;n:integer);    {виведення на екран}
var i:integer;
begin
  for i:=1 to n do begin
                      write(m[i]);
                      writeln;
                   end;
end;



function poslid(var m:mass;n:integer):integer;
var pop,max,d,i:integer;
begin
  i:=1;d:=0; pop:=30;max:=0;
  for i:=1 to n do
    begin
      if m[i]<=pop then begin
                          d:=d+1;
                          if max<d then max:=d
                        end
                   else d:=1;
      pop:=m[i];
    end;
    poslid:=max;
end;




var a,k,n,cnt:integer;m:mass;

begin
writeln('vuberit sposib zapovnen masuvy: vupadkovi chusla - vvedit 1');
writeln('                                z klaviatyru - bud-yake inshe shuslo');
readln(a);
if a=1 then begin
                gMass1(m,n);
                outMass(m,n);
            end
       else gMass2(m,k);
       writeln;
writeln;
cnt:=poslid(m,n);
writeln(cnt);
readln;

end.
Jane_Air вне форума Ответить с цитированием
Старый 05.11.2013, 05:27   #2
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Код:
    else gMass2(m,k);
вы передаете k, а потом
Код:
cnt:=poslid(m,n);
вызываете n.
поэтому зачем вам вообще k?
делайте так
Код:
       else gMass2(m,n);
       writeln;
writeln;
cnt:=poslid(m,n);
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!
SaLoKiN вне форума Ответить с цитированием
Старый 05.11.2013, 11:42   #3
Jane_Air
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 40
По умолчанию

Спасибо большое!))
Случайно видимо ошиблась...
Jane_Air вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на Visual C# работает при запуске руками, но не работает при попытки автоматического запуска Bug$ Помощь студентам 18 21.10.2013 16:22
Пробелы при вводе KingWaR56 БД в Delphi 6 11.12.2011 09:58
Не срабатывание русской кодировки при вводе символов с клавиатуры Syltan Общие вопросы C/C++ 5 24.05.2010 19:16
Убрать пробелы при вводе выражения с клавиатуры denisgl Помощь студентам 0 18.05.2010 19:50
TurboC - баг при вводе строки с клавиатуры FW-TOT Общие вопросы C/C++ 4 21.11.2008 01:39