2015-07-07 3 views
-1

В настоящее время я самообучаюсь C, используя этот книжный вызов «C Programming Modern Approch 2nd Edition» Пожалуйста, помогите с этим вопросом, в основном это вопрос о «If-Else, Switch», Глава. Глава 5 - Если все, переключатели, проекты программирования Qn 8Советы по программированию на языке C Подходы к программированию Современный подход 2-е издание

В следующей таблице представлены ежедневные рейсы из одного города в другой.

Departure time   Arrival time 
8:00 a.m.    10:!6 a.m. 
9.43 a.m.    11:52 a.m. 
11:19 a.m.    1:31 p.m. 
12:47 p.m.    3:00 p.m. 
2:00 p.m.     4:08 p.m. 
3:45 p.m.     5:55 p.m. 
7:00 p.m.     9:20 p.m. 
9:45 p.m.    11:58 p.m. 

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

Подсказка: Преобразование ввода в то время, выраженное в минутах после полуночи, и сравните его со временем вылета, также выраженным в минутах от полуночи, например, 13:15 - 13 x 60 + 15 = 795 минут с полуночи, что ближе к 14:47. (767 минут с полуночи), чем в любое другое время вылета. *

Я просто не могу получить идеальный код для этого вопроса. Я понятия не имею, как я могу «сравнить», время которого является «ближе», только от использования «If-Else» или «Switch». Также у меня нет других ответов от функции или массива. Пожалуйста, дайте свое руководство, поскольку я пытался решить это в течение длительного времени.

Просьба предоставить код, чтобы я мог посмотреть, как вы это делаете. Спасибо.

Просто детализировано: В принципе, как я могу сравнить, что является более близким временем отправления.

+3

Как ваш мозг работает, чтобы решить эту проблему без компьютера? Он сравнивает введенное время с различными доступными временами, используя цепочку if и else. Делать то же самое. – ouah

+4

Тот же вопрос; http://stackoverflow.com/questions/5521254/if-statement-and-expressions-question-advice –

+0

@ user2000698 Вы уже читали в книге о массивах и структурах? –

ответ

0

В течение времени, предшествующего первому времени отправления или после последнего времени отправления, оно должно быть легким даже для новичка, такого как вы. Для другого вам нужно рассчитать середину между временем вылета и сравнить введенное время с этим, чтобы найти ближайшее время отправления.

Например, позволяет взять два вылет раза 11:19 a.m. и 12:47 p.m. полпути между теми временами 12:03 p.m. Если введенное время до (меньше) 12:03, то ближе время вылета в 11:19 часов утра, и если введенное время после (больше, чем) 12:03 вечера, а время отправления 12:47 вечера ближе.

Мое предложение состоит в том, что вы создаете структуру, содержащую время отправления и прибытия, и составляете массив из них для указанного времени отправления и прибытия. Затем создайте другой массив, содержащий информацию о среднем времени. Что-то вроде

struct times 
{ 
    char *departure; 
    char *arrival; 
} times[] = { 
    { "8:00", "10:16" }, 
    { "9:43", "11:52" }, 
    . 
    . 
    . 
}; 

char *inbetween_times[] = { 
    "8:51", // Time between the first and second departure 
    "10:31", // Time between the second and third departure 
    . 
    . 
    . 
}; 

С выше системы, и приведенные выше данные, раз до 8:51 ближе к первому вылета, время между 8:51 и 10:31 ближе ко второму, конец так далее.

Я не знаю, это лучший способ, и это, безусловно, не единственный способ, это просто способ, который впервые появился в моей голове.

+1

Тот же вопрос; http://stackoverflow.com/questions/5521254/if-statement-and-expressions-question-advice –

+0

О, вау даже не подозревал, что вы сразу же можете инициализировать структуру. Изучая что-то новое каждый день! – moffeltje

0

Общее программирование shindig - сравнение разницы между двумя числами.

#include <math.h> 
if(abs(value1 - value2) < somethingYouCompareItTo) 

Это (математическая) абсолютная разница между двумя числами. т.е. он удаляет отрицательные значения. Поместите пару из них в цикл for, чтобы сравнить его со всеми значениями в структуре данных, и у вас есть функция findClosestTime().

Все начинаются с самого начала, удачи.

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