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

нахождение времени, потраченного на прохождение путником половины пути - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выделение памяти http://www.cyberforum.ru/cpp-beginners/thread256986.html
Вот кусок кода, класс и функция добавления в список Класс занимает 64 бита, я добавляю 10 элементов в список - 640 бит Потом отнимаю posl-perv то есть указатели на начало и конец и ожидаю что...
C++ Описать процедуру в С Описать процедуру AddRightDigit(D, K), добавляющую к целому положительному числу K справа цифру D (D — входной параметр целого типа, лежащий в диапазоне 0-9, K — параметр целого типа, являющийся... http://www.cyberforum.ru/cpp-beginners/thread256980.html
Visual Studio 2010 кто что думает C++
Давайте обговорим 10ю студию. Мое мнение - она недоработаная, например, стоит что-то поменять в хэдере и она вылетает, интелисенс материться когда прога работает, при чем, какой-то он тупой... Кто...
C++ Л/р "Использование строк"
Написать программу, которая считывает английский текст из файла и выводит его на экран, заменив каждую первую букву слов, начинающихся с гласной бук¬вы, на прописную. код #include "stdafx.h"...
C++ Время скидок http://www.cyberforum.ru/cpp-beginners/thread256968.html
Помогите пожалуйста решить на си: Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 10% предоставляется, если сумма покупки больше 1000 руб. Ниже приведен рекомендуемый вид...
C++ При построчном чтении файла eof наступает раньше срока Здравствуйте, товарищи! Столкнулся с такой проблемой: при построчном потоковом чтении файла (при помощи getline) бит eof устанавливается раньше, чем положено (считывается меньше половины... подробнее

Показать сообщение отдельно
Uraniya
0 / 0 / 0
Регистрация: 16.12.2010
Сообщений: 11

нахождение времени, потраченного на прохождение путником половины пути - C++

14.03.2011, 11:26. Просмотров 1042. Ответов 4
Метки (Все метки)

помгите найти ошибку, по чему программа не правильно считает
условие
Путник двигался t1 часов со скоростью v1 км/ч, затем t2 часов — со скоростью v2 км/ч и t3 часов — со скоростью v3 км/ч. За какое время он одолел первую половину пути? Если путник не двигался, то рассматривать эту ситуацию как неверный ввод данных.


код
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include "testing.h"
int _tmain(int argc, _TCHAR* argv[])
{
    TESTING
        setlocale(LC_CTYPE,"Russian"); 
    float   v1, v2, v3, v0, s0, s1, s2, s3;                                         // объявление  переменных скорости
    int  t1, t2, t3, t0, chas1, min1, chas2, min2, chas3, min3, chas0, min0;        // объявление  переменных времени
    
    // Ввод значений времени
    input_printf("Введите время прохождения первого учвстка в формате часы:минуты\n");
    scanf("%d:%d", &chas1, &min1);
    //ошибка ввода
    if (chas1<=0 || chas1>4 || min1>=60)                                                
    {
        error_printf("Значение за пределом промежутка\n");
        WAIT_ANY_KEY
        return 0;
    }
    //перевод времени из формата чч_мм в часы
    
    t1 = chas1*60 + min1;   
 
 
// Ввод значений скорости
    input_printf("Введите скорость на первом участке\n");
    scanf ("%f", &v1);
    //ошибка ввода
    if (v1<=0 || v1>7)                                                      
    {
        error_printf("Значение за пределом промежутка\n");
        WAIT_ANY_KEY
        return 0;
    }
    v1 = v1/60;
 
    input_printf("Введите время прохождения второго учвстка в формате часы:минуты\n");
    scanf("%d:%d", &chas2, &min2);
    if (chas2<=0 || chas2>4 || min2>=60)                                                
    {
        error_printf("Значение за пределом промежутка\n");
        return 0;
        WAIT_ANY_KEY
    }
    t2 = chas2*60 + min2;
 
 
    input_printf("Введите скорость на втором участке\n");
    scanf ("%f", &v2);
    if (v2<=0 || v2>7)                                                      
    {
        error_printf("Значение за пределом промежутка\n");
        WAIT_ANY_KEY
        return 0;
    }
    v2 = v2/60;
 
 
    input_printf("Введите время прохождения третьего учвстка в формате часы:минуты\n");
    scanf("%d:%d", &chas3, &min3);
    if (chas3<=0 || chas3>4 || min3>=60)                                                
    {
        error_printf("Значение за пределом промежутка\n");
        WAIT_ANY_KEY
        return 0;
    }
    t3 = chas3*60 + min3;
 
    
    input_printf("Введите скорость на третьем участке\n");
    scanf ("%f", &v3);
    if (v3<=0 || v3>7)                                                      
    {
        error_printf("Значение за пределом промежутка\n");
        WAIT_ANY_KEY
        return 0;
    }
    v3=v3/60;
 
    //вычисление половины пройденного пути
    s1 = v1 * t1;
    s2 = v2 * t2;
    s3 = v3 * t3;
    s0 = (s1 + s2 + s3)/2;                                                      
    
    //расчет времени для каждого случая 
    if (s0>0 && s0<=s1)                                                 
        t0 = s0/v1;
    if (s0>s1 && s0<=s1+s2)
        t0 = s1/v1 + (s0-s1)/v2;
    if (s0>=s1+s2 && s0<s1+s2+s3)
        t0 = s1/v1 + s2/v2 + (s0-s1-s2)/v3;     
    
    //приведение времени к формату чч,мм
    chas0 = t0/60;
    min0 = t0 - chas0*60;
                                                            
    input_printf("результат %i:%i", chas0, min0);
    
    //ожидание нажатия клавиши enter
    WAIT_ANY_KEY
    return 0;
}
тест 1:30 2.0 3:0 3.7 2:0 1.0
ответ 2.35
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru