Форум программистов, компьютерный форум CyberForum.ru

часовой пояс - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
07.09.2011, 16:05     часовой пояс #1
Здравствуйте! Не знаю в чем ошибка... Тест не проходить... Найдите пожалуйста что я не делаю правильно. Условие такое:
Самолет взлетает в X (целое, 0<=X<=23) часов по местному времени в часовом поясе номер M (целое, 0<=M<=23). После полета в течение K (целое, 1<=K<=12) часов он приземляется в часовом поясе номер N (целое, 0<=N<=23). Определите местное время в пункте приземления. Считать, что часовые пояса нумеруются с запада на восток.
Формат входных данных:
В стандартном потоке ввода в первой строке через пробел записаны числа X, M, K, N.
Формат выходных данных:
В стандартный поток вывода требуется выдать местное время в пункте назначения в часах.

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
#include <iostream>
using namespace std;
int main()
{
    double x;//time of mestnosti
    double m;//4asovoi poyas po mestnosti
    double k;//time of flying
    double n;//4asovoi poyas mesta prileta
 
    cin >> x >> m >> k >> n;
 
    double yaya = (k + (n - m)) + x;
 
    if (yaya > 23)
    {
        cout << yaya - 24 << endl;
    }
    else
    {
        cout << yaya << endl;
    }
    
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2011, 16:05     часовой пояс
Посмотрите здесь:

C++ Развернуть матрицу на 90 градусов за часовой стрелкой.
C++ Развернуть матрицу на 90o по часовой стрелке.
C++ Матрицу из файла,повернуть на 90 градусов по часовой
Повернуть матрицу по часовой стрелке C++
Поворот матрицы на 180 градусов по часовой стрелке C++
C++ Матрицу повернуть на 90 градусов по часовой стрелке на C++
C++ Повернуть массив на 90˚ против часовой стрелки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
406 / 499 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
07.09.2011, 16:10     часовой пояс #2

Не по теме:

мощные названия переменных! вобще красота



почему все переменные double? все числа целые
там вполне хватит unsigned short int
в конце return 0;

Не по теме:

//time of mestnosti
полутранслит. плАчу

jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
07.09.2011, 16:13  [ТС]     часовой пояс #3
я и
C++
1
int
пробовал, все равно второй тест не пропускает... я просто думал что там будут вводить время в формате 22.45. просто об этом в условий ничего не говорится
co6ak
Кошковед
 Аватар для co6ak
406 / 499 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
07.09.2011, 16:14     часовой пояс #4
под время обычно структуру или класс пишут.

и все же return 0; будет очень кстати

в условии говориться "ЦЕЛОЕ"
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
07.09.2011, 16:18  [ТС]     часовой пояс #5
все равно 2-й тест не проходит)) 1-й тест прошел, значит ошибка в вычислений, а не в оформление кода

Добавлено через 1 минуту
Цитата Сообщение от co6ak Посмотреть сообщение
Не по теме:
//time of mestnosti
полутранслит. плАч
это просто заметки для себя)))
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.09.2011, 16:36     часовой пояс #6
А попробуйте ввести 23 0 12 23 и посмотрите ответ.

Добавлено через 1 минуту
Не обязательно такие переменные будут в тесте. Но суть ошибки, думаю, станет ясна
co6ak
Кошковед
 Аватар для co6ak
406 / 499 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
07.09.2011, 16:42     часовой пояс #7
хех.
не вычитание, а остаток от деления
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.09.2011, 16:47     часовой пояс #8
А что быстрее будет? Два if-a с вычитанием, цикл, или деление? На такой программе вряд ли будет заметно, а если в большом проекте?
Просто интересно
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
07.09.2011, 18:10  [ТС]     часовой пояс #9
ну а теперь?
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
#include <iostream>
using namespace std;
int main()
{
    unsigned short int x;//time of mestnosti
    unsigned short int m;//4asovoi poyas po mestnosti
    unsigned short int k;//time of flying
    unsigned short int n;//4asovoi poyas mesta prileta
 
    cin >> x >> m >> k >> n;
 
    unsigned short int yaya = (k + (n - m)) + x;
 
    if (yaya > 23)
    {
        while (yaya > 23)
        {
            yaya = yaya - 24;
        }
        cout << yaya << endl;
    }
    else
    {
        cout << yaya << endl;
    }
    
    
}
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.09.2011, 18:25     часовой пояс #10
Лучше так
C++
1
2
while(yaya > 23)
    yaya -= 24;
Имеется ввиду вместо всего if-else
А после цикла просто вывести

Добавлено через 10 минут
И в данном случае я бы не советовал использовать unsigned. Вообще никакой. Смотрите, при введении 0 23 1 0 будет переполнение, поскольку в 12 строчке беззнаковому числу yaya присвоится значение -22, что, разумеется, вызовет переполнение. Конечно, благодаря циклу все _может_ исправиться, но это маловероятно. Используйте просто short
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
07.09.2011, 20:07  [ТС]     часовой пояс #11
Цитата Сообщение от soon Посмотреть сообщение
Лучше так
Код C++
1
2
while(yaya > 23)
yaya -= 24;
а чем это лучше?? вроде разницы ни какой.
всем спасибо, я нашел свою ошибку, тема закрыта))
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.09.2011, 20:09     часовой пояс #12
Кода меньше набирать.
jambas92
 Аватар для jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
07.09.2011, 20:12  [ТС]     часовой пояс #13
Цитата Сообщение от soon Посмотреть сообщение
А что быстрее будет? Два if-a с вычитанием, цикл, или деление? На такой программе вряд ли будет заметно, а если в большом проекте?
Просто интересно
я думаю что два if-a, потому что в таком случае выполняется только одно условие, а если код большой то циклу придеться пройти от А до Я и это займет намного больше времени...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2011, 20:19     часовой пояс
Еще ссылки по теме:

C++ Обход треугольника по часовой стрелке
C++ Заполнение матрицы против часовой стрелки
Поворот фигуры по часовой стрелке C++
Повернуть массив на 90° по часовой стрелке C++
C++ Вращать треугольник по часовой стрелке

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

Или воспользуйтесь поиском по форуму:
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.09.2011, 20:19     часовой пояс #14
+ у вас 2 операции сравнения(одна в if и другая в while), а у меня только одна.

Добавлено через 5 минут
я думаю что два if-a, потому что в таком случае выполняется только одно условие, а если код большой то циклу придеться пройти от А до Я и это займет намного больше времени...
Если код действительно большой, то 2 if-a не заменят цикл. В данном конкретном вопросе я подразумевал: что будет быстрее выполняться - деление или вычитание? Когда я учил язык, в самоучителе было указано, что сложение и вычитание происходит быстрее деления и умножения. Вопрос лишь в том, насколько быстрее.
Yandex
Объявления
07.09.2011, 20:19     часовой пояс
Ответ Создать тему
Опции темы

Текущее время: 17:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru