Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ Набережнев ИТб - 112 v4.0.doc
Скачиваний:
4
Добавлен:
20.09.2019
Размер:
1.56 Mб
Скачать
  1. Текстовый алгоритм.

Начало.

п. 1. Регистрация участников

п. 1.1. Ввод имени спортсмена, участвующего в чемпионате.

Ввод поле Tempstring

п. 1.2. Если введена пустая строка, то перейти к п. 1.1.

п. 1.3. Вывод «продолжить ввод участников»

Ввод О

Если О = да перейти к п. 1.1, иначе перейти к п. 1.4

п. 1.4. Отображаем через переменную NumSportsmen количество участников.

п. 1.5. Выполнить цикл по i от 0 до NumSportsmen с шагом 1.

Поле allSportsmen[i].Name присвоить Tempstring.

п. 2. Ввод оценок участников

п. 2.1. Выполнить цикл по i от 0 до NumSportsmen с шагом 1.

п. 2.2. Выполнить цикл по j от 0 до Numpodhod с шагом 1.

Вывод поля Name объекта allSportsmen[i]

Вывод поля j

Ввод поле Score[j,0] объекта allSportsmen[i]

Ввод поле Score[j,1] объекта allSportsmen[i]

Ввод поле Score[j,2] объекта allSportsmen[i]

Ввод поле Score[j,3] объекта allSportsmen[i]

п. 3. Сложение оценок спортсмена на одном подходе и вычисление количества высоких оценок спортсмена.

п. 3.1. Выполнить цикл по i от 0 до NumSportsmen с шагом 1.

п. 3.2. Выполнить цикл по j от 0 до Numpodhod с шагом 1.

п. 3.3. Выполнить цикл по k от 0 до NumScores с шагом 1.

п. 3.4. Поле Temp присвоить allSportsmen[i].Scores[j, k] для обозначения текущей оценки.

п. 3.5. Увеличить на 1 значение allSportsmen[i].VisScores[j, Temp] для расчета числа оценок Temp.

п. 3.6. Поле allSportsmen[i].Summapodhod[j] присвоить allSportsmen[i].Summapodhod[j]+allSportsmen[i].Scores[j,k].

п. 4.1. Выполнить цикл по i от 0 до NumSportsmen с шагом 1.

п. 4.2. Поле allSportsmen[i].Summa[0] присвоить allSportsmen[i].Summapodhod[0].

п. 5. Пока sorthod меньше NumSportsmen, делать п. 5.1, иначе перейти к п. 9.1.

п. 5.1. Выполнить цикл по i от 1 до NumSportsmen с шагом 1.

п. 5.2. Выполнить цикл по j от 0 до Numpodhod с шагом 1.

п. 5.3. Если allSportsmen[i].Summapodhod[j] больше allSportsmen[i - 1].Summapodhod[j], перейти к п. 5.4, иначе к перейти п. 6.1.

п. 5.4. Поле Temp присвоить allSportsmen[i].Summapodhod[j].

п. 5.5. Поле allSportsmen[i].Summapodhod[j] присвоить allSportsmen[i-1].Summapodhod[j].

п. 5.6. Поле allSportsmen[i-1].Summapodhod[j] присвоить Temp.

п. 5.7. Выполнить цикл по l от 0 до NumScores с шагом 1.

п. 5.7.1. Поле Temp присвоить allSportsmen[i].Scores[j,l].

п. 5.7.2. Поле allSportsmen[i].Scores[j,l] присвоить allSportsmen[i-1].Scores[j,l]].

п. 5.7.3. Поле allSportsmen[i-1].Scores[j,l] присвоить Temp.

п. 5.8. Выполнить цикл по l от 0 до 10(включительно) с шагом 1.

п. 5.8.1. Поле Temp присвоить allSportsmen[i].VisScores[j,l].

п. 5.8.2. Поле allSportsmen[i].VisScores[j,l] присвоить allSportsmen[i-1].VisScores[j,l]].

п. 5.8.3. Поле allSportsmen[i-1].VisScores[j,l] присвоить Temp.

п. 5.9. Поле Tempstring присвоить allSportsmen[i].Name[j].

п. 5.10. Поле allSportsmen[i].Name[j] присвоить allSportsmen[i-1].Name[j].

п. 5.11. Поле allSportsmen[i-1].Name[j] присвоить Tempstring.

п. 5.12. Перейти к п. 7.

п. 6.1. Если allSportsmen[i].Summapodhod[j] равна allSportsmen[i - 1].Summapodhod[j], перейти к п. 6.1.1, иначе к перейти п. 8.

п. 6.1.1. Поле k1 равно 10, а поле sorted равно 0.

п. 6.2. Пока поле sorted равно 0, делать п. 6.2.1, иначе перейти к п. 8.

п. 6.2.1. Если allSportsmen[i].VisScores[j, k1] больше, чем allSportsmen[i - 1].VisScores[j, k1], то делать п. 6.3, иначе перейти к п. 8.

п. 6.3. Поле Temp присвоить allSportsmen[i].Summapodhod[j].

п. 6.4. Поле allSportsmen[i].Summapodhod[j] присвоить allSportsmen[i-1].Summapodhod[j].

п. 6.5. Поле allSportsmen[i-1].Summapodhod[j] присвоить Temp.

п. 6.6. Выполнить цикл по l от 0 до NumScores с шагом 1.

п. 6.6.1. Поле Temp присвоить allSportsmen[i].Scores[j,l].

п. 6.6.2. Поле allSportsmen[i].Scores[j,l] присвоить allSportsmen[i-1].Scores[j,l]].

