Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2016, 13:30   #1
Василий15
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 27
По умолчанию Задача с массивом данных

Код:
type
  avto=record
    marka_avto: string[20];
    gos_nomer: char;
    god_vypuska: integer;
    probeg: integer;
    data_remonta: integer;
    rashod_topliva: integer;
    probeg_za_mes: integer;
    kol_gryzov: integer;
    kol_gruzov_za_mes: integer;
    end;
 
var
  a: array[1..50] of avto;
  n,i: integer;
  chyslo_avto: integer;
  
begin
  write('Введите количество автомашин в автопарке ');
  readln(n);
  writeln('Введите данные по автомашинам:');
  for i:=1 to n do
  begin
    writeln('  ',i,'-я автомашина:');
    
    with a[i] do
    begin
      write('    Марка: ');
      readln(marka_avto);
      write('    Госномер: ');
      readln(gos_nomer);
      write('    Год выпуска: ');
      readln(god_vypuska);
      write('    Пробег: ');
      readln(probeg);
      write('    Дата ремонта: ');
      readln(data_remonta);
      write('    Расход топлива за месяц: ');
      readln(rashod_topliva);
      write('    Пробег за месяц: ');
      readln(probeg_za_mes);
      write('    Количество грузов/пассажиров: ');
      readln(kol_gryzov);
    end;
    
  end;
  
  writeln('Число авто, ремонтировавшихся более 3-х лет назад:');
   chyslo_avto:=0;
   for i:=1 to n do 
    begin
    if (a[i].data_remonta<2013) then 
      begin
        with a[i] do 
         begin
          chyslo_avto:=chyslo_avto+1;
         end;
      end;
     end;
    writeln(chyslo_avto);
 
  writeln('Количество перевезенных за месяц грузов/пассажиров:');
   kol_gruzov_za_mes:=0;
   for i:=1 to n do 
   begin
   kol_gruzov_za_mes:=kol_gruzov_za_mes+a[i].kol_gryzov;
   end;
  writeln(kol_gruzov_za_mes);
   
end.

Ребят, помогите вывести общее кол-во перевезенных грузов/пассажиров (последний блок).

Последний раз редактировалось Василий15; 10.05.2016 в 13:42.
Василий15 вне форума Ответить с цитированием
Старый 10.05.2016, 13:53   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

может быть, так:
Код:
type
  avto=record
    marka_avto: string[20];
    gos_nomer: char;
    god_vypuska: integer;
    probeg: integer;
    data_remonta: integer;
    rashod_topliva: integer;
    probeg_za_mes: integer;
    kol_gruzov_za_mes: integer;
    end;
 
var
  a: array[1..50] of avto;
  n,i: integer;
  chyslo_avto,
  vsego_gruzov_za_mes : integer;
  
begin
  write('Введите количество автомашин в автопарке ');
  readln(n);
  writeln('Введите данные по автомашинам:');
  for i:=1 to n do
  begin
    writeln('  ',i,'-я автомашина:');
    
    with a[i] do
    begin
      write('    Марка: ');
      readln(marka_avto);
      write('    Госномер: ');
      readln(gos_nomer);
      write('    Год выпуска: ');
      readln(god_vypuska);
      write('    Пробег: ');
      readln(probeg);
      write('    Дата ремонта: ');
      readln(data_remonta);
      write('    Расход топлива за месяц: ');
      readln(rashod_topliva);
      write('    Пробег за месяц: ');
      readln(probeg_za_mes);
      write('    Количество грузов/пассажиров за месяц: ');
      readln(kol_gruzov_za_mes);
    end;
    
  end;
  
  writeln('Число авто, ремонтировавшихся более 3-х лет назад:');
   chyslo_avto:=0;
   for i:=1 to n do 
    begin
    if (a[i].data_remonta<2013) then 
      begin
        with a[i] do 
         begin
          chyslo_avto:=chyslo_avto+1;
         end;
      end;
     end;
    writeln(chyslo_avto);
 
   writeln('Количество перевезенных за месяц грузов/пассажиров:');
   vsego_gruzov_za_mes:=0;
   for i:=1 to n do 
   begin
     vsego_gruzov_za_mes:=vsego_gruzov_za_mes+a[i].kol_gruzov_za_mes;
   end;
   writeln(vsego_gruzov_za_mes);
   
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.05.2016, 14:02   #3
Василий15
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 27
По умолчанию

Спасибо большое.
Василий15 вне форума Ответить с цитированием
Старый 10.05.2016, 14:13   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

пожалуйста!

1) при подсчёте числа автомобилей с ремонтом более 3-х лет
лишнее with a[i] do

сравните:
Код:
  writeln('Число авто, ремонтировавшихся более 3-х лет назад:');
   chyslo_avto:=0;
   for i:=1 to n do 
      if (a[i].data_remonta<2013) then 
             chyslo_avto:=chyslo_avto+1; {или, лучше, Inc(chyslo_avto);  }
   writeln(chyslo_avto);
2)
Цитата:
write(' Дата ремонта: ');
readln(data_remonta);
тут корректнее говорить не о дате ремонта, а о ГОДЕ ремонта.
или нужно дату описывать по другому (как день, месяц, год)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.05.2016, 15:01   #5
Василий15
Пользователь
 
Регистрация: 07.05.2016
Сообщений: 27
По умолчанию

Благодарю за пояснения.
Василий15 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с массивом. Sladkijj Паскаль, Turbo Pascal, PascalABC.NET 3 20.01.2013 19:21
Вывод данных в excel - массивом данных sergey113 Помощь студентам 4 22.08.2011 17:16
Задача с массивом st1ng3r Паскаль, Turbo Pascal, PascalABC.NET 1 06.06.2011 11:31
Задача с массивом AleNa666 Паскаль, Turbo Pascal, PascalABC.NET 1 27.04.2009 21:06
задача с массивом bonys91 Помощь студентам 5 26.03.2009 22:13