М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Evgenia601
Evgenia601
11.01.2023 17:10 •  Информатика

Pascal. перестановка даны пять чисел:  1890  83849  126631  146531  32749972 для каждого найдите минимальное целое число, которое больше данного и состоит из такого же набора цифр. например, для числа 1932 это 2139, а для числа 1212 — это 1221. в ответ запишите пять целых чисел. каждое число должно быть в отдельной строке. порядок записи менять нельзя. если вы не можете найти ответ для какого-то числа, то вместо ответа поставьте знак «-» (минус без кавычек).

👇
Ответ:
abilgaziev1
abilgaziev1
11.01.2023
PascalABC.NET 3.4.2, сборка 1863 от 10.11.2018Внимание! Если программа не работает, обновите версию!

function Conv(s: string): string;

begin

 var d := s.ToCharArray;

 var (i, found) := (d.High, False);

 while i >= 1 do

   if d[i] > d[i - 1] then

   begin

     found := True;

     break

   end

   else i -= 1;

 if found then

 begin

   s := s[:i];

   var c := d[i - 1];

   d := d[i - 1:];

   d.Sort;

   var j := d.IndexOf(c) + 1;

   s += (d[j] + d?[:j] + d?[j + 1:]).JoinIntoString

 end

 else s := '-';

 Result := s

end;


begin

 var ms := Arr('1890', '83849', '126631', '146531', '32749972');

 foreach var s in ms do

   Conv(s).Println

end.

19088389413126615134632772499
4,5(36 оценок)
Открыть все ответы
Ответ:
daniliwotchesi
daniliwotchesi
11.01.2023
#include <iostream>
using namespace std;
int main() {
        int mat[3][3];
        int k;
        int size=0;
        int * arr=0;
        for(int i=0;i<3;i++){
                for(int j=0;j<3;j++){
                       cin>>mat[i][j];
                          if (mat[i][j]>0){
                             arr=(int*)realloc(arr,sizeof(int)*(++size));
                             arr[size-1]=mat[i][j];
                                             }
                                           }
                                    }
                  for(int i=0;i<size;i++){
                  cout<<arr[i];
                  }
               delete arr;
               cin.get();
               cin.get();
              return 0;
}
4,6(95 оценок)
Ответ:
Polinakovta
Polinakovta
11.01.2023
//PascalABC.Net 3.0, сборка 1064
const
  nn=50;
var
  a:array[1..nn] of integer;
  i,n,imin:integer;
begin
  Write('Введите количество элементов в массиве: '); Read(n);
  Randomize;
  Writeln('Исходный массив');
  imin:=1;
  for i:=1 to n do begin
    a[i]:=Random(51)-25;
    Write(a[i],' ');
    if a[i]<a[imin] then imin:=i;
  end;
  Writeln;
  for i:=imin to n-1 do a[i]:=a[i+1];
  Writeln('Массив-результат');
  for i:=1 to n-1 do Write(a[i],' '); Writeln
end.

Тестовое решение:
Введите количество элементов в массиве: 15
Исходный массив
17 -3 22 18 -13 -5 5 -15 -18 23 17 -2 -20 23 2
Массив-результат
17 -3 22 18 -13 -5 5 -15 -18 23 17 -2 23 2

А это версия для тех, кто думает, что Паскалю пора давно "на свалку":
//PascalABC.Net 3.0, сборка 1064
begin
  var n:=ReadInteger('Введите количество элементов в массиве');
  var a:=SeqRandom(n,-25,25).ToArray();
  Writeln('Исходный массив:',#13#10,a);
  Writeln('Результат:',#13#10,a.Where(x->x<>a.Min));
end.

Тестовое решение:
Введите количество элементов в массиве 15
Исходный массив:
[-10,-15,8,-19,9,21,-22,-11,12,14,2,19,-25,-5,-15]
Результат:
[-10,-15,8,-19,9,21,-22,-11,12,14,2,19,-5,-15]

Можно сравнить понятность кода и его размер как со "школьным" решением, так и с программой на Java, приведенной в предыдущем ответе.
4,4(76 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