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

Решение задач Р. Лафоре, структуры - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переменная не изменяется http://www.cyberforum.ru/cpp-beginners/thread772295.html
Доброго времени суток ! Нужна ваша помощь. Вроде бы вопрос легкий, но не могу понять как сделать. Допустим есть код : #include <iostream> class s {
C++ найти и исправить ошибки Что надо исправить в этой программе #include "stdafx.h" #include "time.h" #include <iostream> #include <fstream> #include <iomanip> using namespace std; int main(unt argc), _TCHAR" argv) { http://www.cyberforum.ru/cpp-beginners/thread772289.html
C++ Привести пример кода создания Splash Screen Visual C++2008-2012
Приведите пожалуйста пример кода создания Splash Screen в Visual C++2008-2012. Весь нет перерыл ничего не нашёл(просьба на сайт Microsoft не направлять)!
C++ Вычислить методом Ньютона корень уравнения
Помогите, пожалуйста, написать программу, вычисляющую методом Ньютона`(x_(k+1)=x_k-A^(-1) (x_k )f(x_k )) где уравнений с положительными корнями приближенные значения ε=〖10〗^(-5) Точность ...
C++ Преобразовать одномерный массив, состоящий из 10 вещественных элементов http://www.cyberforum.ru/cpp-beginners/thread772266.html
Доброго времени Суток! Задание в борланде - Преобразовать одномерный массив, состоящий из 10(любых) вещественных элементов, таким образом, чтобы сначала располагались все положительные элементы,...
C++ дано Sn,k,N найти Sk n=1-> N,S=Sn-> Sk S=S+S*k/100 дано Sn,k,N найти Sk=? n=1-> N, S=Sn-> Sk S=S+S*k/100 подробнее

Показать сообщение отдельно
Bonaqus
2 / 2 / 0
Регистрация: 10.01.2013
Сообщений: 15

Решение задач Р. Лафоре, структуры - C++

26.01.2013, 17:59. Просмотров 1134. Ответов 8
Метки (Все метки)

Никак не могу понять в чем проблема.

Условие задачи: используя структуру time с полями типа int (часы, минуты, секунды) написать программу, которая получает от пользователя два значения времени в формате 12:59:59, сохраняет из в переменных типа struct time, затем переводит оба значения в секунды, складывает их, и переводит сумму в исходный формат на экран в формате 12:59:59.

Описание проблемы:
Откомпилил, решил прогнать на критические параметры: время t1=12:59:59 ; t2=0:0:0 и наоборот,
t1=0:0:0; t2=12:59: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
#include<iostream>
using namespace std;
 
struct time
{
    int hours;
    int minutes;
    int seconds;
};
 
int main()
{
    char ch;    // для хранения символа ':'
    time t1,t2,t3;              //переменные типа time
    float temp1,temp2,temp3,dec;           //переменные для времени в секундах
        
    cout<<"1st time [HH:MM:SS]: ";                       //получаем значения полей переменных t1, t2 структур типа time
    cin>>t1.hours>>ch>>t1.minutes>>ch>>t1.seconds;
    cout<<"2nd time [HH:MM:SS]: ";
    cin>>t2.hours>>ch>>t2.minutes>>ch>>t2.seconds;
 
        temp1=t1.hours*3600+t1.minutes*60+t1.seconds;  //переводим все время в секунды
    temp2=t2.hours*3600+t2.minutes*60+t2.seconds;
    temp3=temp1+temp2;                            //и складываем
 
    t3.hours=static_cast<int>(temp3/3600);                //получаем часы
/*ЗДЕСЬ ПЕРВАЯ ОШИБКА! если t1 = 0:0:0 , следующий оператор не выполняется*/
/*при вводе t2 = 0:0:0 выполняется корректно*/
    dec=temp3/3600-t1.hours;                                  //находим остаток минут(dec форма)
        t3.minutes=static_cast<int>(dec*60);                   //находим минуты
/*Вторая ошибка здесь: секудны получают отрицательные значения и уже выводятся правильно*/  
/*и их по идее нужно бы умножать на 60, но нет, компилятор решает что он все понял*/
/* и выводит значение "-58.0003"  (не ясно, почему минус...)*/  
        dec=dec-t3.minutes;                                          //получаем остаток секунд(ec форма)
    t3.seconds=static_cast<int>(dec*60)+1;               //находим секунды и прибавляем +1,
                                                                              //так как на калькуляторе глотало 1 секунду
    
    cout<<"3rd time [HH:MM:SS]: "<<t3.hours<<ch<<t3.minutes<<ch<<t3.seconds<<endl;
 
    system("pause");
    return 0;
}

С уважением, Bonaqus.

P.S. Возможно я дурак или чего то не заметил...прошу строго не судить.
0
Миниатюры
Решение задач Р. Лафоре, структуры  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.