Программа есть ли в числе одинаковые цифры

Составить алгоритм определяющий, есть ли среди цифр введенного трехзначного числа — одинаковые. Число вводится с клавиатуры.

Опять же, научитесь пользоваться операцией — остаток от деления, тогда сможете легко написать эту программу. Отделив разряды трехзначного числа, воспользуйтесь оператором выбора if else, для сравнения отделённых цифр. У вас должно получиться нечто подобное:

#include using namespace std; int main() < setlocale (LC_ALL, «RUS»); cout>a; cout=0a <=99) < coutelse< if (a>=1000) < coutelse < if (((a/100)%10)==((a/10)%10)||((a/10)%10)==(a%10)||((a/100)%10)==(a%10)) < coutelse < coutcout > >

Результат работы программы:

CppStudio.com

Одинаковые цифры введенного числа Введите трехзначное число: 334 Среди цифр введенного трехзначного числа 334 есть одинаковые

Источник: cppstudio.com

Как написать программу по нахождению одинаковых цифр в числе?

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

Это Важно Знать Абсолютно Всем! 11:11 Одинаковые Цифры на Часах Значение — Послание Высших Сил


x = int(input(‘Введите число:’)) def array(x): global a a = [] while x > 0: b = x % 10 a.append(b) x //= 10 return list(reversed(a)) print(array(x)) for i in range(len(a)): if a[i] == a[i+1]: print(‘да’) break else: print(«нет»)
Отслеживать
задан 18 мар 2021 в 6:48
69 1 1 серебряный знак 6 6 бронзовых знаков

прежде чем писать программу, нужно составить алгоритм, по которому работает эта программа. Судя по коду ваш алгоритм такой: 1. записываем число задом наперед.

2. Сравниваем попарно две рядом стоящие цифры. Никакой из этих шагов не приблизил вас к цели ни на бит. Хотя случайно может выдать и правильный результат, например, на число 1446 (или на любое другое, где две одинаковые цифры стоят рядом). А смысл первого шага вообще непонятен.

18 мар 2021 в 8:11

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

У вас цикл while завершается на первой итерации. Уберите отступ перед return .

Вторая ошибка заключается в том, что у вас цикл for выполняется len(a) раз. Поэтому на последней итерации a[i+1] приведет к исключению IndexError. Используйте цикл до len(a) — 1 .

Читайте также:
Программа античит не установлена

Ну и сам алгоритм сравнения чисел неверный. Для числа 121 вы не найдете совпадений, т.к. 1 != 2 и 2 != 1 . Можно сравнить длину множества от a с длиной a . Множество содержит только уникальные элементы последовательности, поэтому, если длины разные, то можно сделать вывод, что какое-то число повторяется.

Избавьтесь от глобальных переменных.

def array(x): nums = [] while x > 0: b = x % 10 nums.append(b) x //= 10 return list(reversed(nums)) x = int(input(‘Введите число: ‘)) a = array(x) print(‘Да’ if len(set(a)) != len(a) else ‘Нет’)

Источник: ru.stackoverflow.com

Что означают одинаковые цифры на часах? Знак ангелов свыше или совпадение?

Разминка для мозгов: проверить наличие двух одинаковых цифр в числе

Сегодня в разделе «Готовые решения» обнаружил програму на Паскале для проверки наличия двух одинаковых цифр в числе.

Задача:

Напишите программу, которая определяет, верно ли, что введённое число содержит по крайней мере две одинаковых цифры, возможно, не стоящие рядом (как, например, 212).

Входные данные
Входная строка содержит одно натуральное число.

Выходные данные
Программа должна вывести слово «YES», если в числе есть две одинаковые цифры, и слово «NO», если такой пары цифр нет.

Если решение перевести с Pascal на C++, оно выглядит так:

using namespace std; int main() < int a, b, c, s; cout > c; do < a = c % 10; c = c / 10; s = c; while (s >0) < b = s % 10; s = s / 10; if (a == b) < cout > if (a == 77) break; > while (c != 0); if (a != 77) cout

Программа работает правильно. Но есть некоторые «шероховатости» как в плане эффективности, так и в плане стиля.

Задание:

Придумайте другой, желательно более оптимальный, алгоритм решения этой задачи и напишите программу.

