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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2017, 23:30   #1
peter965
Пользователь
 
Регистрация: 01.02.2017
Сообщений: 10
По умолчанию Нужна программа чтобы вводила целые числа , проверяла их на уникальность и лишь потом разрешала чтобы входил в ячейку.

Нужна программа чтобы вводила целые числа , проверяла их на уникальность и лишь потом разрешала чтобы входил в ячейку........помогите пожалуйста!!!!! на (Pascal)
peter965 вне форума Ответить с цитированием
Старый 02.02.2017, 04:17   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Кто и в какую ячейку должен входить ? В партейную ?
digitalis вне форума Ответить с цитированием
Старый 02.02.2017, 15:48   #3
peter965
Пользователь
 
Регистрация: 01.02.2017
Сообщений: 10
По умолчанию массивы

например вот так, но он будет проверять на уникальность и лишь потом вставлять в (b[i]).Я думаю может создать 2 массива , в 1 проверять и в 2 вставлять!

Код:
program ex;
const a=10;
type
  arr=array[1..a] of integer;
  
var
  b:arr;
  i:integer;
Begin
  
  for i:=1 to a do 
    begin
      readln(b[i]);
      end;
peter965 вне форума Ответить с цитированием
Старый 02.02.2017, 16:04   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от peter965 Посмотреть сообщение
например вот так, но он будет проверять на уникальность и лишь потом вставлять в (b[i]).
как звучит задача изначально? что нужно сделать?


Цитата:
Сообщение от peter965 Посмотреть сообщение
Я думаю может создать 2 массива , в 1 проверять и в 2 вставлять!
абсолютно бессмысленная идея - достаточно одного массива:

Код:
program ex;
const a=10;
type
  arr=array[1..a] of integer;
  
var
  b : arr;
  element : integer;
  i, j, isFound : integer;
Begin
  for i:=1 to a do 
    begin
      repeat
         Write('Введите ',i,'-й элемент: ');
         ReadLn(element);
         isFound := 0;
         for j:=1 to i do 
           if b[j]=element then begin 
               isFound:=1; 
               Break;
           end; 
           if isFound=1 then WriteLn('Введённое значение уже есть в массиве. Вводите ещё раз!')
      until isFound=0;   
      b[i] := element;
  end;
.....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.02.2017, 16:12   #5
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Хотел отправить, но Serge_Bliznykov уже опередил
Маленькая поправка
Код:
for j:=1 to i-1 do
eoln вне форума Ответить с цитированием
Старый 02.02.2017, 16:12   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
mx:=0; //сколько мы уже ввели
for i:=1 to a do begin
  readln(x);
  n:=mx+1; // считаем что нашего числа нет
  for j:=1 to mx do // попробуем найти
    if arr[j]=x then begin 
     n:=j;//а теперь знаем что есть на месте j
     break; //ну раз есть то закончим поиск(цикл)
  end;

  // а теперь "вспомним" есть или нет
  if n>mx then begin //его все-таки нет
    mx:=mx+1; //чисел становится все больше
    arr[mx]:=x;//запомним новое
  end;
//уфф, можно продолжать ввод 
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 02.02.2017 в 16:14.
evg_m вне форума Ответить с цитированием
Старый 02.02.2017, 16:19   #7
peter965
Пользователь
 
Регистрация: 01.02.2017
Сообщений: 10
По умолчанию

Спасибо вам большое!!))
peter965 вне форума Ответить с цитированием
Старый 02.02.2017, 16:45   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Маленькая поправка
Код:
for j:=1 to i-1 do
"маленькая" - но очень существенная!
Полностью согласен с исправлением бага.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.02.2017, 23:19   #9
peter965
Пользователь
 
Регистрация: 01.02.2017
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
"маленькая" - но очень существенная!
Полностью согласен с исправлением бага.
А как работает ( if b[j]=element then begin) в первый раз когда мы еще не знаем b[1]? Просто отправляет FALSE ?
peter965 вне форума Ответить с цитированием
Старый 03.02.2017, 10:54   #10
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Да очень просто: в начале перед циклом ставим беусловное:
Код:
 readln(arr[1]); mx := 1 ;
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна программа на си# и чтобы работала на протеусе Владимир_21 Фриланс 2 14.01.2017 02:09
Нужна программа чтобы за меня ставила ставки по моему алгоритму в БК на сайте igor889 Фриланс 9 12.04.2016 13:21
Дана матрица, преобразовать так, чтобы в начале были положительные числа, а потом отрицательные(с сохранением порядка) Non_stop Общие вопросы C/C++ 2 23.11.2014 18:01
assembler. Задан массив А из N чисел. Преобразовать этот массив так, чтобы сначала шли четные числа, а потом – нечетные Transcend Помощь студентам 5 18.03.2013 11:42
Нужна функция или процедура для того чтобы программа стала резидентной! star007 Помощь студентам 3 22.03.2010 08:59