Консультация № 137942
27.05.2008, 03:07
0.00 руб.
0 1 1
Здраствуйте,у меня просьба написать программу:
В программу пользователь должен ввести количество медалей разного достоинства,завоеваное каждой командой-участницей, а программа - подсчитать общее число медалей и соответствующее число очков, после чего упорядочить список в соответствии с набранным количеством очков, которое определяется по сл. правилу: за золотую медаль команда получает 7 очков, за серебрянную - 6, за бронзу - 5. Рекомендуемый вид экрана во время работы программы приведен ниже

Итоги Олимпийских игр

введите в одной строке количество золотых,серебрянных и бронзовых медалей.

Австрия -> 3 5 9

Германия -> 12 9 8

Канада -> 6 5 4

Китая -> 0 6 2

Корея -> 3 1 2

Норвегия -> 10 10 5

Россия -> 9 6 3

США -> 6 3 4

Финляндия -> 2 4 6

Япония -> 5 1 4


Приложение:
Данные по очкам и медалям надо вывести в таблице:Итогия летней Олимпиады в Пекине, 2008 г. Страна Золото Серебро Бронза Всего Очков 1 Германия 12 9 8 29 178 2 Норвегия 10 10 5 25 155 3 Россия 9 6 3 18 114и тд.....

Обсуждение

давно
Профессор
401888
1232
27.05.2008, 11:31
общий
это ответ
Здравствуйте, Шичкина, Анна, Сергеевна!
Решение задачи в приложениии.
Использовал массив записей и форматированный вывод текста.
Текст вводил транслитом, чтобы удобнее копировать, замените на русский.
Отдельные моменты программы с комментариями.


Приложение:
uses crt;type Tolimp=record {тип запись с полями} name:string[20]; gold:byte;{кол. золотых} silv:byte; {кол. серебряных} bron:byte; {кол. бронзовых} summ:byte; {всего медалей} reit:word; {всего очков} end;var sp:array[1..30]of Tolimp; {массив записей, список стран и их результатов} n,i,j:integer; x:Tolimp; {переменная типа запись для сортировки}beginclrscr;write(‘Kolichestvo stran:‘);readln(n);for i:=1 to n do begin write(‘Strana: ‘);readln(sp[i].name); write(‘Zoloto: ‘);readln(sp[i].gold); write(‘Serebro: ‘);readln(sp[i].silv); write(‘Bronza: ‘);readln(sp[i].bron); sp[i].summ:=sp[i].gold+sp[i].silv+sp[i].bron; sp[i].reit:=sp[i].gold*7+sp[i].silv*6+sp[i].bron*5; end;clrscr; {очищаем экран}writeln(‘Itogi Olimpijskih igr‘);writeln;For i:=1 to n do begin write(sp[i].name);{вводим название страны} gotoXY(10,i+2); {устанавливаем курсор в 10-ю позицию строки} write(sp[i].gold:4,sp[i].silv:4,sp[i].bron:4); {вводим все остальное с выделением 4-х позиций под число} writeln; end;readln;{читаем}{сортировка обменом (метод "пузырька") по убыванию рейтинга }for i:=1 to n-1 do for j:=1 to n-1 doif sp[j].reit<sp[j+1].reit then begin x:=sp[j]; sp[j]:=sp[j+1]; sp[j+1]:=x; end;clrscr; {очищаем экран}{выводим 10 пробелов, текст}writeln(‘ ‘:10,‘Itogi letnej Olimpiady v Pekine, 2008g.‘);writeln; {пустая строка}{выводим заголовки колонок}write(‘Strana‘:10,‘Zoloto‘:10,‘Serebro‘:10,‘Bronza‘:10,‘Vsego‘:8,‘Ockov‘:10);writeln; {пустая строка}for i:=1 to n do begin write(i:2,‘ ‘,sp[i].name);{номер,пробел,страна} gotoXY(10,i+3); {курсор в позицию 10 каждой стороки} {выводим все остальное} write(sp[i].gold:8,sp[i].silv:10,sp[i].bron:10,sp[i].summ:10,sp[i].reit:10); writeln; end;readlnend.
Форма ответа