Примечания. (1) Задание несложное, для новичков. (2) Считаем, что всегда вводится корректное число: положительное целое в пределах типа int (со знаком). (3) При написании программы постарайтесь придерживаться хорошего стиля программирования.

Cranium, так там используется чтение из файла, подшаманьте с библиотекой fstream. С чтением программа становится сложнее )

Читайте также:
Программе не удается найти proplus ww propsww cab

И для красоты программки подправьте слово Number ))

if (a != 77) cout

Новички могут не догнать
15:47
Попробую собрать на коленке

#include #include #include bool eq(int num_) < bool arr[10]=; int num = abs(num_); while( num != 0 ) < int d = num%10; if( arr[d] )< return true; >arr[d] = true; num /= 10; > return false; > int main()

Ahmasoft, очепятку в строке поправил.

На счёт «там используется чтение из файла, подшаманьте с библиотекой fstream» — не понял. Чтение из файла ни «там», ни «здесь» не используется. К тому же эта задачка на соображалку, а не на знание работы с вводом-выводом.

«Новички могут не догнать» — а вот здесь как раз пускай догоняют. Не такой уж и крутой финт.

«Новички могут не догнать» — а вот здесь как раз пускай догоняют.

Пусть лучше так не делают.
Когда одна переменная используется
для хреновой тучи целей, хочется удавить.
В том коде не хватает только

a = 0; return a;

Да и вывод раскидан хрен пойми как.
В общем, код сам по себе выглядит не ахти.

Croessmah, не думал, что позиционируешь себя новичком 😉

Croessmah,

Пусть лучше так не делают.
.
В общем, код сам по себе выглядит не ахти.

Я в задании поэтому и сделал приписку о хорошем стиле программирования.

не думал, что позиционируешь себя новичком

Ну так если я новичок,
что тут скрывать то уж? 😀

#include #include int main() < bool flag = false; int a; std::cin >> a; for (int i = 0; i < 10; i++) < int count = 0, a1 = a; while (a1>0) < if (a1 % 10 == i) count++; if (count >1) < flag = true; break; >a1 = (a1 — (a1 % 10)) / 10; > > if (flag) std::cout

Никита, код рабочий. #include — лишнее.

По эффективности хуже, чем исходный вариант программы: количество выполнения тела внутреннего цикла while в самом плохом случае равно N * 10 . Где N — количество цифр в числе.

Читайте также:
Как резать фотографии программа

Для исходной программы это количество равно N / 2 * (N — N % 2) .

Для варианта Croessmah количество выполений тела цикла равно N .

Ещё варианты будут?

Для варианта Croessmah количество выполений тела цикла равно N.
Ещё варианты будут?

такой же, только без массива:

bool eq(int num_) < int mask = 0; int num = abs(num_); while( num != 0 )< unsigned int d = num%10; unsigned int n_mask = (1 mask |= n_mask; num /= 10; > return false; >

М-да. не густо. Своей пассивностью удивили, в первую очередь, новички. В комментах к урокам регулярно появляются пожелания увидеть «упражнения», «домашние задания» и пр. Вот вам упражнение.

Есть где и покодить и мозгами пошевелить.

В заключение приведу свой вариант решения. Он очень похож на вариант от Croessmah, но без массива. В качестве флагов используются биты целой переменной.

using namespace std; bool dubdigit(int num) < int digit; int flags = 0; int mask; while (num >0) < digit = num % 10; num /= 10; mask = 1 flags |= mask; > return false; > int main() < int number; cout > number; if (dubdigit(number)) cout

А вообще разминка для мозгов кому-то интересна? Или можно не париться?

UPD. Пока писал сообщение, Croessmah залил свой второй вариант решения, совпадающий с моим.

А вообще разминка для мозгов кому-то интересна?

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

Думаю, можно не париться.
Хотя если вам интересно, то можно всё 🙂

Пока писал сообщение, Croessmah залил свой второй вариант решения, совпадающий с моим

Ну, это достаточно популярное решение данной задачи,
так что не думаю, что это можно назвать моим или Вашим решением.

Можно париться, пожалуйста. Вы занимаетесь очень полезным делом, по крайней мере, для людей вроде меня. Не всем по. не верьте.
Постараюсь вскоре предложить свой вариант. Хотя не уверен, что моя идея намного лучше популярного решения.
Спасибо вам!

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru