Вывести на печать таблицу, в которой будут записаны 10 автомобилей и их характеристики - Pascal
Формулировка задачи:
- Program Machines;
- uses crt;
- const nmax=10;
- type machine=record
- Name:string[15];
- Power:50..1000;
- MaxSpeed:string[10];
- Weight:string[5];
- ExteriorView:string[10];
- CilynderVolume:string[11];
- Price:string[6];
- end;
- var a:array[1..nmax] of machine;
- n,i:byte;
- begin
- clrscr;
- repeat
- write('Максимальное количество автомобилей до ',nmax,' n=');
- readln(n);
- until n in [1..nmax];
- writeln('Введите данные об автомобилях');
- for i:=1 to n do
- begin
- writeln('Автомобиль ',i);
- with a[i] do
- begin
- write(' Название атомобиля: ');readln(Name);
- repeat
- write(' Мощность [50..1000]: ');readln(Power);
- until Power in [50..1000];
- write(' Наибольшая скорость: ');readln(MaxSpeed);
- write(' Масса: ');readln(Weight);
- write(' Вид кузова: ');readln(ExteriorView);
- write(' Рабочий объём цилиндра: ');readln(CilynderVolume);
- write(' Цена: ');readln(Price);
- end;
- end;
- clrscr;
- writeln('Список автомобилей:':40);
- writeln;
- writeln('-------------------------------------------------------------------------------------');
- writeln('| Назв.модели |Мощн.|Наиб.скор.|Масса| Вид куз. |Раб.об.цил.| Цена |');
- writeln('-------------------------------------------------------------------------------------');
- for i:=1 to n do
- with a[i] do
- begin
- gotoXY(1,whereY);write('| ',Name);
- gotoXY(17,whereY);write('| ',Power:4);
- gotoXY(23,whereY);write('| ',MaxSpeed);
- gotoXY(34,whereY);write('|',Weight);
- gotoXY(40,whereY);write('|',ExteriorView);
- gotoXY(51,whereY);write('|',CilynderVolume);
- gotoXY(63,whereY);write('|',Price);
- gotoXY(70,whereY);writeln('|');
- writeln('----------------------------------------------------------------------------------');
- end;
- readln
- end.
Решение задачи: «Вывести на печать таблицу, в которой будут записаны 10 автомобилей и их характеристики»
- var
- b: array [1..nmax] of Integer;
- t: Integer;
- ...
- for i:=1 to n do b[i]:=i;
- p:=n-1;
- repeat
- j:=0;
- for i:=1 to p do
- if a[b[i]].power<a[b[i+1]].power then begin
- t:=b[i]; b[i]:=b[i+1]; b[i+1]:=t; j:=i;
- end;
- p:=j;
- until p=0;
- 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 автомобилей и их характеристики.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д