Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
McCool
0 / 0 / 0
Регистрация: 17.10.2009
Сообщений: 14
#1

Подскажите решение - C++

22.10.2009, 10:38. Просмотров 719. Ответов 11
Метки нет (Все метки)

Составить программу, в которой необходимо сформировать протокол лыжных гонок в виде массива строк, в каждой из которых записать фамилию, время старта(часы, минуты, секунды), время финиша. Используя этот массив, найти победителей занявших три первые места. Результаты вывести на экран.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2009, 10:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подскажите решение (C++):

Подскажите альтернативное решение - C++
Как можно еще записать решение через циклы ? Может мой вариант слишком нубовский ? #include <iostream> using namespace std; int...

Подскажите, пожалуйста, верно ли решение. - C++
#include <iostream> using namespace std; int main () { cout << "What is your first name? "; char *first = new char; ...

Ребят, подскажите решение задачи - C++
А вот и сама задача.... Дан массив D Найти и вывести элементы массива меньше 3 и их порядковые номера в массиве. А также сумму всех...

Подскажите пожалуйста решение задачи. - C++
Найти точку D, симметричную точку A относительно стороны BC.

Подскажите паттерн или архитектурное решение - C++
Добрый вечер, подскажите паттерн или архитектурное решение для такой задачи: while(game.isOpen()) { Event.getEvents(); ...

задача на функции со сменным числом параметров. подскажите, пожалуйста решение - C++
Дано натуральное число n (4 <n <10) и целые числа a1, a2, ... an. Посчитать: a1, -a1a2, a1a2a3 ..., (-1) ^ (n + 1) a1a2 ... an;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
22.10.2009, 10:51 #2
Через struct легко.
через двухмерный массив по тяжелее будет
0
Lorr
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 21
22.10.2009, 10:58 #3
Цитата Сообщение от Sekt Посмотреть сообщение
Через struct легко.
через двухмерный массив по тяжелее будет
Прикинул так, если через двумерные массивы, то там функции сравнения, ввода и вывода будут из сплошных вложенных циклов состоять...
0
McCool
0 / 0 / 0
Регистрация: 17.10.2009
Сообщений: 14
22.10.2009, 11:09  [ТС] #4
Может эта задача попроще будет: Необходимо написать программу, в которой необходимо: создать файл с фамилиями студентов группы и, используя его, сформировать ведомость результатов сессии (5 экзаменов) в виде целочисленной матрицы размера n x 5 (n - количество студентов группы); определить средний балл группы по каждому предмету. Вычисление среднего балла оформить отдельной подпрограммой. Результат вычислений вывести на экран.

Помогите плиз, а то сессию завалю.
0
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
22.10.2009, 11:17 #5
Ето через struct точто.
0
McCool
0 / 0 / 0
Регистрация: 17.10.2009
Сообщений: 14
22.10.2009, 11:23  [ТС] #6
а можно поподробнее: через struct это как?
0
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
22.10.2009, 11:35 #7
Вечером или завтра попробую сделать.
P.s Время терпит?
1
McCool
0 / 0 / 0
Регистрация: 17.10.2009
Сообщений: 14
22.10.2009, 11:39  [ТС] #8
До субботы сдать надо. Если есть возможность, то хотелось бы поскорее. Надо еще успеть разобраться что там к чему.

P.s. Заранее благодарен.
0
-=ЮрА=-
Заблокирован
Автор FAQ
22.10.2009, 16:25 #9
Вот то что у меня вышло, для ускорения работы и облегчения работы
ввёл пару дополнительных массивов, по условию это не запрещалось)))

Я постарался всё прокоментить, и давать понятные названия функциям,
у меня на машине прога компилится и работает без проблем
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <windows.h>
#include <stdio.h>
 
//Наш 2-мерный массив
char ** chMass;
//Вспомогательные массивы с временем сарта и 
//временем прохождения дистанции в секундах, 
//(предполагается что спортсмены участвуют в лыжной гонке менее
//1-го дня, что думаю вполне логично!)
int * iStartTime = (int *)malloc(sizeof(int));
int * iResultTime= (int *)malloc(sizeof(int));
 
//Массив с последовательностью индексов для вывода
int * iSortIndex = (int *)malloc(sizeof(int));
 
char * AddSportsmanRes(char * str);
int GetTimeInSeconds(char * str);
 
