С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 22.04.2014
Сообщений: 17

Вывести наибольшую разность чисел, 1ое из которых может быть получено перестановкой цифр a, а 2ое – перестановкой цифр b

22.04.2014, 13:13. Показов 4821. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В конторе «Рога и Копыта» подходит время подведения годового баланса. В бухгалтерию поступили сведения о том, что, согласно документам, суммарный расход составил а рублей, a суммарный приход – b рублей. Поскольку с реальным положением дел эти цифры все равно не имеют ничего общего, бухгалтер решил реализовать следующую свою идею. Как известно, при наборе чисел на компьютере люди часто вводят цифры в неправильном порядке. Поэтому бухгалтер хочет найти такой способ переставить цифры в числах a и b, чтобы в результате разность a-b (и, соответственно, количество денег, которые он положит к себе в карман), была максимальна, а в случае можно будет сослаться на ошибку секретаря. При этом нельзя забывать о знаке чисел и о том, что ноль не может быть первой цифрой числа. Напишите программу, которая поможет бухгалтеру.
Входные данные. Входной файл INPUT.TXT содержит два целых числа a и b (-109 < a,b < 109).
Выходные данные. В выходной файл OUTPUT.TXT выведите одно целое число – наибольшую разность чисел, первое из которых может быть получено перестановкой цифр a, а второе – перестановкой цифр b.

Code
1
2
3
4
5
6
7
8
9
+---------+----------+
|input.txt|output.txt|
+---------+----------+
|    18   |    71    |
|    10   |          |
+---------+----------+
|     1   |    33    |
|   -23   |          |
+---------+----------+
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.04.2014, 13:13
Ответы с готовыми решениями:

Определить сумму и произведение цифр, число, образованное перестановкой цифр для двузначного числа
записать программу,которая для произвольного двузначного числа определяет 1) сумму и произведение его цифр 2) число,образованное...

Найти два числа, таких, у которых цифры первого являются перестановкой цифр второго
Найти два числа, таких, у которых цифры первого являются перестановкой цифр второго, и, если из первого вычесть второе, то получится сумма...

Найти число, которое получено из N перестановкой его цифр в обратном порядке
Помогите пожалуйста, сессия скоро.. а я дуб дубом в си...... спасибо заранее!! Дано целое число N (N &gt; 0). Используя операции деления...

4
0 / 0 / 0
Регистрация: 22.04.2014
Сообщений: 17
24.04.2014, 13:52  [ТС]
а это кто осилить может?О.о"
0
23 / 23 / 22
Регистрация: 20.03.2014
Сообщений: 36
24.04.2014, 16:12
Лучший ответ Сообщение было отмечено простоКот как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
var
  f1,f2: text;
  a,b: integer;
  fl1,fl2: boolean;
 
function SchemeInt(aA: integer; aFl: boolean): integer;
var
  s: string;
  i,j: integer;
  t: char;
begin
  SchemeInt:=0;
  str(aA,s);
  for i:=1 to length(s)-1 do
     for j:=1 to length(s)-i do
       if (aFl and (s[j]<s[j+1])) or (not aFl and (s[j]>s[j+1]) and not ((j+1=2) and (s[2]='0'))) then
         begin
           t:=s[j];
           s[j]:=s[j+1];
           s[j+1]:=t;
         end;
  val(s,i,j);
  if j=0 then SchemeInt:=i;
end;
 
begin
  assign(f1,'input.txt');
  assign(f2,'output.txt');
  reset(f1);
  readln(f1,a);
  readln(f1,b);
  close(f1);
  fl1:=a>0; a:=abs(a);
  fl2:=b<0; b:=abs(b);
  a:=SchemeInt(a,fl1); b:=SchemeInt(b,fl2);
  if not fl1 then a:=-a;
  if fl2 then b:=-b;
  rewrite(f2);
  writeln(f2,a-b);
  close(f2);
  readln
end.
1
0 / 0 / 0
Регистрация: 22.04.2014
Сообщений: 17
25.04.2014, 13:12  [ТС]
Vakoto, а можешь пояснить, что делают следующие строки?:
Pascal
1
2
3
4
5
6
13. str(aA,s);
16. if (aFl and (s[j]<s[j+1])) or (not aFl and (s[j]>s[j+1]) and not ((j+1=2) and (s[2]='0'))) then
22. val(s,i,j);
35. a:=SchemeInt(a,fl1); b:=SchemeInt(b,fl2);
36. if not fl1 then a:=-a;
37. if fl2 then b:=-b;
0
23 / 23 / 22
Регистрация: 20.03.2014
Сообщений: 36
26.04.2014, 17:30
простоКот, удобнее объяснить всё и сразу.

По условию задачи необходимо найти разность максимального значения, составленного из цифр числа а, и минимального из цифр числа b. Реализация очень простая - преобразовываем заданные числа в строки, сортируем цифры внутри них и выводим их разность в файл. Для положительного а сортируем цифры по убыванию, для положительного b - по возрастанию. Для отрицательных чисел соответственно наоборот.
Например, из числа 84965148 получаем максимальное 98865441, минимальное 14456889. Для -84965148 максимальное -14456889, минимальное -98865441. Остальное в комментариях.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var
  f1,f2: text;
  a,b: integer;
  fl1,fl2: boolean; {условие сортировки; хранят знаки чисел}
  
function SchemeInt(aA: longint; aFl: boolean): integer;
var
  s: string;
  i,j: integer; {под всякие нужды}
  t: char; {для обмена значении}
begin
  SchemeInt:=0; {на случай ошибок в операторе val}
  str(aA,s); {преобразовываем число в строку}
    {Пузырьковая сортировка цифр числа: }
  for i:=1 to length(s)-1 do
     for j:=1 to length(s)-i do
     {not (j+1=2) and (s[2]='0') - проверка для того, чтобы при сортировке на убывания не переставить 0 на первую позицию
       aFl  - сортировка цифр по возрастанию, not aFl - по убыванию}
       if (aFl and (s[j]<s[j+1])) or (not aFl and (s[j]>s[j+1]) and not ((j+1=2) and (s[2]='0'))) then
         begin
          {обмен значении}
           t:=s[j];
           s[j]:=s[j+1];
           s[j+1]:=t;
         end;
  val(s,i,j); {преобразовываем полученную строку обратно в число}
  if j=0 then SchemeInt:=i; {если нет ошибок, присваиваем значение функции}
end;
 
begin
  {синхронизируем переменные с файлами}
  assign(f1,'input.txt');
  assign(f2,'output.txt');
  reset(f1); {открываем входной файл для чтения}
  readln(f1,a); readln(f1,b); {читаем числа из файла}
  close(f1); {закрываем файл}
  fl1:=a>0; fl2:=b<0; {в этих переменных хранится условие сортировки и знак числа.
  true для положительного a и отрицательного b (сортировка по возрастанию),
  false для отрицательного b и положительного a (сортировка по убыванию)}
  a:=abs(a); b:=abs(b); {убираем нолики. знаки лежат в булевых переменных}
  a:=SchemeInt(a,fl1); b:=SchemeInt(b,fl2); {сортируем цифры числа по условию}
  if not fl1 then a:=-a; if fl2 then b:=-b; {возвращаем знаки на место}
  rewrite(f2); {открываем для записи выходной файл}
  writeln(f2,a-b); {печатаем результат}
  close(f2); {и закрываем}
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.04.2014, 17:30
Помогаю со студенческими работами здесь

Найти два числа, таких, у которых цифры первого являются перестановкой цифр второго...
Найти два числа, таких, у которых цифры первого являются перестановкой цифр второго, и, если из первого вычесть второе, то получится...

Загадка с перестановкой цифр в числе
Доброго времени суток! В С++ недавно, но в универе уже задали такие задачи: 1)В трёхзначном числе x зачеркнули его последнюю цифру....

Выяснить, является ли заданная последовательность перестановкой цифр от 1 до n
Дано некоторое натуральное n (n &lt;= 100) и целые числа а1, а2, an. Выяснить, является ли эта последовательность перестановкой цифр 1,2,...

Найти число, полученное перестановкой 1 и 2 цифр заданного числа
Ребята, помогите...

Проверить, можно ли перестановкой цифр в числах a и b получить их сумму, равную c
Задача 1 Вася скучая на уроке математики писал в тетради разные числа. Наугад выбирая три числа он проверял можно ли суммировать первые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru