Изменить программку с динамическим массивом,чтоб пользователь указывал страну, а программа выводит значение - 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.
Объяснение кода листинга программы
- Создается тип данных
country
с полямиname
,z
,s
,b
. - Создается переменная
a
типаarray of country
. - Создаются переменные
s
,r
типаstring
. - Создается переменная
n
типаinteger
. - Создается переменная
i
типаinteger
. - Создается переменная
j
типаinteger
. - Создается файл
f
типаfile of country
. - Выполняется проверка: если файл
country.dat
уже существует или пользователь выбрал перезапись, то файл перезаписывается. - Если файл не существует или пользователь не выбрал перезапись, то файл создается и записывается в него информация о количестве стран.
- Пользователю предлагается ввести количество стран.
- Для каждой страны вводятся данные: название, количество золотых медалей, количество серебряных медалей, количество бронзовых медалей.
- Запись каждой страны в массив
a
. - Если файл не существует или произошла ошибка при чтении данных, то сбрасывается файл и считывается информация до конца.
- Выводится исходный список стран.
- Выводится отсортированный список стран.
- Удаляется файл
country.dat
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д