Изменить программку с динамическим массивом,чтоб пользователь указывал страну, а программа выводит значение - Pascal

Узнай цену своей работы

Формулировка задачи:

изменить программку чтоб пользователь указывал страну, а программа выводит мини тарбличку место- N страна - Швейцария количество золота - 5 кол серебра - 1 кол бронзы - 2
const n=8;
type country=record
      name:string[30];
      population:longint;
      square:real;
     end;
var
  a:array[1..n] of country;
  s,r:string;
  i,j:integer;
  f:file of country;
begin
  assign(f,'country.dat');
  if not FileExists('country.dat') or (Uppercase(ReadlnChar('Файл country.dat уже существует! перезаписать (Y/N)?'))='Y') then begin
    Rewrite(f);
    writeln('Введите данные по странам:');
    for i:=1 to n do begin
      writeln('Запись #',i);
      a[i].name:=ReadlnString('Название страны:');      a[i].population:=ReadlnInteger('Население:');
      a[i].square:=ReadlnReal('Занимаемая площадь:');
      write(f,a[i]);
    end;
  end  
  else begin 
    reset(f);
    for i:=1 to 8 do read(f,a[i]);
  end;
  close(f);
    for i:=1 to n-1 do
      for j:=i+1 to n do if a[i].name>a[j].name then Swap(a[i],a[j]);
  writeln('отсортированный список:');
  writeln(format('{0,-40}{1,20}(чел){2,20}(км^2)','Название страны','Население','Занимаемая площадь'));
  for i:=1 to n do writeln(format('{0,-40}{1,20:N}{2,20:F}',a[i].name,a[i].population,a[i].square));
  s:=ReadlnString('Введите название страны:');
  r:='';
  for i:=1 to n do 
    if UpperCase(s)=UpperCase(a[i].name) then r:=r+format('{0,-40}{1,20:N}{2,20:F}',a[i].name,a[i].population,a[i].square)+NewLine;
  if r='' then writeln('Страна "',s,'" не найдена') else writeln(r);
end.
может как то упростить, чтоб сортировку не удалять

Решение задачи: «Изменить программку с динамическим массивом,чтоб пользователь указывал страну, а программа выводит значение»

textual
Листинг программы
type
  country = record
    name: string[30];
    z, s, b: longint;
  end;
 
var
  a: array of country;
  s, r: string;
  n, i, j: integer;
  f: file of country;
 
begin
  assign(f, 'country.dat');
  if not FileExists('country.dat') or (Uppercase(ReadlnChar('Файл country.dat уже существует! Перезаписать (Y/N)?')) = 'Y') then 
  begin
    Rewrite(f);
    write('Введите количество стран: ');
    readln(n);
    SetLength(a, n);
    writeln('Введите данные по странам: ');
    for i := 0 to n - 1 do 
    begin
      writeln('Запись #', i + 1);
      a[i].name := ReadlnString('Название страны: ');
      a[i].z := ReadlnInteger('Введите количество золотых медалей: ');
      a[i].s := ReadlnInteger('Введите количество серебряных медалей: ');
      a[i].b := ReadlnInteger('Введите количество бронзовых медалей: ');
      write(f, a[i]);
    end;
  end  
  else 
  begin
    reset(f);
    i := 0;
    while not eof(f) do 
    begin
      SetLength(a, i + 1);
      read(f, a[i]);
      inc(i);
    end;
  end;
  n := i;
  close(f);
  writeln('Исходный список: ');
  writeln(format('{0,-30} {1,10}', 'Название страны', 'Золото  Серебро  Бронза'));
  for i := 0 to n - 1 do 
    writeln(format('{0,-30}{1,5}{1,8}{1,8}', a[i].name, a[i].z, a[i].s, a[i].b));
  for i := 0 to n - 2 do
    for j := i + 1 to n - 1 do 
      if a[i].z < a[j].z then
        Swap(a[i], a[j]);
  writeln('Отсортированный список: ');
  writeln(format('{0,-30} {1,10}', 'Название страны', 'Золото  Серебро  Бронза'));
  for i := 0 to n - 1 do 
    writeln(format('{0,-30}{1,5}{1,8}{1,8}', a[i].name, a[i].z, a[i].s, a[i].b));
  SetLength(a, 0);
end.

Объяснение кода листинга программы

  1. Создается тип данных country с полями name, z, s, b.
  2. Создается переменная a типа array of country.
  3. Создаются переменные s, r типа string.
  4. Создается переменная n типа integer.
  5. Создается переменная i типа integer.
  6. Создается переменная j типа integer.
  7. Создается файл f типа file of country.
  8. Выполняется проверка: если файл country.dat уже существует или пользователь выбрал перезапись, то файл перезаписывается.
  9. Если файл не существует или пользователь не выбрал перезапись, то файл создается и записывается в него информация о количестве стран.
  10. Пользователю предлагается ввести количество стран.
  11. Для каждой страны вводятся данные: название, количество золотых медалей, количество серебряных медалей, количество бронзовых медалей.
  12. Запись каждой страны в массив a.
  13. Если файл не существует или произошла ошибка при чтении данных, то сбрасывается файл и считывается информация до конца.
  14. Выводится исходный список стран.
  15. Выводится отсортированный список стран.
  16. Удаляется файл country.dat.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.5 из 5
Похожие ответы