Вывести на печать таблицу, в которой будут записаны 10 автомобилей и их характеристики - Pascal

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

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

Есть задание, по которому нужно вывести на печать таблицу, в которой будут записаны 10 автомобилей и их характеристики. Нужно отсортировать эту таблицу так, чтобы автомобиле в ней печатались в порядке убывания мощности. Таблицу я ввести могу, но никак не выходит её отсортировать... Текст программы для ввода таблицы:
Листинг программы
  1. Program Machines;
  2. uses crt;
  3. const nmax=10;
  4. type machine=record
  5. Name:string[15];
  6. Power:50..1000;
  7. MaxSpeed:string[10];
  8. Weight:string[5];
  9. ExteriorView:string[10];
  10. CilynderVolume:string[11];
  11. Price:string[6];
  12. end;
  13. var a:array[1..nmax] of machine;
  14. n,i:byte;
  15. begin
  16. clrscr;
  17. repeat
  18. write('Максимальное количество автомобилей до ',nmax,' n=');
  19. readln(n);
  20. until n in [1..nmax];
  21. writeln('Введите данные об автомобилях');
  22. for i:=1 to n do
  23. begin
  24. writeln('Автомобиль ',i);
  25. with a[i] do
  26. begin
  27. write(' Название атомобиля: ');readln(Name);
  28. repeat
  29. write(' Мощность [50..1000]: ');readln(Power);
  30. until Power in [50..1000];
  31. write(' Наибольшая скорость: ');readln(MaxSpeed);
  32. write(' Масса: ');readln(Weight);
  33. write(' Вид кузова: ');readln(ExteriorView);
  34. write(' Рабочий объём цилиндра: ');readln(CilynderVolume);
  35. write(' Цена: ');readln(Price);
  36. end;
  37. end;
  38. clrscr;
  39. writeln('Список автомобилей:':40);
  40. writeln;
  41. writeln('-------------------------------------------------------------------------------------');
  42. writeln('| Назв.модели |Мощн.|Наиб.скор.|Масса| Вид куз. |Раб.об.цил.| Цена |');
  43. writeln('-------------------------------------------------------------------------------------');
  44. for i:=1 to n do
  45. with a[i] do
  46. begin
  47. gotoXY(1,whereY);write('| ',Name);
  48. gotoXY(17,whereY);write('| ',Power:4);
  49. gotoXY(23,whereY);write('| ',MaxSpeed);
  50. gotoXY(34,whereY);write('|',Weight);
  51. gotoXY(40,whereY);write('|',ExteriorView);
  52. gotoXY(51,whereY);write('|',CilynderVolume);
  53. gotoXY(63,whereY);write('|',Price);
  54. gotoXY(70,whereY);writeln('|');
  55. writeln('----------------------------------------------------------------------------------');
  56. end;
  57. readln
  58. end.

Решение задачи: «Вывести на печать таблицу, в которой будут записаны 10 автомобилей и их характеристики»

textual
Листинг программы
  1. var
  2.   b: array [1..nmax] of Integer;
  3.   t: Integer;
  4. ...
  5.   for i:=1 to n do b[i]:=i;
  6.   p:=n-1;
  7.   repeat
  8.     j:=0;
  9.     for i:=1 to p do
  10.       if a[b[i]].power<a[b[i+1]].power then begin
  11.         t:=b[i]; b[i]:=b[i+1]; b[i+1]:=t; j:=i;
  12.       end;
  13.     p:=j;
  14.   until p=0;
  15.   for i:=1 to n do with a[b[i]] do WriteLn({...});

Объяснение кода листинга программы

В данном коде используется массив b, который содержит числа от 1 до n. Переменная t хранит номер текущего элемента массива b. С помощью цикла for i:=1 to n do b[i]:=i; происходит заполнение массива b числами от 1 до n. Далее, переменная p:=n-1; используется для организации цикла repeat, внутри которого происходит поиск наименьшего элемента в массиве b. Внутри цикла for i:=1 to p do происходит поиск наименьшего элемента в подмассиве, начиная с индекса b[i] и заканчивая индексом b[i+1]. Если текущий элемент имеет меньшую мощность, чем следующий элемент, то происходит обмен их местами. После завершения внутреннего цикла, переменная p обновляется в соответствии с найденным наименьшим элементом. Затем, с помощью цикла for i:=1 to n do с каждым элементом массива a происходит операция записи на печать. Таким образом, данный код выводит на печать таблицу, в которой записаны 10 автомобилей и их характеристики.

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


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

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

9   голосов , оценка 4.333 из 5

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

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

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