2015-11-17 2 views
0

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

У меня возникла проблема, когда я ввожу эти цифры: «23 59 59 10801». то, что я ожидаю получить, - «время прибытия -> 3 0 0» , но на самом деле я ничего не получаю.

(каждый другой положительный номер работает просто отлично ...) спасибо за помощь, извините, если мой код - полный беспорядок. :)

int h = 0, m = 0, s = 0, time = 0, ih = 0, im = 0, is = 0; 

printf("please enter 4 digits\n"); 
scanf("%d %d %d %d", &h, &m, &s, &time); 

if ((((h<=23)&&(h>0)) && ((m<=59) && (m>0)) && ((s<=59) && (s>0))) && (time > 0)) 
{ 
    // hour loop 

    while (time >= 3600) { 
     ++ih; 
     time = (time - 3600); 

     // minute loop 
     while ((time < 3600) && (time != 0)) { 
      ++im; 
      time = (time - 60); 

      // second loop 
      while ((time <= 60) && (time != 0)) { 
       ++is; 
       time = (time - 1); 
      } 
     } 
    } 

    h = (h + ih); 
    m = (m + im); 
    s = (s + is); 

    if (h >= 24) { 
     h = ((h * 0) + ih-1); 
    } 

    if (m = 60) { 
     m = (m * 0); 
     ++h; 
    } 

    if (s = 60) { 
     s = (s * 0); 
     ++m; 
    } 

    printf("\nwe are happy to annonce that:\n\nyour arival time will be at : %d %d %d\n\n\nhave a nice day!\n\n\n\n", h, m, s); 

} 
else printf("\nwrong value my friend!\n\n"); 

return 0; 

}

+2

Столько скобок! Изучите таблицу приоритетов операторов! – Bathsheba

+0

Не могли бы вы объяснить более подробно? Что означает '23 59 59 10801'? Отформатирована ли '10801' некоторая дата? – szczurcio

+0

@szczurcio Да, 10801 (секунды) - 3 часа, 1 сек. 23:59:59 + 3 hors и 1 sec должны получить меня 3:00:00. – MoZZ

ответ

3

if (m = 60) множества m к 60 и верно. Вы хотите написать if (m == 60).

То же самое для if (s = 60)

Смежные вопросы