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

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

Войти
Регистрация
Восстановить пароль
 
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
#1

Ошибка в задаче - C++

14.02.2014, 23:05. Просмотров 263. Ответов 3
Метки нет (Все метки)

Заданы моменты начала и конца некоторого промежудка времени в часах минутах и секундах ( в пределах одних суток) Найти продолжительность этого промежудка в тех же единицах измерения.

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
#include <iostream>
using namespace std;
 
int main(int argc, char*argv[]){
    setlocale(LC_ALL, "Russian");
    
    int min, sec, hours, min_1, sec_1, hours_1, m, s, h;
 
    cout << "Введите начальный интервал" << endl;
 
    cout << "Введите время в часах -> ";
    cin >> hours;
 
    cout << "Введите время в минутах -> ";
    cin >> min;
 
    cout << "Введите время в секундах -> ";
    cin >> sec;
 
    cout << endl;
    cout << "==================================";
    cout << endl << endl;
 
    cout << "Введите конечный интервал" << endl;
 
    cout << "Введите время в часах -> ";
    cin >> hours_1;
 
    cout << "Введите время в минутах -> ";
    cin >> min_1;
 
    cout << "Введите время в секундах -> ";
    cin >> sec_1;
 
    m = min_1 - min;
    s = sec_1 - sec;
    h = hours_1 - hours;
 
    cout << endl;
    cout << "==================================";
    cout << endl << endl;
 
    if (m < 0) {
        m = m + 60;
        min_1 = min_1 - 1;
    }
 
    if (s < 0) {
        s = s + 60;
        sec_1 = sec_1 - 1;
    }
    
    if (h < 0) h = h + 24;
 
    cout << "Продолжительность: " << endl;
    cout << "В часах ->" << h << endl;
    cout << "В минутах ->" << m << endl;
    cout << "В секундах ->" << s << endl;
 
return 0;
}
Если первые величины такие 23 часа 30 минут 55 секунд, а вторые 1 час 7 минут 6 секунд то результат будет 2 часа 36 минут 11 секунд, а нужно что бы было так 1 часа 36 минут 11 секунд, что то с часами
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2014, 23:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в задаче (C++):

ошибка в задаче на палиндром - C++
Ребят помогите пожалуйста. Задачка найти палиндром в массиве. Писал-писал и в итоге в ф-ии последнее условие if (arr_t1==arr_t2) постоянно...

Ошибка в задаче на ряды - C++
1.При некоторых заданных x и N, определяемых вводом, вычислить сумму N слагаемых заданного вида. 2.При некоторых заданных x и Е,...

ошибка в задаче с классом - C++
для 2х матриц (A, B) определить кол-во строк, сумма элементов которых положительна ошибка в строке ввода матрицы и звучит как :...

Одна ошибка в задаче - C++
Задача: Дан текстовый файл. Переписать его текст в новый файл таким образом, чтобы каждое предложение начиналось с новой строки и между...

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

Ошибка в задаче о восьми ферзях - C++
Суть задачи заключается в том, что нужно суметь расставить на шахматной доске (8 х 8) восемь ферзей так, чтобы они не находились под боем...

3
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
14.02.2014, 23:32 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ошибка здесь:
Цитата Сообщение от PriZrаK Посмотреть сообщение
if (m < 0) {
* * * * m = m + 60;
* * * * min_1 = min_1 - 1;
* * }
if (s < 0) {
* * * * s = s + 60;
* * * * sec_1 = sec_1 - 1;
* * }
if (h < 0) h = h + 24;
Попробуй так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  if (s < 0) {
m--;
        s = s + 60;
        sec_1 = sec_1 - 1;
    }
  
if (m < 0) {
h--
        m = m + 60;
        min_1 = min_1 - 1;
    }
 
    
    if (h < 0) h = h + 24;
1
PriZrаK
-116 / 0 / 1
Регистрация: 28.01.2014
Сообщений: 144
15.02.2014, 18:40  [ТС] #3
Цитата Сообщение от Amandosov Посмотреть сообщение
Ошибка здесь:

Попробуй так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  if (s < 0) {
m--;
        s = s + 60;
        sec_1 = sec_1 - 1;
    }
  
if (m < 0) {
h--
        m = m + 60;
        min_1 = min_1 - 1;
    }
 
    
    if (h < 0) h = h + 24;
реально ли решить задачу без использования ветвлений?
0
stikkas
19 / 19 / 6
Регистрация: 26.01.2014
Сообщений: 56
15.02.2014, 22:36 #4
а нельзя начало и конец привести к секундам
((hours * min_per_hour + mins ) * sec_per_min + secs) потом произвести необходимые действия (в данном случае вычитание) а потом результат приветсти к нужному виду:
hours = res_secs / sec_per_min / min_per_hour
mins = res_secs / sec_per_min % min_per_hour
secs = res_secs % sec_per_min
?

Добавлено через 16 минут
В условии задачи стоит оговорка что в пределах одних суток, т.е. с 00:00:00 до 23:59:59
Если без учета этой оговорки, то перед вычитанием сравнить первую величину и вторую,
если вторая меньше, тогда найти разницу между 24:00:00 и стартом, и прибавить вторую точку (конец).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int hStart, mStart, sStart, hEnd, mEnd, sEnd;
// here comes initialization
int startSecs = (hStart * 60 + mStart) * 60 + sStart;
int endSecs = (hEnd * 60 + mEnd) * 60 + sEnd;
int resSecs;
if (startSecs < endSecs) {
  resSecs = endSecs - startSecs;
} else {
  resSecs = 24 * 60 * 60 - startSecs + endSecs;
}
 
int hDist, mDist, sDist;
hDist = resSesc / 60 / 60;
mDist = resSecs / 60 % 60;
sDist = resSecs % 60;
0
15.02.2014, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2014, 22:36
Привет! Вот еще темы с ответами:

Ошибка в задаче не выводит на экран кое что - C++
Задача с классами, надо чтоб было 5 функций, они есть вот. А компилятор выводит только сокращение дробей, а надо чтоб и наибольший...

Возникает ошибка в задаче на нахождения длинны планет - C++
Условия задачи: Дано 9 планет,посчитать длину экватора,если известен радиус планет при отладке Возникает ошибка: warning C4552: !:...

Сортировка выбором (метод прямого выбора). Ошибка в задаче - C++
Привет. У меня есть программка решение на задачку &quot;Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в...

Ошибка при использовании оператора for в задаче с символьными строками - C++
При использовании оператора for, цикл почему-то первый раз дублируется, и вместо B раз получается b-1. Фэйл происходит в этом цикле. ...


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

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

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