profile
Опубликовано 6 лет назад по предмету Информатика от ginc

Помогите!!!! 

 База данных видеокамер, замеряющих скорости автомобилей содержит N записей о номерах проехавших автомобилей и их скорости в момент съемки. Известна таблица штрафов за превышение допустимой скорости: скорость Штраф от 0 до 70 км/ч Нет штрафа (0 рублей) от 71 до 80 км/ч 100 рублей от 81 до 100 км/ч 300 рублей от 101 до 120 км/ч 1000 рублей от 121 км/ч 2000 Для каждого зафиксированного камерой номера автомобиля определить максимальный штраф и вывести список номеров автомобилей в порядке убывания этого штрафа. Входные данные В первой строке входного файла input.txt находится целое число N (0≤ N ≤100). Следующие N строк входного файла содержат информацию о проехавших автомобилях: номер автомобиля (строка из 8 маленьких латинских букв и цифр), зафиксированная скорость (целое число от 0 до 250). Данные в строке разделены пробелом. Выходные данные В выходном файл output.txt для каждого зафиксированного автомобиля выведите сначала номер автомобиля, потом через пробел максимальный штраф. Этот список необходимо вывести в порядке убывания штрафов. При равных штрафах автомобили выводятся в любом порядке. Примеры: input.txt output.txt 5 a111aa78 150 o000oo00 70 a234bv56 65 a111aa78 110 o00oo00 83 a111aa78 2000 o000oo00 300 a234bv56 0

  1. Ответ
    Ответ дан HRAshton
    Где только находят такие задачи О_о ну вот :)

    uses crt;
    type auto=record
               nom:string;
               sht:integer;
               end; var f,g:text;
         a:array[1..100] of auto;
         s,s1:string;
         n,k,i,j,c,p,r:integer;
         x:auto;
    begin
    clrscr;
    assign(f,'input.txt');
    reset(f);
    assign(g,'output.txt');
    rewrite(g);
    read(f,n);
    readln(f,s);
    readln(f,s);
    k:=1;
    a[k].nom:=copy(s,1,8);
    delete(s,1,9);
    val(s,a[k].sht,c);
    for i:=2 to n do  
      begin
       readln(f,s);  
    s1:=copy(s,1,8);
       delete(s,1,9);
       val(s,r,c);
       p:=0;
       j:=1;
       while(j<=k) and(p=0) do
       if s1=a[j].nom then
        begin
         p:=j;
         a[p].sht:=a[p].sht+r
        end
       else j:=j+1;
       if p=0 then
        begin
         k:=k+1;
         a[k].nom:=s1;
         a[k].sht:=r;
        end;
      end;
     close(f);
     for i:=1 to k-1 do
    for j:=i+1 to k do
    if a[i].sht<a[j].sht then
      begin
       x:=a[i];
       a[i]:=a[j];
       a[j]:=x;
      end;
     for i:=1 to k do
    begin
    writeln(g,a[i].nom,' ',a[i].sht);
     writeln(a[i].nom,' ',a[i].sht);
     end;
     close(g);
    end.
Самые новые вопросы