Составить программу, которая выводит сведения об автомобилях, возраст которых больше 10...

0 голосов
45 просмотров

Составить программу, которая выводит сведения об автомобилях, возраст которых больше 10 лет, подсчитывает возраст этих автомобилей и количество таких автомобилей. Pascal ABC
Ввод данных с клавиатуры
Написать программу которая будет выводить данные в виде таблицы.


image

Информатика (80 баллов) | 45 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Const
  kk=100; // макксимальное количество старых автомобилей
type
  tAuto=record
    FIO:string[12]; // ФИО владельца
    Marka:string[12]; // Марка автомобиля
    GodV:integer; // Год выпуска
    GosNom:string[6]; // Номер автомобиля
    Color:string[12] // Цвет
    end;

var
  Cars:array[1..kk] of tAuto;
  k:integer; // количество старых автомобилей
  year:integer; // год, на который производится расчет
  i:integer;
 
begin
  k:=0;
  Write('Год, на который производится расчет: '); Readln(year);
  // Далее глупый ввод данных, но он так сделан из-за кривой
  // постановки задачи. Нам надо отобрать из всех автомобилей
  // часть по условию, но для этого надо иметь сведения обо всех этих
  // авомобилях. В реальности, конечно, читается готовый файл
  // и из него делается отбор, а тут чтение из файла имитируется
  // вводом с клавиатуры. Фактически, вместо того, чтобы сразу ввести год
  // выпуска и прервать дальнейший ввод сведений по автомобилю,
  // если он не попадает в выборку, мы вводим все, а уж потом лишние
  // бракуем.
  // Фактически, изначально приучаем школьников делать, как не надо.
  repeat
    Inc(k);
    Writeln('Введите сведения об автомобиле');
    Write('ФИО владельца (* - закончить ввод): '); Readln(Cars[k].FIO);
    if Cars[k].Fio[1]='*' then begin Dec(k); Break end;
    Write('Марка автомобиля: '); Readln(Cars[k].Marka);
    Write('Год выпуска: '); Readln(Cars[k].GodV);
    Write('Номер автомобиля: '); Readln(Cars[k].GosNom);
    Write('Цвет кузова: '); Readln(Cars[k].Color);
    if year-Cars[k].GodV<=10 then Dec(k)<br>  until k=kk; // ограничение на переполнение массива
  // Теперь Cars[] содержит сведения о k автомобилях для вывода
  Writeln;
  Writeln('Количество автомобилей старше 10 лет равно ',k);
  if k=0 then Exit; // На нет и суда нет
  for i:=1 to 62 do Write('-'); Writeln;
  Write('    ФИО          Марка     Год     Номер        Цвет');
  Writeln('   Возраст');
  Writeln(' владельца    автомобиля выпуска автомобиля    кузова');
  for i:=1 to 62 do Write('-'); Writeln;
  for i:=1 to k do
    With Cars[i] do
      Writeln(FIO:12,' ',Marka:12,GodV:6,'    ',GosNom:6,'   ',
        Color:12,year-GodV:3);
   for i:=1 to 62 do Write('-'); Writeln
end.

Пример
Год, на который производится расчет: 2016
Введите сведения об автомобиле
ФИО владельца (* - закончить ввод): Петров Г.В.
Марка автомобиля: Лада
Год выпуска: 2003
Номер автомобиля: С430АМ
Цвет кузова: Белый
Введите сведения об автомобиле
ФИО владельца (* - закончить ввод): 123456789012
Марка автомобиля: 123456789012
Год выпуска: 2000
Номер автомобиля: ХХХХХХ
Цвет кузова: 123456789012
Введите сведения об автомобиле
ФИО владельца (* - закончить ввод): *

Количество автомобилей старше 10 лет равно 2
--------------------------------------------------------------
    ФИО          Марка     Год     Номер        Цвет   Возраст
 владельца    автомобиля выпуска автомобиля    кузова
--------------------------------------------------------------
 Петров Г.В.         Лада  2003    С430АМ          Белый 13
123456789012 123456789012  2000    ХХХХХХ   123456789012 16
--------------------------------------------------------------

Замечание: у здешнего шрифта отвратительная манера все искажать (сколько не просили сделать возможность вывода моноширинным шрифтом - глухо). Посему истинная картинка дана во вложении.


image
(150k баллов)