Вывести на печать таблицу, в которой будут записаны 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 автомобилей и их характеристики.