iİnformatikanın məktəbdə tədrisi

З-13

Задачи на целые числа без использования цикла


Дано трехзначное положительное число. Переставить цифры этого числа так, чтобы получилось максимальное число, записанное этими же цифрами.

 Для того, чтобы получить максимальное число, надо цифры числа расположить в порядке не убывания. Например: максимальным числом из цифр числа 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;

}