Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите решить задачку) 
:(
    Опции темы
capitas
Дата 4.11.2011, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 4.11.2011

Репутация: нет
Всего: нет



Здравствуйте.
условие задачи:

текущее показание электронный часов: m часов (0<=m<=23); n мин (0<=59<=); k сек (0<=k<=59). какое время будут показывать часы через p Часов d минут и r секунд?

вот плоды моих мучений:

Код

#include <vcl.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
void main()
{
  int m = 21;
  int n = 39;
  int k = 23;
  printf ("Tekushee pokazanie chasov: %d:%d:%d \n\n", m,n,k);
  int p, d, r;
  printf ("Proshlo Hours:");
  scanf ("%d", &p);
  printf ("Proshlo Minutes:");
  scanf ("%d", &d);
  printf ("Proshlo Seconds:");
  scanf ("%d", &r);
  int o, i, u, hour, min, sec;
  o = m + p;
  i = n + d;
  u = k + r;
  

........



далее возникают трудности. ибо нужно ведь не просто сложить цифры а если надо то перенести секунды  в минуты и минуты в часы. ведь может пройти не только 10, 20, 30 секунд но и 1200 и вообще любые значения. подумал что нашел выход после того как наткнулся на оператор "%" который присваивает остаток от деления на

например:

u =  23 секунды(k) + 76 секунд® = 99

sec = u%60 //получается переменная sec  преобретёт значение 39, потому что это будет остаток от деления 99 на 60


но этого мало. надо еще каким то образом перенести эту одну минуту, которая получается при делении, в значение минут. вот как это сделать?

условия выполнения задачи: задача требует разработки простого линейного алгоритма, при решении задач этого раздела не следует  использовать операторов циклических вычислений или ветвлений.
работаю в BorlandC++ Builder 5.0 (так же одно из условий выполнения задачи)

PM MAIL   Вверх
Фантом
Дата 4.11.2011, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 4
Всего: 49



Ну, например, так:
Код

sec=k+r;
min=n+d+sec/60;
sec=sec%60;
hour=m+p+min/60;
min=min%60;
hour=hour%24;


PM   Вверх
capitas
Дата 4.11.2011, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 4.11.2011

Репутация: нет
Всего: нет



блин так просто все оказалось) так и думал что есть какой то простой выход. Спасибо Фантом) все работает как надо)
можно закрыть

Это сообщение отредактировал(а) capitas - 4.11.2011, 03:31
PM MAIL   Вверх
math64
Дата 4.11.2011, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Еще проще так:
Код

totalsec = sec + min*60 + hour*3600;
totaldsec = dsec + dmin*60 + dhour*3600; 
totalsec += totaldsec;
sec = totalsec % 60;
min = totalsec/60%60;
hour = totalsec/3600%24;

PM   Вверх
Фантом
Дата 4.11.2011, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 4
Всего: 49



Цитата(math64 @  4.11.2011,  13:29 Найти цитируемый пост)
Еще проще так:

Не проще. Операций больше, totalsec и dtotalsec теоретически могут не влезть в int (в сутках 86400 секунд).  smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.