Упорядочьте заданные числа по уменьшению "круглости" - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Число считается круглым, если на конце его стоит 0. Чем больше нулей на конце, тем более круглым считается число. Если количество нулей одинаково, то большее число считается более круглым. Упорядочьте заданные числа по уменьшению круглости. Смотрите примеры для уточнения. Формат файла входных данных: В первой строке записано число n (1 ≤ n ≤ 1000). Далее в n строках записаны натуральные числа ai (1 ≤ ai ≤ 30000). Формат файла выходных данных: Выведите числа в требуемом порядке. Пример: Ввод: 5 100 7890 12 25 70 Вывод: 100 7890 70 25 12 Решил задачу так :
Листинг программы
  1. var n,y1,z,z1,g,i,q,y,j,k,x,l:longint;a,c:array [1..1000] of longint;m:string;
  2. begin
  3. //assign(input,'round.in');
  4. //assign(output,'round.out');
  5. //reset(input);
  6. //rewrite(output);
  7. k:=0;g:=0;
  8. readln(n);
  9. for i:=1 to n do
  10. readln(a[i]);
  11. for i:=1 to n do begin
  12. str(a[i],m);
  13. for j:=1 to length(m) do begin
  14. if m[j]='0' then c[i]:=c[i]+1;
  15. end;end;
  16. For i := 2 to n do
  17. For j := 1 to i-1 do
  18. If c[j] < c[i] then
  19. begin
  20. Z := a[i];
  21. For Y := i downto j+1 do
  22. a[Y] := a[Y-1];
  23. a[j] := Z ;
  24. Z1 := c[i];
  25. For Y1 := i downto j+1 do
  26. c[y1] := c[Y1-1];
  27. c[j] := Z1 ;
  28. end ;
  29. for i:=1 to n do
  30. if c[i]=c[i+1] then begin
  31. if a[i]<a[i+1] then begin g:=a[i];a[i]:=a[i+1];a[i+1]:=g;end;
  32. end;
  33. for i:=1 to n do
  34. writeln(a[i]);
  35. //close(input);close(output);
  36. end.
Но проходит не на все тесты , напишите код или скажите что неправильно в моём !

Решение задачи: «Упорядочьте заданные числа по уменьшению "круглости"»

textual
Листинг программы
  1. program test;
  2.  
  3. var
  4.   n: integer;
  5.   a, c: array [1..1000] of integer;
  6.   temp: integer;
  7.   i, j: integer;
  8. begin
  9.   Assign(input, 'round.in');
  10.   //assign(output,'round.out');
  11.   reset(input);
  12.   //rewrite(output);
  13.   readln(n);
  14.   for i := 1 to n do
  15.   begin
  16.     readln(a[i]);
  17.     c[i] := 0;
  18.     temp := a[i];
  19.     while temp mod 10 = 0 do
  20.     begin
  21.       temp := temp div 10;
  22.       Inc(c[i]);
  23.     end;
  24.   end;
  25.  
  26.   for i := n downto 2 do
  27.     for j := 2 to i do
  28.       if (c[j] > c[j - 1]) or (c[j] = c[j - 1]) and (a[j] > a[j - 1]) then
  29.       begin
  30.         temp := A[j];
  31.         A[j] := A[j - 1];
  32.         A[j - 1] := temp;
  33.  
  34.         temp := c[j];
  35.         c[j] := c[j - 1];
  36.         c[j - 1] := temp;
  37.       end;
  38.  
  39.   for i := 1 to n do
  40.     writeln(a[i]);
  41.   Close(input);
  42.   //close(output);
  43. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы