C/C++

Помогите пожалуйста решить задачу на C ИЛИ C#

Найти наибольшую и наименьшую цифры в записи данного натурального числа и номера их позиций в числе.
using System;
using System.Linq;
namespace Answer {
class Program {
static void Main() {
Console.Write("Введите целое положительное число: ");
var box = Console.ReadLine().ToCharArray();
var min = box.Min();
var max = box.Max();
var minpos = Array.IndexOf(box, min) + 1;
var maxpos = Array.IndexOf(box, max) + 1;
Console.WriteLine($"Позиция минимального: {minpos}, максимального: {maxpos}");
Console.ReadKey();
}
}
}
Досалы Альменов
Досалы Альменов
92 117
Лучший ответ
Предположил что вам также подойдёт С++ решение, в нём всё равно основной алгоритм (for цикл) на полноценном C, на С++ только часть кода ответственная за ввод и вывод в консоль.

Позицию я выдаю как два числа - начиная с младших разрядов и второе число в скобках начиная со старших разрядов. Позиции нумеруются с нуля.

Попробовать следующий код онлайн - https://godbolt.org/z/c8sbcqW57 (по этой ссылке также код красивее выглядит, форматирован).

/////////////////////////////////////////////////////////////////////////////////

#include iostream

int main() {
int n = 0;
std::cin >> n;
int maxv = -1, maxp = 0, minv = 10, minp = 0, len = 1;
for (int i = 0; ; ++i, ++len) {
int d = n % 10;
if (d < minv) {
minv = d;
minp = i;
}
if (d > maxv) {
maxv = d;
maxp = i;
}
n /= 10;
if (n == 0)
break;
}
std::cout
<< "Min " << minv << " at pos " << minp
<< " (" << (len - minp - 1) << "), Max "
<< maxv << " at pos " << maxp << " ("
<< (len - maxp - 1) << ")" << std::endl;
}