void main()
{
    printf("\tSki results protokol\r\n");
    printf("Enter number of sportsmans\t");
    int num;scanf("%d",&num);getchar();
    chMass = new char * [num];
    iStartTime  = (int *)realloc(iStartTime, sizeof(int)*num);
    iResultTime = (int *)realloc(iResultTime,sizeof(int)*num);
    iSortIndex  = (int *)realloc(iSortIndex,sizeof(int)*num);
 
    printf("Enter family of sportsmen and his start//finish time\r\n");
    printf("in next format Family-hh:mm:ss-hh:mm:ss\r\n");
    for(int i = 0; i < num; i++)
    {
        printf("Add %d sportsman :\r\n\t",i + 1);
        chMass[i] = AddSportsmanRes(chMass[i]);
        iResultTime[i] = GetTimeInSeconds(strrchr(chMass[i],'-'));
        iStartTime[i]  = GetTimeInSeconds(strrchr(chMass[i],'-'));
 
        //В итоге в chMass[i] останется только фамилия участника
        //А в массивах iResultTime и iStartTime данной фамилии
        //будет соответствовать време на дистанции и старта 
        //в числовом формате
//      printf("Start  time in Sec : %d\r\n",iStartTime[i]);
 
        //Тут сразу вычисляем время спортсмена 
        //затраченное на прохождения дистанции
//      printf("Result time in Sec : %d\r\n",
            (iResultTime[i] -= iStartTime[i])/*)*/;
 
//      printf("Family : %s\r\n",chMass[i]);
        iSortIndex[i] = i;
    }
    //Сортировка методом пузырька
    for(int j = 0; j < num - 1; j++)
    {
        for(i = j + 1; i < num; i++)
        {
            //a < b
            if(iResultTime[iSortIndex[i]] < iResultTime[iSortIndex[j]])
            {
                //a += b
                iSortIndex[i] += iSortIndex[j];
                //b = a - b
                iSortIndex[j] = iSortIndex[i] - iSortIndex[j];
                //a = a - b
                iSortIndex[i] = iSortIndex[i] - iSortIndex[j];
            }
        }
//      printf("iSortIndex[%d] - %d\r\n",j,iSortIndex[j]);
    }
    printf("\tFinish protokol :\r\n");
    printf("[Format : Place Family TimeOnDistance]\r\n");
    for(i = 0; i < num; i++)
        printf
        (
            "\t%d\t%s\t%d\r\n",
            i + 1,
            chMass[iSortIndex[i]],
            iResultTime[iSortIndex[i]]
        );
 
    //Чистим память
    for(i = 0; i < num; i++)
        free(chMass[i]);
    iStartTime  = (int *)realloc(iStartTime, sizeof(int));
    iResultTime = (int *)realloc(iResultTime,sizeof(int));
    iSortIndex  = (int *)realloc(iSortIndex,sizeof(int));
 
    printf("Press NUM1 to enter new distance protokol\r\n");
    scanf("%d",&i);getchar();
    if(i == 1)
        main();
    free(iStartTime);
    free(iResultTime);
    free(iSortIndex);
}
 
char * AddSportsmanRes(char * str)
{
    int i = 0;
    str = (char *)malloc(sizeof(char));
    while((str[i] = getchar()) != '\n')
    {
        i++;
        str = (char *)realloc(str,sizeof(char)*(i + 1));
    }
    str[i] = '\0';
    return str;
}
 
int GetTimeInSeconds(char * str)
{
    int iSec = 0;
    char * chBuf = strrchr(str,':');
    if(chBuf)
    {
        iSec += atoi(chBuf + 1);
        str[strlen(str) - strlen(chBuf)] = '\0';
        chBuf = strrchr(str,':');
        
        if(chBuf)
            iSec += atoi(chBuf + 1)*60;
        str[strlen(str) - strlen(chBuf)] = '\0';
        chBuf = str;
        if(chBuf[0] == '-')
            chBuf++;
        iSec += atoi(chBuf)*3600;
        str[0] = '\0';
    }
    return iSec;
}
1
Миниатюры
Подскажите решение  
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
22.10.2009, 16:48 #10
Юрок молодец .Мне делать?
0
McCool
0 / 0 / 0
Регистрация: 17.10.2009
Сообщений: 14
22.10.2009, 18:58  [ТС] #11
Юра, спасибо огромное, постараюсь разобраться.
Sect, если можешь вариант попроще сделать, то буду очень признателен. Препод просто не поверит, что я мог сделать сам вариант, который предлагает Юра.
0
McCool
0 / 0 / 0
Регистрация: 17.10.2009
Сообщений: 14
22.10.2009, 19:16  [ТС] #12
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
у меня на машине прога компилится и работает без проблем
Я попробовал запустить прогу в Borland C++ Version 3.1 и у меня вылезла куча ошибок
0
Миниатюры
Подскажите решение  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2009, 19:16
Привет! Вот еще темы с ответами:

Подскажите решение... - C++
Доброе время суток! Имеются числа А1,А2,...,АN и B1,B2,...,BN. Составить из них N пар (Аi, Bj) таким образом, чтобы сумма произведений...

Преобразовать решение используя указатели (дано решение без указателей) - C++
Элемент матрицы назовем седловой точкой, если он является наименьшим в своей своей строке и одновременно наибольшим в своем столбце или,...

Преобразовать решение (дано решение без указателей) - C++
Помогите начинающему программисту с преобразованием. Нужно приведенное решение преобразовать в решение с указателями. Дана квадратная...

подскажите что делать при вводимых данных 10 25 и 5 20 программа работает не правильно должна выводить 135 подскажите что делать - C++
Вывод В выходной файл выведите одно число - сколько ударов сделали часы за этот отрезок времени.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.10.2009, 19:16
Ответ Создать тему
Опции темы

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