Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.08.2016
Сообщений: 10
1

Не могу понять как правильно сделать задачу с функциями

27.11.2016, 18:32. Показов 1008. Ответов 1
Метки нет (Все метки)

В рамках университетского Дня спорта в соревнованиях по
кроссу участвуют команды факультетов, состоящие из трех
преподавателей. При этом в зачёт идут два лучших результата
команды. Результат участника выражается целочисленной оценкой
R в баллах: R = K(1500 – T), где Т — время прохождения дистанции
в секундах, K — возрастной коэффициент (равен 1.0, если возраст
участника не более 25 лет, 1.13, если возраст от 26 до 35 лет и 1.45
— для возраста свыше 35 лет). Разработать программу,
запрашивающую время старта (MStart мин SStart сек), время финиша
(MFinish мин SFinish сек) и возраст каждого из трех членов одной
команды, вычисляющую результаты каждого из участников
команды, сумму двух лучших результатов в команде и выводящую
эти сведения на экран в табличном виде. В программе должны
быть реализованы, как минимум, следующие функции
 inputData для организации ввода исходных данных;
 calculateTime для вычисления времени (в секундах)
прохождения дистанции участником по времени старта и
финиша;
 calculateAgeCoeff для определения возрастного
коэффициента K по возрасту участника;
 calculateResult для вычисления балльной оценки участника
по времени прохождения дистанции и возрастному
коэффициенту;
 printTable для печати отчетной таблицы.
Отчетная таблица должна содержать сведения о возрасте, времени
прохождения дистанции и балльной оценки участников команды, а
также зачетную оценку команды (сумму двух лучших
результатов). Таблица должна иметь следующий вид:
Номер Возраст, лет Время, с Результат
1 24 193 1367
2 41 427 1212
3 66 634 1256
Результат команды 2623

Мое решение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <stdio.h>                              //Библиотека ввода-вывода
#include <locale.h>                             //Библиотека языков
#include <cstdlib>                              //Для работы с функцией system()
 
int age1,Ms1,Ss1,Mf1,Sf1,time1;                         //Глобальные переменные
int age2,Ms2,Ss2,Mf2,Sf2,time2;
int age3,Ms3,Ss3,Mf3,Sf3,time3;
float AgeCoeff1=1.0,AgeCoeff2=1.0,AgeCoeff3=1.0;
float Result1,Result2,Result3;
 
void inputData ()
{                                                                                               
    printf("Введите данные о 1-м участнике :\n");           //Ввод информации о 1-м участнике
    printf("Возраст участника\n");
    scanf("%i\n",&age1);
    printf("Время старта (М:С)\n");
    scanf("%i  ",&Ms1);
    scanf("%i\n",&Ss1);
    printf("Время финиша (М:С)\n");
    scanf("%i",&Mf1);
    scanf("%i\n\n",&Sf1);                                           
    printf("Введите данные о 2-м участнике :\n");           //Ввод информации о 2-м участнике
    printf("Возраст участника\n");
    scanf("%i\n",&age2);
    printf("Время старта (М:С)\n");
    scanf("%i  ",&Ms2);
    scanf("%i\n",&Ss2);
    printf("Время финиша (М:С)\n");
    scanf("%i",&Mf2);
    scanf("%i\n\n",&Sf2);                                       
    printf("Введите данные о 3-м участнике :\n");           //Ввод информации о 3-м участнике
    printf("Возраст участника\n");
    scanf("%i\n",&age3);
    printf("Время старта (М:С)\n");
    scanf("%i  ",&Ms2);
    scanf("%i\n",&Ss2);
    printf("Время финиша (М:С)\n");
    scanf("%i",&Mf3);
    scanf("%i\n\n",&Sf3);
}
 
void calculateTime()
{
    Ss1+=Ms1*60;                                //Расчет времени для 1-го участника
    Sf1+=Mf1*60;
    time1=Sf1-Ss1;
    Ss2+=Ms2*60;                                //Расчет времени для 2-го участника
    Sf2+=Mf2*60;
    time2=Sf2-Ss2;
    Ss3+=Ms3*60;                                //Расчет времени для 3-го участника
    Sf3+=Mf3*60;
    time3=Sf3-Ss3;
}
 
void calculateAgeCoeff()
{       
    if((age1 > 25) && (age1 <= 35))             //Коэф 1-го участника
    {
        AgeCoeff1=1.13;
    }
    if(age1 >= 35)
    {
        AgeCoeff1=1.45;
    }           
    if((age2 > 25) && (age2 <= 35))             //Коэф 2-го участника
    {
        AgeCoeff2=1.13;
    }
    if(age2 >= 35)
    {
        AgeCoeff2=1.45;
    }
    if((age3 > 25) && (age3 <= 35))             //Коэф 3-го участника
    {
        AgeCoeff3=1.13;
    }
    if(age3 >= 35)
    {
        AgeCoeff3=1.45;
    }
}
 
void calculateResult()
{
    Result1=AgeCoeff1*(1500-time1);             //Вычисление балла 1-го участника
    Result2=AgeCoeff2*(1500-time2);             //Вычисление балла 2-го участника
    Result3=AgeCoeff3*(1500-time3);             //Вычисление балла 3-го участника
}
 
