4 / 3 / 2
Регистрация: 11.08.2016
Сообщений: 352
1

Найти число из диапазона вне таблицы

01.11.2017, 15:52. Показов 1106. Ответов 4
Метки нет (Все метки)

Здравствуйте!
Помогите, пожалуйста решить:
Элементы таблицы A[1:N] являются целыми числами от 0 до N. Известно, что все элементы таблицы А различны. Составить алгоритм, который найдет число из диапазона от 0 до N, которое не встречается в данное таблице
Алгоритм примерно такой
1. Переменные, среди которых объявляем массив и i типа byte
2. Начало
3. Спрашиваем каков диапазон readln(N);, например от 0 до 78
4. Цикл, скорее всего for
5. Запишем элементы массива использую random
6. Цикл тут не уверен, скорее всего for, но есть подозрение на while
7. Условие: если число не встречалось в таблице вывести на экран (тут самое интересное как это сделать, ведь i отвечает за хранение индексов)
8.конец
Вот прилагаю код, но его надо довести до ума
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var N: integer;
    s: array [1..N] of integer;
    i: integer;
begin
   randomize;
   writeln('Введите размер таблицы: '); // или тут надо спросить число?
   readln(N);
   for i:=1 to N do begin
      s[i]:=random(N);
   end;
   for i:=1 to N do
   if s[i]=N then writeln('Все элементы в таблице!')
   else writeln('Элемент отстуствует!',s[i]);
end.
Кликните здесь для просмотра всего текста

p3.pas(2) : Ожидалось константное выражение

Огромное спасибо всем, кто сможет помочь мне.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2017, 15:52
Ответы с готовыми решениями:

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

Определить число элементов массива, значения которых лежат вне диапазона [–5; 7]
Задан массив из 20 элементов. Определить число элементов массива, значения которых лежат вне...

Найти сумму элементов массива, лежащих вне диапазона от А до В
Помогите пожалуйста решить последнюю задачку! Дан одномерный массив чисел.Составить блок-схему...

Не получается исправить ошибку (Вводится диапазон, где 1-ое число-начало диапазона, 2-ое число приращени, 3-е число конец диапазона)
Здравствуйте. Не могу исправить ошибку. Задание: Вводится диапазон, (например 5,1,10) где 1-ое...

4
Alvin Seville
337 / 269 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
01.11.2017, 16:09 2
Лучший ответ Сообщение было отмечено Uni_programist как решение

Решение

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
const
  N = 2;
  M = 2;
 
var
  Matrix: array [0..N - 1, 0..M - 1] of integer;
 
function InMatrix(x: integer): boolean;
begin
  Result := false;
  for var i := 0 to N - 1 do
  begin
    for var j := 0 to M - 1 do
      if Matrix[i, j] = x then
      begin
        Result := true;
        break;
      end;
    if Result then break
  end;
end;
 
begin
  var A := ReadlnInteger('A:');
  var B := ReadlnInteger('B:');
  
  for var i := 0 to N - 1 do
    for var j := 0 to M - 1 do
      Readln(Matrix[i, j]);
  
  for var x := A to B do
    if not InMatrix(x) then WriteFormat('{0} ', x);
end.
Добавлено через 32 секунды
Найдет все числа из [A; B], отсутствующие в матрице.

Добавлено через 2 минуты
Цитата Сообщение от Uni_programist Посмотреть сообщение
таблицы A[1:N]
Вы сказали таблицы (я как понял имелась ввиду матрица), а у вас одномерный массив.

Добавлено через 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
const
  N = 2;
 
var
  C: array [0..N - 1] of integer;
 
function InArray(x: integer): boolean;
begin
  Result := false;
  var i := 0;
  while not Result and (i < N) do
  begin
    if C[i] = x then
      Result := true;
    Inc(i);
  end;
end;
 
begin
  var A := ReadlnInteger('A:');
  var B := ReadlnInteger('B:');
  
  for var i := 0 to N - 1 do
    Readln(C[i]);
  
  for var x := A to B do
    if not InArray(x) then WriteFormat('{0} ', x);
end.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32482 / 20968 / 8114
Регистрация: 22.10.2011
Сообщений: 36,239
Записей в блоге: 7
01.11.2017, 16:15 3
N элементов массива, все различны, заполнены числами от 0 до N, то есть, разных чисел всего N+1. Итого - в массиве отсутствует всегда только одно-единственное число:

Pascal
1
2
3
4
5
6
7
8
const n = 10;
begin
  var a := new integer[n](0, 2, 3, 4, 5, 1, 7, 8, 9, 10); // это уже заполнено, как - проблема на вашей стороне
  
  var x := [0 .. n];
  for var i := 0 to n - 1 do x := x - [a[i]];
  Print(x);
end.
Или без множеств:
Pascal
1
2
3
4
5
6
7
8
const n = 10;
begin
  var a := new integer[n](0, 2, 3, 4, 5, 1, 7, 8, 9, 10);
  
  var sum := n * Succ(n) div 2; // сумма чисел от 0 до n
  for var i := 0 to n - 1 do sum := sum - a[i];
  Print(sum);
end.
2
4 / 3 / 2
Регистрация: 11.08.2016
Сообщений: 352
01.11.2017, 16:43  [ТС] 4
Volobuev Ilya, Спасибо огромное- это то что необходимо, правда придется подумать над логикой задачи и кода, ведь смысл учиться! Однако можно уточнить, существует ли упрощение варианта?
volvo, Спасибо огромное! Ваш вариант довольно простой, что может подойти в соответствии с требованиями! Спасибо!
0
Alvin Seville
337 / 269 / 132
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
01.11.2017, 16:46 5
Цитата Сообщение от Uni_programist Посмотреть сообщение
Volobuev Ilya, Спасибо огромное- это то что необходимо, правда придется подумать над логикой задачи и кода, ведь смысл учиться! Однако можно уточнить, существует ли упрощение варианта?
У меня вариант решения для задачи более общей "вывод всех чисел из [A; B], которых нет в векторе-массиве/матрице". У volvo решение более специфическое - в том плане, что именно под эту задачу "заточено".
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2017, 16:46
Помогаю со студенческими работами здесь

Вне диапазона
Включаю комп, пишет что &quot;Вне диапазоне 35.4kHZ/79Hz&quot;. Думал проблемы с монитором, переключил на...

Найти число точек, находящихся вне круга
Пара(Xk,Yk) представляет координаты одной из n точек на плоскости.найти числоточек находящихся вне...

Найти число точек, находящихся вне круга
Пара (X,Y), представляет координаты одной из n точек на плоскости. Найти число точек, находящего...

Вне Диапазона 49гц
Привет народ. Столкнулся с такой проблемой. Играя в игрушку менял разрешение и в один прекрасный...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru