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

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

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

Преобразование времени (double. Может всё-таки кто-нибудь знает) - C++

12.12.2012, 16:22. Просмотров 1002. Ответов 25
Метки нет (Все метки)

Как double сделать так, чтобы он работал по такому принципу.

К примеру идет число 0,01...0,59 и после 0,59 переходило не в 0,60 , а в 1,00?? Мне это надо, чтобы из файла считывал число и за 59 не переваливало. Вообще в программе это будет иметь значение времени. Если можно, то надо без классов и векторов.

Если есть другой способ, то сообщите о нём пожалуйста. Заранее благодарен всем людям, кто придумает какой-либо выход из этой ситуации ^_^
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 16:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование времени (double. Может всё-таки кто-нибудь знает) (C++):

кто нибудь из программистов знает? - C++
Кто нибудь из программистов знает, а то я запарился искать книги (вернее задачи) на классы, указатели,обьекты и т.д. В интернете очень...

кто нибудь знает?(про винмэйн) - C++
кто нибудь знает как, например в мфс инкапсулированы такие функции как winmain и windowproc в тело класса, что выполнение начинается...

Кто-нибудь знает, что это за ошибка? - C++
Кто-нибудь знает, что это за ошибка, когда она возникает и что делать? command line error MIDL1004: cannot execute C preprocessor...

Кто нибудь знает как написать игру на С ?) - C++
Зраствуйте Можно ли написать крестики нолики на С ? И как это сделать ? Дайте идею или код. Спасибо за внимание.

нужно сделать трассировку. кто-нибудь знает как? - C++
неужели никто не знает как делать трассировку? завтра преподу сдавать все, а я уже который день не могу сделать трассировку. ...

Кто нибудь знает сайт на подобии этого, только на русском? - C++
Кто-нибудь знает сайт на подобии этого, только на русском?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,459
12.12.2012, 16:29 #2
C
1
2
3
4
5
6
7
8
 double d, res, ip;
while {
...
res = modf(d, &ip); // дробная часть, ip - целая часть
if (fabs(res - 0.6) < 0.001) d = ip + 1;
else  d += 0.01;
...
}
1
dmmax
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
12.12.2012, 16:33  [ТС] #3
Цитата Сообщение от Байт Посмотреть сообщение
C
1
2
3
4
5
6
7
8
 double d, res, ip;
while {
...
res = modf(d, &ip); // дробная часть, ip - целая часть
if (fabs(res - 0.6) < 0.001) d = ip + 1;
else  d += 0.01;
...
}
спасибо большое, а вот можно ли это сделать функцией и записать в структуру?

C++
1
2
3
4
5
6
struct train{
    //ф-ия времени(отправления)
    char city[15];//город прибытия
    //ф-ия времени(время в пути)
    //ф-ия времени(время прибытия)
};
0
dmmax
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
12.12.2012, 17:15  [ТС] #4
Цитата Сообщение от Jupiter Посмотреть сообщение
извиняюсь за дубль...если можно, то тему удалите ^_^

Добавлено через 39 минут
C++
1
2
3
4
5
6
7
8
9
10
11
double time(double d, res, ip){
    res = modf(d, &ip); 
    if (fabs(res - 0.6) < 0.001) d = ip + 1;
    else  d += 0.01;
}
struct train{
    double time;
    char city[15];
    double time;
    double time;
};
ответьте плз, правильно не правильно сделал?

хотя функцию вроде не так надо было сделать блин помогите пожалуйста
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2012, 17:17 #5
dmmax, можно как-то более понятно объяснить.

Добавлено через 1 минуту
Цитата Сообщение от dmmax Посмотреть сообщение
double time;
Нельзя time использовать. Обзовите по-другому переменные. Но дайте им уникальные имена.
0
dmmax
0 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 81
12.12.2012, 18:34  [ТС] #6
Цитата Сообщение от go Посмотреть сообщение
dmmax, можно как-то более понятно объяснить.

Добавлено через 1 минуту

Нельзя time использовать. Обзовите по-другому переменные. Но дайте им уникальные имена.
Вообщем до этого у меня был такая структура
C++
1
2
3
4
5
6
7
8
9
10
struct train{
   int hours;//время отправления(час);
   int minut;//время отправления(минута);
   char city[15];
   int timewayH;//Время пути(час);
   int timewayM;//Время пути(минуты);
   int timearrivalH;//время прибытия(час);
   int timearrivalM;//время прибытия(минуты);
   int time
};
вообщем дальше я или самостоятельно записывал значения в файлы, но сортировка мне не удавалась.(объяснить не могу почему, вообще я решил соединить время(час+минуты) в double.

затруднился особенно в этом моменте, когда надо было из файла считать данные и показывать их на экран, а позже и сортировать.

пример текстового файла, из которого надо было взять данные(как было раньше):

Кликните здесь для просмотра всего текста

1 15 Смоленск 2 30
2 40 Казань 1 40
3 15 Омск 2 45

P.S.: Первые два числа - это время отправления, названия - это город прибытия, вторые два числа - время в пути.
Как я хочу чтобы получилось:
Кликните здесь для просмотра всего текста

1.15 Смоленск 2.30
2.40 Казань 1.40
3.15 Омск 2.45

чтобы заместо ДВУХ чисел, было ОДНО число. Намного упроститься сортировка. Да и понятней будет, во всяком случае для меня ^_^

Вот как мне функцию в структуру занести?

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
double time(double d, res, ip){
    res = modf(d, &ip); 
    if (fabs(res - 0.6) < 0.001) d = ip + 1;
    else  d += 0.01;
}
double timeWay(double d, res, ip){
    res = modf(d, &ip); 
    if (fabs(res - 0.6) < 0.001) d = ip + 1;
    else  d += 0.01;
}
double timeArrival(double d, res, ip){
    res = modf(d, &ip); 
    if (fabs(res - 0.6) < 0.001) d = ip + 1;
    else  d += 0.01;
struct train{
    double time;
    char city[15];
    double timeWay;
    double timeArrival;
};
}
пример кода, ещё один

Добавлено через 7 минут
тип функции будет не double, а void, ну мне, типа, возвращаться значение не надо.

Добавлено через 59 минут
ап
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2012, 18:40 #7
Цитата Сообщение от dmmax Посмотреть сообщение
double time;
Не смущает, что подсветился time?
ничего не понял
C
1
2
3
4
5
6
7
8
struct ABC
{
    double t1, t2;
    char s[BUFISZ];
};
 
struct ABC st;
fscanf(in_file, "%lf %s %lf", &st.t1, st.s, &st.t2); // Допилите сами
Добавлено через 33 секунды
Или нужно было на плюсах? ))
0
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,459
12.12.2012, 18:56 #8
C
1
2
3
4
5
6
double time(double d, res, ip){
    res = modf(d, &ip); 
    if (fabs(res - 0.6) < 0.001) d = ip + 1;
    else  d += 0.01;
    return d;
}
return d;
К сожалению почти все встречаемые мной трансляторы этой ошибкой пренебрегают. Даже Варингом ее не считают.
А ведь это ошибка грубая. Хотя казалось бы - чего там стоит ее транслятору определить, и не такие вещи сечет... Ан нет...
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2012, 19:07 #9
Байт, где ошибка?
0
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,459
12.12.2012, 19:21 #10
Цитата Сообщение от go Посмотреть сообщение
Байт, где ошибка?
В посте #4 ТС. Функция определена как возвращающая double, но ничего не возвращает, нет ретурна, и она возвращает некую ахинею, лежащую в стеке, но не имеющую никакого отношения к ее, весьма уважаемой, работе
0
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
12.12.2012, 19:23 #11
Байт, честно говоря лень лезть в стандарт, но по памяти вроде только в функции main можно не писать return.
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.12.2012, 19:27 #12
В сишном коде нужно(я бегло посмотрел, в основном использовались сишные тэги в этой теме) писать return 0. В плюсовом - не нужно.
0
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,459
12.12.2012, 19:31 #13
Цитата Сообщение от go Посмотреть сообщение
Байт, честно говоря лень лезть в стандарт, но по памяти вроде только в функции main можно не писать return.
Да при чем тут стандарт! Элементарный здравый смысл и больше ничего. Ежели ты определил функцию, как какую-то херню возвращающую, так пусть она и возвратит эту херню.
А return можно не писать во всех функциях, не возвращающих значения. Во всяком случае до недавнего времени это было так.
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.12.2012, 19:33 #14
А, я понял, о чем речь. Тут же не мейновая функция. Но студия такой код вообще откажется компилить, нормальные компиляторы выдадут ворнинги.
0
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,459
12.12.2012, 19:43 #15
Цитата Сообщение от diagon Посмотреть сообщение
В сишном коде нужно(я бегло посмотрел, в основном использовались сишные тэги в этой теме) писать return 0. В плюсовом - не нужно.
Это все иллюзии. Читайте K&R. return в main по мысли некоторых созидателей нужен для взаимодействия энтого main-а с операционной системой. Их грех и их заморочка. но внутри как сишной так и плюсовой программы, явные ретурны для функции ничего не возвращающей (void) пока, слава тебе, Господи, не нужны.
Вообще-то глупый разговор получается. Была конкретная проблема, а мы размазываем манную кашу...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2012, 19:43
Привет! Вот еще темы с ответами:

кто-нибудь знает где скачать русификатор для dev-c++? - C++
где можно скачать русификатор для dev-c++?

Всем добрый день! Кто-нибудь знает как исправить это? - C++
https://pp.vk.me/c625822/v625822049/3a869/cr3hbcL44_4.jpg Нарушение правил п.5.8. Запрещено публиковать ссылки на другие форумы, а...

Запутался с IF. Может кто-то знает в чём ошибка? - C++
Программа, нужно ввести значение &quot;х&quot; и &quot;а&quot;, и определить значение функции в зависимости от значения аргумента... Ошибку начинает писать с...

Кто-нибудь знает руускоязычные уроки по чтению и редактированию данных игры из оперативной памяти? - C++
Можно и англоязычные туториалы... Но желательно Русские. На плюсы не скуплюсь. Спасибо заранее!


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

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

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