Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.09.2013
Сообщений: 27

В случайном массиве, если ввести элемент для поиска, которого нет, то вылетает ошибка

01.04.2015, 20:31. Показов 562. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В случайном массиве, если ввести элемент для поиска, которого нету, то вылетает ошибка. Если элемент есть - она его находит. Если while заменить на for всё работает. Помогите, пожалуйста.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
uses crt;
const nmax=1000;
var a:array[1..nmax] of integer;
    i,n,c,idxi,k:integer;
    p:real;
    
Begin
  writeln('Случайный ввод массива? 1[да]/0[нет]:');
  Readln(c);
  if (c=1) then                {если '1', то выполнить заполнение}
    begin
      n:=1000;                     {количество элементов массива}
      for i:=1 to n do a[i]:=Random(100); {присвоение элементам  рандомных значений}
      writeln('Случайный массив');
      for i:=1 to n do write(a[i],' ');   {вывод исходного массива}
      writeln
      end
  else                                     {если '0'}
    begin
      writeln('Введите размер массива');
      Readln(n);                           {ввод размера массива}
      Writeln('Введите массив');
      for i:=1 to n do read(a[i]);          {ввод значений элементов массива}
      Writeln('Результат ввода');
      for i:=1 to n do write(a[i]);         {вывод исходного массива}
      Writeln;
    end;
 write('Введите символ = ');
  readln(p);
  i:=1;
  while (i<=n)and(a[i]<>p) do 
 
  Inc(i);
if a[i]=p then 
begin
idxi:=i;
writeln('Символ ',p,' есть его позиция i=',idxi)
end
else
begin
writeln('Символа ',p,' нету..');
end;
 
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2015, 20:31
Ответы с готовыми решениями:

Если в данном массиве нет отрицательных элементов, то сформировать новый массив: каждый элемент которого является суммой предыдущих элементов.
Если в данном массиве нет отрицательных элементов, то сформировать новый массив: каждый элемент которого является суммой предыдущих...

Найти наибольший элемент в массиве A которого нет в массиве B
Даны два массива натуральных чисел A ( m ) и B ( n ) . Найти наибольший элемент в массиве A , которого нет в массиве B.

В массиве А каждый элемент заменить на ближайший элемент, если он больше, если нет, то заменить на нуль
В массиве А каждый элемент заменить на ближайший элемент, если он больше, если нет, то заменить на нуль.... Добавлено через 23 часа 11...

6
2 / 2 / 4
Регистрация: 24.01.2015
Сообщений: 27
01.04.2015, 20:54
Знаешь, если константу nmax сделать 1001 тогда все заработает
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
01.04.2015, 21:11
Pascal
1
2
3
4
5
i:=1;
  while (i<=n)and(a[i]<>p) do 
 
  Inc(i);
if  ...
заменить на
Pascal
1
2
3
4
5
i:=0;
  while (i<n)and(a[i]<>p) do 
 
  Inc(i);
if
Добавлено через 2 минуты
Цитата Сообщение от Marsht Посмотреть сообщение
Знаешь, если константу nmax сделать 1001 тогда все заработает
Это проблему с потерей первого значения не решит.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8657 / 4493 / 1669
Регистрация: 01.02.2015
Сообщений: 13,902
Записей в блоге: 12
01.04.2015, 21:11
Pascal
1
2
3
 while (i<=n)and(a[i]<>p) do 
  Inc(i);
if a[i]=p then
Если элемент не найден, то после завершения цикла while в i будет значение n+1, которое при проверке if a[i] даст аварийное завершение.
Можешь проверять наличие элемента if i<=n then.
0
2 / 2 / 4
Регистрация: 24.01.2015
Сообщений: 27
01.04.2015, 21:21
Цитата Сообщение от Joy Посмотреть сообщение
Это проблему с потерей первого значения не решит.
А мне кажется что все равно все отлично проверяется и если i изначально сделать 0 , то это ничего не изменит. Но я могу ошибаться конечно, ведь я дико не опытен

Добавлено через 3 минуты
Еще можно после
Pascal
1
2
3
4
i:=1;
  while (i<=n)and(a[i]<>p) do 
 
  Inc(i);
добавить

Pascal
1
 if i>=n then i:=n;
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
01.04.2015, 21:21
Я и сам ересь написал, т.к. с планшета пишу.
Marsht, у него по коду I=1 потом сразу инкремент и сравнение начинается со 2 значения массива, первый теряется

Вот правильно:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
const nmax=1000;
var a:array[1..nmax] of integer;
    i,n,c,idxi,k:integer;
    p:real;
    
Begin
  writeln('Случайный ввод массива? 1[да]/0[нет]:');
  Readln(c);
  if (c=1) then                {если '1', то выполнить заполнение}
    begin
      n:=1000;                     {количество элементов массива}
      for i:=1 to n do a[i]:=Random(100); {присвоение элементам  рандомных значений}
      writeln('Случайный массив');
      for i:=1 to n do write(a[i],' ');   {вывод исходного массива}
      writeln
      end
  else                                     {если '0'}
    begin
      writeln('Введите размер массива');
      Readln(n);                           {ввод размера массива}
      Writeln('Введите массив');
      for i:=1 to n do read(a[i]);          {ввод значений элементов массива}
      Writeln('Результат ввода');
      for i:=1 to n do write(a[i]);         {вывод исходного массива}
      Writeln;
    end;
 write('Введите символ = ');
  readln(p);
  i:=1;idxi:=0;
  while (i<n) do 
if a[i]=p then 
begin
idxi:=i;
writeln('Символ ',p,' есть его позиция i=',idxi);
break;
end
else inc(i);
if idxi=0 then 
writeln('Символа ',p,' нету..');
 
 
end.
0
0 / 0 / 0
Регистрация: 27.09.2013
Сообщений: 27
01.04.2015, 22:48  [ТС]
Всем большое спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2015, 22:48
Помогаю со студенческими работами здесь

Найти минимальный элемент массива которого нет в массиве
Как найти минимальный элемент массива которого нет в массиве?

Ввести массив .Если в массиве нет нулевых элементов, то заменить все положительные элементы массива на 0
Ввести массив A(n).Если в массиве нет нулевых элементов, то заменить все положительные элементы массива на 0(нуль) иначе найти все...

Сформировать одномерный массив, каждый элемент которого равен первому положительному элементу соответствующего столбца, если такого нет, то нулю
С помощью датчика случайных чисел сформировать матрицу mxn. -Сформировать одномерный массив, каждый элемент которого равен первому...

сформировать одномерный массив, каждый элемент которого равен первому положительному элементу соответствующего столбца, если такого нет, то нулю
С помощью датчика случайных чисел сформировать матрицу mxn. сформировать одномерный массив, каждый элемент которого равен первому...

В каждой строке матрицы Z обнулить максимальный по абсолютной величине элемент, если его нет в массиве X
1. Даны целочисленная матрица Z и целочисленный массив X. В каждой строке матрицы Z обнулить максимальный по абсолютной величине элемент,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru