Задачи на целые числа без использования цикла
Дано трехзначное положительное число. Переставить цифры этого числа так, чтобы получилось максимальное число, записанное этими же цифрами.
Для того, чтобы получить максимальное число, надо цифры числа расположить в порядке не убывания. Например: максимальным числом из цифр числа 539 будет 953, из 377 будет 773, из 615 будет 651. Поэтому алгоритм будет следующим:
1. Выделяем все цифры- a – число единиц, b – число десятков, c – число сотен.
2. Если b больше a и больше c меняем значения a и b, то есть a становится самым большим, иначе если c больше a и больше b меняем значения a и c , то есть и в этом случае a становится самым большим.
3. Теперь сравниваем b и c. Если b < c, то меняем значения b и c.
После этих действий у нас получится: a<= b<= c и теперь сформируем требуемое трехзначное число M:=100*a+10*b+c;
Program A1_13; Var N,M,a,b,c,r:integer; begin readln(N); a:=n mod 10; b:=(n div 10) mod 10; c:=(n div 100) mod 10; if (b>a) and (b>c) then begin r:=a; a:=b; b:=r; end else if (c>a) and (c>b) then begin r:=a; a:=c; c:=r; end; if (b<c) then begin r:=b; b:=c; c:=r; end; M:=100*a+10*b+c; writeln(M); readln; end. |
//Program A1.13 #include <iostream>
using namespace std;
int main() {int n,m,a,b,c,r; cin>>n; m=0; a=n%10; b=(n/10)%10; c=(n/100)%10; if(b>a && b>c){r=a; a=b; b=r;} else if(c>a && c>b) {r=a; a=c; c=r;} if(b<c){r=b; b=c; c=r;} m=100*a+10*b+c; cout<<m<<endl; return 0; } |