Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 19.09.2020
Сообщений: 13

В последовательности найти позицию лишнего числа, не совпадающего с остальными по четности

16.10.2020, 15:40. Показов 1443. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте! Изучаю программирование на паскале и вот какая задача подвернулась:

Есть последовательность из n чисел, в этой последовательности надо найти лишнее число, не совпадающее с остальными по парности (например, в последовательности 2 4 10 5 12 лишним числом будет 5, а в 1 1 1 2 1 лишней будет цифра 2). Саму последовательность я сделал, а вот как тут применить "odd" я не знаю (если он здесь вообще нужен). Может кто-то помочь с решением?
Pascal
1
2
3
4
5
6
7
8
9
var 
  n,i,x:integer;
Begin
  Readln(n);
  For I:=1 to n do
    Begin
      Readln(x);
    end; 
end.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.10.2020, 15:40
Ответы с готовыми решениями:

Найти числа из заданной последовательности, которые делятся на все числа из другой последовательности
Вход программы имеет следующий формат. Сначала вводится N > 0- количество чисел в последовательности А. Далее идут N целых чисел. После...

Задача на case: Определить k-ую позицию цифру последовательности 10111213..99,в которой выписаны подряд все двухзначные числа
Дано натуральное k.Определить k-ую позицию цифру последовательности 10111213..99,в которой выписаны подряд все двухзначные числа. Вообще не...

Найти номер элемента вектора, совпадающего с заданным целым X. Дихотомия.
Пусть элементы целочисленного вектора A длины n упорядочены по возрастанию. Найти номер элемента, совпадающего с заданным целым x . При...

4
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
16.10.2020, 17:17
давай разберёмся.

Цитата Сообщение от redhead_fox Посмотреть сообщение
Есть последовательность из n чисел, в этой последовательности надо найти лишнее число, не совпадающее с остальными по парности
согласись, что задача имеет смысл только при n>=3 (для одного числа числа вообще нельзя сказать, что оно не совпадает с остальными числами по чётности, а для двух чисел нельзя сказать, какое из них "верное"

ну а дальше просто
вводим три числа. получаем их чётность. То, чего больше (чётных или нечётных) - то и является основой в данном последовательности. Значит, нужно найти то, что не совпадает с основой.

это можно "в лоб" написать так:
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
var 
  n,i,x1,x2,x3 :integer;
  base_odd : boolean;
begin
repeat
  Write('Введите n: ');
  ReadLn(n);
  if n<3 then WriteLn('Ошибка, n должно быть больше или равно 3-м');
until n>2;
WriteLn('Введите ',n,' чисел: ');
ReadLn(x1,x2,x3);
if (odd(x1)=odd(x2)) or (odd(x1)=odd(x3)) then base_odd := odd(x1)
else 
  base_odd := odd(x2);
if (odd(x1)<>base_odd ) or (odd(x2)<>base_odd ) or (odd(x3)<>base_odd ) then begin
if odd(x1)<>base_odd then WriteLn('Лишнее :',x1);
if odd(x2)<>base_odd then WriteLn('Лишнее :',x2);
if odd(x3)<>base_odd then WriteLn('Лишнее :',x3);
end
else
  for i:=1 to n-3 do begin
    ReadLn(x1);
    if odd(x1)<> base_odd  then begin WriteLn('Лишнее :',x1); Break end 
  end;
end.
тут нет проверки на то, было ли лишнее число или нет.
ну и, вполне возможно, что вместо ReadLn() лучше использовать Read()
1
0 / 0 / 0
Регистрация: 19.09.2020
Сообщений: 13
17.10.2020, 16:52  [ТС]
Спасибо!
Но вот какая проблема — в задаче надо было найти не само лишнее число, а его позицию

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses crt;
var 
  n,i,x1,x2,x3:integer;
  base_odd: boolean;
begin
repeat
  ReadLn(n);
  if n<3 then WriteLn('Ошибка');
until n>2;
ReadLn(x1,x2,x3);
if (odd(x1)=odd(x2)) or (odd(x1)=odd(x3)) then base_odd := odd(x1)
else 
  base_odd := odd(x2);
if (odd(x1)<>base_odd ) or (odd(x2)<>base_odd ) or (odd(x3)<>base_odd ) then begin
if odd(x1)<>base_odd then WriteLn(pos(x1));
if odd(x2)<>base_odd then WriteLn(pos(x2));
if odd(x3)<>base_odd then WriteLn(pos(x3));
end
end.
На 14 строке выдаёт ошибку "Program3.pas(14) : Неверное количество параметров функции"
pos ведь и должен отвечать за написание позиции лишнего числа или я ошибаюсь?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
17.10.2020, 19:28
Лучший ответ Сообщение было отмечено redhead_fox как решение

Решение

mr-Crocodile,
но можно ведь сильно проще:
просто запомним позиции первых четного и нечетного и посчитаем количества тех и других.
Если есть среди количеств 1, то данные верны, знаем, что вывести.
Если единички нет, то исходные данные неверны.

Добавлено через 50 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var n, p, q, r, s, t: Integer;
begin
  Read(n);
  for n:=1 to n do begin
    Read(t);
    if Odd(t) then begin
      Inc(r); if p=0 then p:=n;
    end else begin
      Inc(s); if q=0 then q:=n;
    end;
  end;
  if      r=1 then WriteLn('Позиция лишнего: ',p)
  else if s=1 then WriteLn('Позиция лишнего: ',q)
  else             WriteLn('Ошибка в данных');
end.
1
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
19.10.2020, 09:30
Цитата Сообщение от bormant Посмотреть сообщение
но можно ведь сильно проще:
просто запомним позиции первых четного и нечетного и посчитаем количества тех и других.
Если есть среди количеств 1, то данные верны, знаем, что вывести.
Если единички нет, то исходные данные неверны.
да, согласен, хороший алгоритм!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.10.2020, 09:30
Помогаю со студенческими работами здесь

Найти позицию числа
C# Для произвольного числа найдите позицию указанной цифры. Пример (52341,4 = 2)

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

Найти позицию последнего вхождения числа M в массив A
Дан массив a и число m типа dword, найти позицию последнего вхождения числа m в массив a Постоянно выводит просто последний элемент, а не...

Ввести целое число и найти позицию наибольшего числа
Ничего не могу придумать, я не прошу код просто подбросьте какую-то идею). Делать через цикл или массив?

В последовательности найти числа, которые близки к числам другой последовательности
даны две последовательности чисел A = {a1, a2,…, an}, B = {b1, b2, …, bn},напечатать те и только те числа aj из последовательности A, для...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru