PASCAL ABC, программа! Вводится целое положительное число. Найти наименьшую нечетную цифру в числе. Если в числе нет нечетных цифр, то вывести надпись "В числе нет нечетных цифр"
Answers & Comments
Pashq4
Возможно, так, как сделал я - не совсем то, что хотел от вас преподаватель. Но программа работает как надо по вашему заданию. При чем вводить можно даже числа из девяти знаков
function checkstr( x: string ): boolean; // это функция, которая проверяет введенное пользователем на то, является ли это целым положительным числом, а не какими-нибудь буквами begin var k: integer; if length(x) > 0 then begin Result := True; for k := 1 to length(x) do if not (x[k] in ['0'..'9']) then begin Result := False; // если пользователь ничего не ввел или ввел не цифры, то будет возвращена ложь end;end;end;
var N: string; error, r, i, min: integer; B: array[1..8] of integer; // В - массив, в котором будут храниться все цифры введенного числа begin write('Введите целое положительное число: '); readln(N); if checkstr(N) then begin // вызываем нашу функцию на обработку введенных данных r := Length(N); // присваиваем переменной r размер введенной строки val( N[ 1 ], min, error); // конвертирует строковое значение в тип integer и присваиваем минимальному значению первую цифру for i := 2 to r do begin val( N[ i ], B[ i ], error ); // конвертируем строковые цифры в integer if ( B[i] < min ) AND ( B[i] mod 2 <> 0) then min := B[i]; // если цифра нечетная и меньше переменной min , то присвоить переменной min значение этой цифры if ( min mod 2 = 0 ) then min := B[i]; // проверяем на всякий случай еще раз первую цифру end; if ( min mod 2 = 0 ) then writeln('Нечетных цифр нет') // если нечетных цифр нет, а наименьшая цифра четная, то говорим, что нечетных цифр нет else writeln( 'Наименьшая нечетная цифра в числе: ', min ); // выводим наименьшую нечетную цифру из числа end else writeln('Неверный формат ввода'); // если пользователь вдруг ввел буквы или какие-нибудь каракули вместо целого числа end.
Answers & Comments
function checkstr( x: string ): boolean; // это функция, которая проверяет введенное пользователем на то, является ли это целым положительным числом, а не какими-нибудь буквами
begin
var k: integer;
if length(x) > 0 then begin
Result := True;
for k := 1 to length(x) do
if not (x[k] in ['0'..'9']) then begin
Result := False; // если пользователь ничего не ввел или ввел не цифры, то будет возвращена ложь
end;end;end;
var N: string;
error, r, i, min: integer;
B: array[1..8] of integer; // В - массив, в котором будут храниться все цифры введенного числа
begin
write('Введите целое положительное число: ');
readln(N);
if checkstr(N) then begin // вызываем нашу функцию на обработку введенных данных
r := Length(N); // присваиваем переменной r размер введенной строки
val( N[ 1 ], min, error); // конвертирует строковое значение в тип integer и присваиваем минимальному значению первую цифру
for i := 2 to r do begin
val( N[ i ], B[ i ], error ); // конвертируем строковые цифры в integer
if ( B[i] < min ) AND ( B[i] mod 2 <> 0) then min := B[i]; // если цифра нечетная и меньше переменной min , то присвоить переменной min значение этой цифры
if ( min mod 2 = 0 ) then min := B[i]; // проверяем на всякий случай еще раз первую цифру
end;
if ( min mod 2 = 0 ) then writeln('Нечетных цифр нет') // если нечетных цифр нет, а наименьшая цифра четная, то говорим, что нечетных цифр нет
else writeln( 'Наименьшая нечетная цифра в числе: ', min ); // выводим наименьшую нечетную цифру из числа
end
else writeln('Неверный формат ввода'); // если пользователь вдруг ввел буквы или какие-нибудь каракули вместо целого числа
end.