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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2011, 21:19   #1
IvaN9900
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 14
По умолчанию (pascal) Ошибка при выполнении программы

Здравствуйте! Маленькая предистория: решил я перед сессией подучить все, что было пройдено по паскалю за 1семестр, т.к. на пары не ходил, а если и ходил, то ничего не делал.
Вобщем решил написать программку, считающую кол-во элементов одномерного массива, вот:
Код:
Program massiv;
Uses crt;
var
i, j :integer;
mas: array [1..random(55)] of integer;
Begin
clrscr;
Writeln;
For i:=1 to random(55) do
begin
Randomize;
mas[i]:= Random (20);
Write (mas[i] :4)
end;
j:=i;
if j>i then
begin
writeln('Ошибка!');
end
else
begin
Writeln('кол-во эл-тов=',j);
End;
end.
а она иногда выдает ошибку "Ошибка: N- выход за границы диапазона изменения индекса a..b" ,при этом массив заполняется, а количество элементов не выводится. Я так и не смог понять в чем тут дело, поможете? Заодно подскажите, как можно уменьшить количество кода, а то по-моему немного громоздко получилось..
IvaN9900 вне форума Ответить с цитированием
Старый 24.11.2011, 21:24   #2
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Код:
Program massiv;
Uses crt;
var
i, j :integer;
mas: array [1..55] of integer;
Begin
clrscr;
Writeln;
For i:=1 to 55 do
begin
Randomize;
mas[i]:= Random (20);
Write (mas[i] :4)
end;
j:=i;
if j>i then
begin
writeln('Ошибка!');
end
else
begin
Writeln('кол-во эл-тов=',j);
End;
end.

и вдумайтесь в это)
Код:
...
j:=i;
if j>i then
...
нет смысла проверять условие j>i
Skype: CODERua

Последний раз редактировалось [CODER]; 24.11.2011 в 21:28.
[CODER] вне форума Ответить с цитированием
Старый 24.11.2011, 22:43   #3
IvaN9900
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 14
По умолчанию

Facepalm. Действительно глупость написал, мозг плывет.. а по поводу ошибки есь какие-нибудь соображения?
IvaN9900 вне форума Ответить с цитированием
Старый 24.11.2011, 23:02   #4
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

IvaN9900... ошибка у вас возникает по следующей причине....
вы объявляете массив mas: array [1..random(55)] of integer; тобишь от 1 до (от 0 до 54) точно не известно.... а затем в цикле обращаетесь от 1 до (от 0 до 54)...
тоесть если в первом случае сгенирирует меньше чем во втором... у вас и выскочит ошибка... задайте эти значения числами... либо через константу...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 24.11.2011, 23:07   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
mas: array [1..random(55)] of integer;
это АБВГД паскаль такую жесть компилит?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 24.11.2011, 23:10   #6
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Код:
mas: array [1..random(55)] of integer;
это АБВГД паскаль такую жесть компилит?
сам удивился... но реально компилит)))
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 25.11.2011, 02:12   #7
IvaN9900
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 14
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Код:
mas: array [1..random(55)] of integer;
это АБВГД паскаль такую жесть компилит?
а что именно тут "жесть"?
IvaN9900 вне форума Ответить с цитированием
Старый 25.11.2011, 09:53   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Какой паскаль такое КОМПИЛИТ?!!

TurboPascal абсолютно резонно отказывается:



а PascalABC такое действительно кушает... с ума сойти!!!! o_O!!!
я в шоке!!!


И мой Вам совет.
Выкиньте этот Pascal ABC с его закидонами напрочь!!!
там нет элементарнейших вещей, которые имеются в TurboPascal (и в любом другом нормально Паскале)!
Зато полно бреда!

для бредовых компиляторов и код бредовый!
Код:
var
  mas: array [1..random(55)] of integer;
  i : integer;
begin
  try
    i := 1;
    while i<=55 do begin
        mas[i] := 1;
        inc(i)
    end;
  except
    dec(i)
  end;
  WriteLn('Количество элементов в массиве: ',i);
  Readln;
end.

Последний раз редактировалось Serge_Bliznykov; 25.11.2011 в 10:08.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.11.2011, 12:47   #9
IvaN9900
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Какой паскаль такое КОМПИЛИТ?!!

TurboPascal абсолютно резонно отказывается:



а PascalABC такое действительно кушает... с ума сойти!!!! o_O!!!
я в шоке!!!


И мой Вам совет.
Выкиньте этот Pascal ABC с его закидонами напрочь!!!
там нет элементарнейших вещей, которые имеются в TurboPascal (и в любом другом нормально Паскале)!
Зато полно бреда!

для бредовых компиляторов и код бредовый!
Код:
var
  mas: array [1..random(55)] of integer;
  i : integer;
begin
  try
    i := 1;
    while i<=55 do begin
        mas[i] := 1;
        inc(i)
    end;
  except
    dec(i)
  end;
  WriteLn('Количество элементов в массиве: ',i);
  Readln;
end.
а нас в колледже учат по ABC, и только по ABC..
Спасибо за совет, попробую пописАть в турбо..
IvaN9900 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при выполнении программы Гурам Общие вопросы Delphi 1 18.11.2010 18:53
При выполнении программы ошибка. Cyber Помощь студентам 12 02.10.2010 17:16
Ошибки при выполнении программы grustniy Общие вопросы Delphi 2 04.09.2010 07:19
критическая ошибка при выполнении программы Познающий Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 18.11.2009 16:51
Ошибка и падение (выход) Excel при выполнении сложной программы на VBA Serge_Bliznykov Microsoft Office Excel 6 13.08.2008 16:50