void printTable()
{
    printf("Номер     Возраст,  лет     Время,  с          Результат\n"); //Печать заголовка 
    printf("%1i%12i%19i%23.2f\n",1,age1,time1,Result1);                     //Печать 1-ой строки таблицы
    printf("%1i%12i%19i%23.2f\n",2,age2,time2,Result2);                     //Печать 2-ой строки таблицы
    printf("%1i%12i%19i%23.2f\n",3,age3,time3,Result3);                     //Печать 3-ой строки таблицы
    printf("Результат команды%38.2f\n",Result1+Result2+Result3);            //Печать результата команды
}
 
void main()
{
    setlocale(LC_ALL,"russian");                                //Вкл русского языка
    inputData ();                                               //Функция для ввода исходных данных
    calculateTime();                                            //Функция для вычисления времени (секунды)
    calculateAgeCoeff();                                        //Функция для вычисления возрастного коэф
    calculateResult();                                          //Функция для вычисления результатов
    printTable();                                               //Функция для печати таблицы
    system("pause");                                            // Команда задержки экрана
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2016, 18:32
Ответы с готовыми решениями:

Не могу понять как написать правильно.
Не могу понять как это написать правильно. Оно даже не компилируется. #include&lt;iostream&gt;...

Не могу понять как правильно считать строки
Задача: Задача1. «Поиск в строке» Самым популярным вопросом прошлого контеста был вопрос о...

Не могу понять, как правильно передать указатель на объект в файл
Есть вектор v, который надо отсортировать. Есть класс MergeSort, который это должен делать, он...

Не могу понять задачу
Условие звучит так: для n введённых пользователем членов последовательности символов (имеются ввиду...

1
383 / 277 / 478
Регистрация: 09.05.2014
Сообщений: 769
28.11.2016, 13:59 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
 
struct time {
    int mm, ss;
};
struct competitor {
    time start, finish;
    int age;
    float result;
};
bool correctTime (time);
void inputData (competitor[], int);
int calculateTime (competitor);
float calculateAgeCoeff (competitor);
float calculateResult (competitor);
void sortResult (competitor[], int n);
void printTable (competitor [], int);   
 
 
int main(){
    const int n=3;
    competitor Team[n];
    inputData(Team, n);
    system ("cls");
    printTable (Team, n);
    return 0;
}
 
bool correctTime (time T){
    if(T.mm<60&&T.mm>=0&&T.ss<60&&T.ss>=0)
        return true;
    return false;
}
 
void inputData (competitor N[], int n){
    for (int i=0; i<n; i++){
        std::cout<<"enter "<<i+1<<" competitor's age (year): ";
        std::cin>>N[i].age;
        do {
            std::cout<<"enter "<<i+1<<" competitor's start time: (m, s): ";
            std::cin>>N[i].start.mm>>N[i].start.ss;
            if (!correctTime (N[i].start))
                std::cout<<"incorrect time. please repeet\n";
            else
                break;
            }
        while (1);
        do{
            std::cout<<"enter "<<i+1<<" competitor's finish time: (m, s): ";
            std::cin>>N[i].finish.mm>>N[i].finish.ss;
            if (N[i].finish.mm<N[i].start.mm||(N[i].finish.mm==N[i].start.mm&&N[i].finish.ss<N[i].start.ss)||!correctTime (N[i].finish))
                std::cout<<"incorrect time. please repeet\n";
            else
                break;
            }
        while (1);
        N[i].result=calculateResult(N[i]);
    }
}
 
int calculateTime (competitor C){
    return C.finish.mm-C.start.mm+C.finish.ss-C.start.ss;
}
 
float calculateAgeCoeff (competitor C){
    if (C.age<25)
        return 1.0;
    else if (C.age>35)
        return 1.45;
    else
        return 1.13;
}
 
float calculateResult (competitor C){
    return calculateAgeCoeff(C)*(1500-calculateTime(C));
}
 
void sortResult (competitor N[], int n){
    for (int i=0; i<n-1; i++)
        for (int j=i; j<n; j++)
            if (N[i].result<N[j].result){
                competitor temp=N[i];
                N[i]=N[j];
                N[j]=temp;
            }
}
 
void printTable (competitor N[], int n){
    sortResult (N, n);
    std::cout<<"Num\tAge\tTime\tResult\n";
    for (int i=0; i<n; i++)
        std::cout<<i+1<<'\t'<<N[i].age<<'\t'<<calculateTime(N[i])<<'\t'<<N[i].result<<std::endl;
    std::cout<<"Team result: "<<N[0].result+N[1].result;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2016, 13:59

Не могу понять задачу
Имеется задача http://rghost.ru/18509631/image.png 1 Фамилия , Имя - заключить в массив...

Прошу подсказать, как сделать правильно задачу
Написать игру. Программа задумывает число 0 – 100. Пользователю необходимо угадать число вводя...

Не могу понять задачу с векторами
вот задача http://s017.***********/i429/1110/ab/26d7470b188f.jpg как ее можно реализовать

Не могу понять как сделать
Задание такое: Ввести строку и слово. Удалить слово из строки, если она в ней содержится.(делать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.