Сведения об экспорте товара состоят из наименования товара, страны и количества экспорта в эту страну. Дан набор из 1000 таких сведений. Найти:а) страны, в которые экспортировался данный товар, и общий объем его экспорта.б) упорядочить сведения о товарах лексикографически по первым двум буквам наименования товара — Pascal(Паскаль)

Program task05;
type Export = record
     name : string;
     country : string;
     count : integer;
     end;
     
var data, sortdata : file of Export;
     nam, nam1, nam2, bf : Export;
     i, j, schet : integer;
     names : text;
     s : string;
     choice : char;
     searchname : string;
     schet1 : boolean;
     
begin
schet:=0;
schet1:=false;
 
 assign(names,'tovary.txt');
 assign(data,'dannie');
 assign(sortdata, 'otsortirovannie');
 reset(names);
 reset(data);
 
 writeln(' Здравствуйте! Хотите просмотреть исходные сведения? Y/N? ');
 readln(choice);
 if choice = 'Y' then begin
 
   while not Eof(data) do begin
   read(data, nam);
   writeln(nam.name, '   ', nam.country, '   ', nam.count);
    writeln;
    end;
    
close(data);
writeln;
end;
   
 writeln( 'Хотите просмотреть список экспортируемых товаров? Y/N? ');
 readln(choice);
 if choice = 'Y' then begin
 
    while not EOF(names) do begin
    readln(names,s);
    writeln(s);
    end;
    
 close(names);
 end;
 writeln(' Итак, введите наименование товара, который будем искать согласно списку: ');
 readln(searchname);
 reset(data);
 
    writeln(' Товар ', searchname, ' экспортировался в страны: ');
    writeln;
    while not EOF(data) do begin
    read(data, nam);
 
      if nam.name = searchname then begin
      writeln(nam.country);
      schet:=schet+nam.count;
      schet1:=true;
      end;
 
    end;
    
    if schet1 = true then begin
    writeln( 'Общий объем экспорта товара ', searchname, ' составил ', schet)
    end
 
      else writeln(' Упс! Товар не найден в сведениях об экспорте');
 
      
 
 close(data);
 rewrite(sortdata);
 reset(data);
 
 for i:=0 to filesize(data)-2 do
 for j:=i+1 to filesize(data)-1 do
  begin
    seek(data,i);
    read(data,nam1);
    seek(data,j);
    read(data,nam2);
        {если первые 2 буквы поля name больше по алфавиту тех же букв второго}
    if copy(nam1.name,1,2)>copy(nam2.name,1,2)then
      begin
       bf:=nam1;{меняем их местами}
       nam1:=nam2;
       nam2:=bf;
       write(sortdata,nam1);
       write(sortdata,bf);
      end;
   end;
   
close(data);
close(sortdata);
 
 
 end.

Leave a Comment

− 9 = 1