п. 6.6.3. Поле allSportsmen[i-1].Scores[j,l] присвоить Temp.

п. 6.7. Выполнить цикл по l от 0 до 10(включительно) с шагом 1.

п. 6.7.1. Поле Temp присвоить allSportsmen[i].VisScores[j,l].

п. 6.7.2. Поле allSportsmen[i].VisScores[j,l] присвоить allSportsmen[i-1].VisScores[j,l]].

п. 6.7.3. Поле allSportsmen[i-1].VisScores[j,l] присвоить Temp.

п. 6.8. Поле Tempstring присвоить allSportsmen[i].Name[j].

п. 6.9. Поле allSportsmen[i].Name[j] присвоить allSportsmen[i-1].Name[j].

п. 6.10. Поле allSportsmen[i-1].Name[j] присвоить Tempstring.

п. 6.11. Поле sorted равно 1 и перейти к п. 8.

п. 6.12. Если allSportsmen[i].VisScores[j,l] больше allSportsmen[i-1].VisScores[j,l], то не менять спортсменов в массиве местами, поле sorted равно 1 и перейти к п. 8.

п. 7. Если поле k1 не равно 0, уменьшить значение k1 на 1, иначе поле sorted равно 1.

п. 8. Увеличить значение sorthod на 1 и перейти к п. 6.1.

п. 9.1. Выполнить цикл по i от 0 до NumSportsmen с шагом 1.

п. 9.2. Выполнить цикл по j от 1 до Numpodhod с шагом 1 (j=1, т.к. сумма очков после первого подхода равна сумме очков первого подхода).

п. 9.3. Выполнить цикл по k от 0 до NumSportsmen с шагом 1 (для проверки сходства по имени в sortSportsmen и allSportsmen).

п. 9.4. Если поле sortSportsmen[i].Name[j - 1] равно allSportsmen[k].Name[j], перейти к п. 9.5., иначе перейти к п. 9.4.1.

п. 9.5. Поле sortSportsmen[i].Summa[j] присвоить sortSportsmen[i].Summa[j - 1] + allSportsmen[k].Summapodhod[j].

п. 9.6. Полю sortSportsmen[i].Name[j] присвоить allSportsmen[k].Name[j].

п. 9.7. Перейти к п. 9.4.1.

п. 10. Поле sorted равно 0.

п. 10.1. Пока sorthod меньше NumSportsmen, делать п. 10.2., иначе перейти к п. 11.

п. 10.1.1. Выполнить цикл по i от 1 до NumSportsmen с шагом 1.

п. 10.2. Выполнить цикл по j от 0 до Numpodhod с шагом 1.

п. 10.3. Если sortSportsmen[i].Summa[j] больше sortSportsmen[i - 1].Summa[j], перейти к п. 10.3.1., иначе перейти к п. 10.4.1.

п. 10.3.1. Полю Tempstring присвоить sortSportsmen[i].Name[j].

п. 10.3.2. Полю sortSportsmen[i]. Name[j] присвоить sortSportsmen[i-1]. Name[j].

п. 10.3.3. Полю sortSportsmen[i-1]. Name[j] присвоить Tempstring.

п. 10.3.4. Полю Temp присвоить sortSportsmen[i].Summa[j].

п. 10.3.5. Полю sortSportsmen[i].Summa[j] присвоить sortSportsmen[i-1].Summa[j].

п. 10.3.6. Полю sortSportsmen[i-1].Summa[j] присвоить Temp.

п. 10.4.1. Если sortSportsmen[i].Summa[j] равна sortSportsmen[i - 1].Summa[j], перейти к п. 10.4.1.1.,, иначе перейти к п. 10.6.8.

п. 10.4.1.1. Выполнить цикл по k от 0 до NumSportsmen с шагом 1.

п. 10.4.2. Если j не равно 0, то перейти к п. 10.4.3. и поле k1 присвоить j-1, иначе повторяется п. 10.2. для следующего j.

п. 10.4.3. Если поле sortSportsmen[k].Name[k1] равно sortSportsmen[i].Name[j], то перейти к п. 10.5.1., иначе повторяется п. 10.4.1. для следующего k.

п. 10.5.1. Выполнить цикл по l от 0 до NumSportsmen с шагом 1.

п. 10.5.2. Если поле sortSportsmen[l].Name[k1] равно sortSportsmen[i - 1].Name[j], то перейти к п. 10.6.1., иначе повторяется п. 10.5.1. для следующего l.

п. 10.6.1. Если k меньше l, то перейти к п. 10.6.2., иначе перейти к п. 10.7.1.

п. 10.6.2. Полю Tempstring присвоить sortSportsmen[i].Name[j].

п. 10.6.3. Полю sortSportsmen[i]. Name[j]. присвоить sortSportsmen[i-1]. Name[j].

п. 10.6.4. Полю sortSportsmen[i-1]. Name[j] присвоить Tempstring.

п. 10.6.5. Полю Temp присвоить sortSportsmen[i].Summa[j].

п. 10.6.6. Полю sortSportsmen[i].Summa[j]. присвоить sortSportsmen[i-1].Summa[j].

п. 10.6.7. Полю sortSportsmen[i-1].Summa[j] присвоить Temp.

п. 10.7. Увеличить значение sorthod на 1 и перейти к п. 10.1.

п. 11. Вывести на экран победителя.

Вывод поля «Победителем стал: »

Вывод поля Name[Numpodhod - 1] массива sortSportsmen[0]

Вывод поля «с результатом: »

Вывод поля Summa[Numpodhod - 1] массива sortSportsmen[i]