Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Андрей1926
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 108
1

Цикл работает не так как я хочу. Исключение IndexOutOfRangeException

13.09.2019, 00:03. Просмотров 1600. Ответов 4
Метки нет (Все метки)

Программа должна после каждого считывания строки записывать ее в ячейку массива и прибавлять к переменной отвечающей за количество записываний единицу. А потом рандомно в диапазоне равном количеству записей вывести в строке строку массива.

В файле 5 строк, то есть считать программа должна пять раз и индекс массива должен быть 5. Но у меня вылазит IndexOutOfRangeException. Непонятно в чем причина, еще я не очень внимательный.


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var
  f: text;
  foe: integer;
  foes: array[1..10] of string;
 
begin
  var i: integer;
 
  assign(f, 'враги.txt');
  reset(f);
    i := 1;
  while not eof(f) do
    try
  begin
    read(f, foes[i]);
        i := i + 1;
  end;
  foe := random(1, i);
  write('Вы встретили' + foes[foe]);
  except
  on System.IndexOutOfRangeException do
    writeln('Фигня какая-то');
 
end;
    read;
end.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2019, 00:03
Ответы с готовыми решениями:

Процедура val работает не так как я хочу
У меня есть ввод с клавиатуры f01,f02,f03,f04 формул. Если записывать вместо процедуры val...

Реализация шифра Цезаря. Как обойти исключение IndexOutOfRangeException?
Здравствуйте, подскажите пожалуйста как обойти исключение: надо было реализовать шифр Цезаря.....

Цикл не работает так как надо
Всем привет! Народ, у меня цикл в программе работает не так как надо. 1 круг цикла происходит в...

Исключение System.IndexOutOfRangeException
Всем привет, проблема следующая. Написал небольшую программу, суть программы такова, берется массив...

Почему цикл работает не так, как ожидается?
Двумя способами реализовал цикл, который увеличивает годовую зарплату на 10% при нажатии 'y' до тех...

4
kotAV
103 / 78 / 41
Регистрация: 15.09.2017
Сообщений: 355
Завершенные тесты: 5
13.09.2019, 01:05 2
Лучший ответ Сообщение было отмечено Sun Serega как решение

Решение

Андрей1926,
Pascal
15
    readln(f, foes[i]);
А вообще, не используйте статические массивы, используйте динамические:

Pascal
1
2
3
4
5
6
begin
  var enemies := ReadAllLines('враги.txt');
  writeln($'Вы встретили {enemies[Random(enemies.Length)]}');
  
  readln;
end.
1
Андрей1926
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 108
13.09.2019, 01:46  [ТС] 3
kotAV, ух ты, пасиба. Так где у меня ошибка? Переменная ведь не выходит за рамки десяти. Не очень понимаю что сделал не так. //понял не разглядел LN

Вообще мои знания ограничиваются уроками с ютуба и парой книжек довольно устаревших уже. И мне говорили что ассижн это не актуальная фигня уже давно.
0
kotAV
103 / 78 / 41
Регистрация: 15.09.2017
Сообщений: 355
Завершенные тесты: 5
13.09.2019, 04:07 4
Писать на PascalABC.NET в стиле FreePascal всё равно что идти в ресторан и жрать там дошик))

Цитата Сообщение от Андрей1926 Посмотреть сообщение
мои знания ограничиваются уроками с ютуба и парой книжек довольно устаревших уже
Если хотите нормальную книгу, то есть Книга А.В. Осипова по PascalABC.NET (именно по нему). Она ещё не дописана, но страниц 300-350 точно есть, скучать не придётся)) Если задумаете читать, то сразу экспериментируйте над приведёнными там программами. А если лень читать столько, то есть кратка справка в самом PascalABC.NET (F1). Ютуб почти не смотрел, там чаще всего одна ересь на фрипаскальском доисторическом))
0
Sun Serega
673 / 451 / 225
Регистрация: 07.04.2017
Сообщений: 1,946
13.09.2019, 08:35 5
Ну и кроме этих источников, на главном сайте http://pascalabc.net есть несколько презентаций, в кратце объясняющих основные фичи языка, а так же примеры у вас в папке C:\PABCWork.NET\Samples.
0
13.09.2019, 08:35
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2019, 08:35

Почему возникает исключение IndexOutOfRangeException?
Подскажите, в чем может быть ошибка?

Цикл ввода строкового массива работает не так, как нужно
Объясните пожалуйста, почему цикл выполняется на один раз меньше числа, которое мы вводим с...

Исключение System.IndexOutOfRangeException при чтении поля
List<string> list = new List<string>(); int sum = 0, big =0, amm=0; using (SqlCeConnection conn =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.