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

Трабл с map - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа с матрицами http://www.cyberforum.ru/cpp-beginners/thread321007.html
Всем привет! Напишите программу плиз ! Заполнить матрицу случайными числами. Отобразить симметрично относительно вертикальной оси секторы матрицы которые лежат влево и вправо от главной и побочной диагоналей.
C++ Попадание точки в определенную область. Определить принадлежит ли заданная точка с координатами (x,y) закрашенной области. http://www.cyberforum.ru/cpp-beginners/thread320992.html
Codeblocks C++
как подключить русские буквы в с++ , выводит не понятные симвлы
C++ системы передачи информации
Здравствуйте скажите пожалуйста что является системами передачи информации?
C++ Структуры. Журнал посещения http://www.cyberforum.ru/cpp-beginners/thread320918.html
Необходимо создать список студентов и отмечать их посещение + и -. у меня получилось только: struct zhurnal { char stud; char pos; }gL; void main () {
C++ Инициализация переменной во время выполнения с именем, заданным пользователем Вопрос - возможно ли инициализировать переменную с именем заданным пользователем? то есть допустим из txt файла считался текст "int qwer", то возможно ли инициализировать переменную int с именем qwer? подробнее

Показать сообщение отдельно
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.06.2011, 19:38     Трабл с map
Доброго времени суток
В input.txt лежат названия поездов, время их отправления и прибытия. Расстояние - константа. Нужно вывести самый быстрый поезд. Полное условие тут
Пытаюсь решить в си стиле с использованием map
Как - то так получилось.
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
#include <map>
#include <cstdio>
float q,i,a,n,t;
char s[53];
int main(){
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    std::map<float,char *> m;
    int o;
    for (scanf("%f",&n);n--;){
        o = 0;
        scanf("\n%c",&s[o++]);       //считывание с первой
        for(;;){
            scanf("%c",&s[o++]);
            if (s[o-1]=='"') break; //по последнюю кавычку
        }                               //считывается корректно, проверено
        s[o] = 0;
        scanf("%f:%f",&a,&i);
        a += i/60;
        scanf("%f:%f",&i,&t);
        i += t/60;
        if (i <= a) i += 24;
        q = i-a;  //теперь в q лежит время поезда
        m[650/q]=s; //пытаюсь засунуть в это место строку       
    }
    //То, что нужно вывести - printf("The fastest train is %s.\nIt's speed is %d km/h, approximately.",(*--m.end()).second,int((*--m.end()).first+0.5));
    //Просто вывод того, что получилось:
    for (std::map<float,char*>::iterator it = m.begin();it!=m.end(); ++it)
        printf("%s - %d\n",it->second,(int)(it->first+0.5));//2й аргумент- быдлоокругление
    return 0;
}
Конкретно проблемы с 24й строкой.
Видимо делаю что-то неправильно, т.к. присваивается одно значение(что интересно, последнее введенное, но всем элементам зараз =0 ). Примеры тестов есть по ссылке выше. Пробовал использовать strcpy - Segmentation fault
В чем моя ошибка, и как это можно исправить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru