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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2014, 18:26   #1
schibeki
Пользователь
 
Регистрация: 27.11.2013
Сообщений: 67
По умолчанию Массив а[1..8], заполненный случайными числами [-10, 10]. Определить, Если массив не содержит заданное число, то вставить число

Всем привет. вот условие задачи: Сформировать массив а[1..8], элементы которого выбираются случайным образом из интервала [-10, 10]. Определить методом последовательного поиска, содержит он заданное число. Если элемент не найден, то вставить его на первое место. НЕ удается выполнить условие это Если элемент не найден, то вставить его на первое место. Вот собственно код мой. Все работает кроме последнего,т.е. даже не организовано Код Pascal
Код:
Program Pr1;
  Var
       a: array[1..8] of integer;
       k: real; i: integer;
BEGIN
     Randomize;
     for i:=1 to 8 do
          begin         {формирование массива}
                a[i]:=random(10)-10; write(a[i]:4);
         end;
     writeln;   {перевод курсора на новую строку}
     write(' Введите ключ поиска: '); readln(k);
 
{перебор элементов массива и сравнение их с ключом поиска}
     i:=1; while (a[i]<>k) and (i<=8) do i:=i+1;
     if    i<=8   then    writeln('Элемент найден. Его номер - ',i)  else writeln('Элемент не найден');
END.

Последний раз редактировалось Stilet; 30.01.2014 в 18:34.
schibeki вне форума Ответить с цитированием
Старый 30.01.2014, 19:01   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Вот тут
Код:
a[i]:=random(10)-10;
будет в интервале [-10;-1]
Чтобы [-10;10] надо
Код:
a[i]:=random(21)-10;
..то вставить его на первое место.
Это как? Вставить вместо a[1] ?
type_Oleg вне форума Ответить с цитированием
Старый 30.01.2014, 19:19   #3
schibeki
Пользователь
 
Регистрация: 27.11.2013
Сообщений: 67
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Вот тут
Код:
a[i]:=random(10)-10;
будет в интервале [-10;-1]
Чтобы [-10;10] надо
Код:
a[i]:=random(21)-10;
..то вставить его на первое место.
Это как? Вставить вместо a[1] ?
т.е допустим я ввел -2,а его нет в массиве,то поставить это число на первое место массиве,но ничего не сказано про изменчивость массива после вставки данного символа,поэтому без разницы
schibeki вне форума Ответить с цитированием
Старый 30.01.2014, 20:55   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

1) Переставьте условия в while:
while (i <= 8) and (a[i] <> k)
Иначе происходит обращение к элементу за пределами массива
2) Раз без разницы, то и добавьте в ветку else команду a[1] := k.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 30.01.2014, 21:07   #5
schibeki
Пользователь
 
Регистрация: 27.11.2013
Сообщений: 67
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
1) Переставьте условия в while:
while (i <= 8) and (a[i] <> k)
Иначе происходит обращение к элементу за пределами массива
2) Раз без разницы, то и добавьте в ветку else команду a[1] := k.
спасибо большое
schibeki вне форума Ответить с цитированием
Старый 30.01.2014, 21:10   #6
schibeki
Пользователь
 
Регистрация: 27.11.2013
Сообщений: 67
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
1) Переставьте условия в while:
while (i <= 8) and (a[i] <> k)
Иначе происходит обращение к элементу за пределами массива
2) Раз без разницы, то и добавьте в ветку else команду a[1] := k.
это можешь глянуть http://programmersforum.ru/showthread.php?t=254157 буду благодарен
schibeki вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сформировать массив а[1..12], упорядоченный по возрастанию. Если он содержит заданное число, удалить его из массива schibeki Паскаль, Turbo Pascal, PascalABC.NET 3 30.01.2014 21:43
Visual Basic. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном массиве столбец... Nember Помощь студентам 0 21.12.2013 21:56
Двумерный массив А. Если заданное число больше первой цифры столбца, то этот столбец удаляется. Комментировать листинг на Паскаль Altana Помощь студентам 0 29.05.2012 11:30
Вставить число в массив Julia13 Помощь студентам 3 08.01.2012 16:51