Я пытаюсь написать простую программу, которая генерирует C 1 из 3 случая:Как проверить цифры, которые одинаковы в целых числах без использования массивов?
- целое число без каких-либо смежных цифр то же самое.
- Целое число с одной парой одинаковых смежных цифр.
- Целое число с одним трио одинаковых смежных цифр.
После того, как целочисленное значение не соответствует требованиям любого из случаев, целое число будет увеличено на 1, а затем снова будет проверено.
Условия: пользователь вводит опцию между 1-3, начальное целочисленное значение представляет собой неотрицательное целое число, а сгенерированное значение больше начального целочисленного значения, введенного пользователем.
ПРИМЕЧАНИЕ. Я не могу использовать метод, включающий массив или строку. Рекурсия разрешена, но мой профессор не поощряет ее использование.
Моей текущей проблемой является определение того, как сравнивать цифры во введенном целочисленном значении без создания новой переменной для каждой из них. Вот то, что я до сих пор:
int getOption() //retrieves the option entered by the user
{
int option;
do
{
printf("\nEnter desired option: ");
scanf("%d", &option);
if (option <= 0 || option > 3)
{
printf("\nError! Invalid option selected!!\n");
}
}while(option <= 0 || option > 3);
return(option);
}
int getStart() //retrieves the starting integer value entered by the user
{
int startValue;
do
{
printf("\nEnter starting integer: ");
scanf("%d", &startValue);
if (startValue <= 0)
{
printf("\nError! Non-negative values only!!\n");
}
}while(startValue <= 0);
return(startValue);
}
int checkSame(int startValue); //checks if the user-given integer has any pairs of same adjecent digits.
{
int counter;
int sameAdjacent = 0;
while (sameAdjacent < 1)
{
while(startValue > 0)
{
startValue = startValue % 10;
counter++;
}
for(startValue; startValue > 0; startValue/10)
{
//?????
}
}
}
Вот некоторые примеры того, что надлежащее исполнение выглядит следующим образом:
1. No adjacent digits the same.
2. A single pair of adjacent digits the same.
3. A single trio of adjacent digits the same.
Enter desired option: 1
Enter starting integer: 1222
Next larger value with no two adjacent digits the same is 1230.
1. No adjacent digits the same.
2. A single pair of adjacent digits the same.
3. A single trio of adjacent digits the same.
Enter desired option: 2
Enter starting integer: 133300
Next larger value with only a single pair of digits the same is 133401.
1. No adjacent digits the same.
2. A single pair of adjacent digits the same.
3. A single trio of adjacent digits the same.
Enter desired option: 3
Enter starting integer: 123456
Next larger value with only a single trio of digits the same is 123555.
Любая помощь приветствуется. Спасибо!
В дополнение к хороший ответ, просто отметим, что _ «Последняя база-10 цифр x» _ также называется «младшей значащей цифрой» _. – Ziezi
Спасибо за подсказку. Это мой метод, о котором я и думал, мы просто не можем преобразовать его в код. –
@MichaelWendel: Хорошо, я опубликовал более явное решение. Вы видите, как сделать отдых сейчас? –