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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
zarenta
0 / 0 / 0
Регистрация: 02.02.2011
Сообщений: 4
#1

5 м/с и 5 км/ч. Что больше? - C++

02.02.2011, 10:22. Просмотров 2008. Ответов 22
Метки нет (Все метки)

5 м/с и 5 км/ч. что больше? Нужно составить программу С++.

 Комментарий модератора 
Именуйте темы осмысленно. Название темы должно максимально полно отражать ее содержание.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2011, 10:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 5 м/с и 5 км/ч. Что больше? (C++):

Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы - C++
ребят не могу подобрать алгоритм ,такой что когда елемент одного массива больше елемента другого массива,то тот елемент что больше...

Найти такое наименьшее N, что 1 + 1/2 + 1/3 + 1/4 + 1/N больше b - C++
1. Вводится действительное число b. Найти такое наименьшее N, что 1 + 1/2 + 1/3 + 1/4 + 1/N больше b.

Проверить, что каждое из чисел х и у больше 100 - C++
Записать лог-е выражение, к-е имеет значение "истина", только при выполнении след. усл-я: каждое из чисел х и у больше 100 Мой...

Определить, что положительных чисел больше, чем отрицательных - C++
Найти количество положительных чисел среди четырёх целых чисел. Если количество положительных чисел больше количества отрицательных,то...

Ребята а что FILE * больше 4Gb файлы не поддерживает? - C++
Ребята а что FILE * больше 4Gb файлы не поддерживает?

Найти такое наименьшее n, что сумма 1/i больше заданного А (Dev-C++) - C++
Здравствуйте уважаемые господа, взываю к вашей помощи, вот условие задачи: Дано действительное число а. Найти такое наименьшее n, что...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
03.02.2011, 11:27 #16
Nameless One, завершение с ошибками. Неверно введённая размерность или несуществующий формат не должны приводить к экстренному завершению.
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
03.02.2011, 11:40 #17
deeflash, один вариант к моменту моего ответа был уже предложен. Не хотелось его дублировать. А вся "сложность" моего варианта состоит в организации удобного интерфейса с пользователем и в возможности гипотетической "расширяемости" (т.е. более удобного добавления новых размерностей в программу и т.д.). Согласен, в данном случае это вряд ли нужно, но мне так больше нравится.

Цитата Сообщение от volovzi Посмотреть сообщение
Nameless One, завершение с ошибками. Неверно введённая размерность или несуществующий формат не должны приводить к экстренному завершению.
Это легко исправить:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct quantity* getQ(struct quantity* q)
{
    char n, d;
    if(scanf("%lf %c/%c", &(q->value), &n, &d) != 3)
    {
    fflush(stdin);
    return NULL;
    }
        
    if(n == 'm' && d == 's')
    q->u = mps;
    else if(n == 'k' && d == 'h')
    q->u = kmph;
    else
    return NULL;
    return q;
}
1
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
03.02.2011, 11:52 #18
Nameless One, а это ничего не меняет. Всё равно вылетает с ошибкой там, где можно просто выдать предупреждение.
Ещё, например, если потребовать правильное написание km/h, то программа окажется в тупике.
Да и расширяемость как-то сомнительна. Придётся изменять почти половину программы, если захочется добавить какой-нибудь новый формат.
0
deeflash
1 / 1 / 0
Регистрация: 05.11.2010
Сообщений: 144
03.02.2011, 11:53 #19
Nameless One, понятно, не дорос я ещё до этого, никогда бы не додумался такую задучу через структуры решать =)
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
03.02.2011, 14:01 #20
Если опустить все подробности, то расширяемая программа может выглядеть, например, так:
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
106
107
108
109
110
111
#include <iostream>
#include <limits>
#include <map>
 
typedef std::map<std::string, double> quantities_table_type;
typedef quantities_table_type::value_type quantity;
 
// ---- Универсальный конвертор -------------------------------------------------------------------
 
class converter {
public:
    // Добавление единицы измерения и её отношения к базовой величине в таблицу.
    void insert (const std::string & units, double value) { m_quantities_table.insert(quantity(units, value)); }
    
    // Если обе единицы измерения "old_units" и "new_units" есть в таблице, то возвращается их
    // отношение. В противном случае возвращается "NaN".
    double convert (const std::string & old_units, const std::string & new_units) const {
        quantities_table_type::const_iterator      source = m_quantities_table.find(old_units);
        quantities_table_type::const_iterator destination = m_quantities_table.find(new_units);
        
        if (source != m_quantities_table.end() && destination != m_quantities_table.end())
            return source->second / destination->second;
            
        return std::numeric_limits<double>::quiet_NaN();
    }
 
private:
    quantities_table_type m_quantities_table;
};
 
// ---- Конвертор расстояний ----------------------------------------------------------------------
 
class distance_converter {
public:
    static double convert (const std::string & old_units, const std::string & new_units) {
        return instance().m_converter.convert(old_units, new_units);
    }
 
private:
    distance_converter () {
        // Базовая единица измерения — метр.
        m_converter.insert("м", 1);
        m_converter.insert("км", 1000);
    }
    
    static distance_converter & instance () {
        static distance_converter converter;
        return converter;
    }
 
private:
    converter m_converter;
};
 
double convert_distance (const std::string & old_units, const std::string & new_units) {
    return distance_converter::convert(old_units, new_units);
}
 
// ---- Конвертор времён --------------------------------------------------------------------------
 
class time_converter {
public:
    static double convert (const std::string & old_units, const std::string & new_units) {
        return instance().m_converter.convert(old_units, new_units);
    }
 
private:
    time_converter () {
        // Базовая единица измерения — секунда.
        m_converter.insert("с", 1);
        m_converter.insert("мин", 60);
        m_converter.insert("ч", 3600);
    }
    
    static time_converter & instance () {
        static time_converter converter;
        return converter;
    }
 
private:
    converter m_converter;
};
 
double convert_time (const std::string & old_units, const std::string & new_units) {
    return time_converter::convert(old_units, new_units);
}
 
// ---- Конвертор скорости ------------------------------------------------------------------------
 
double convert_speed (const std::string & s1, const std::string & s2) {
    size_t pos1 = s1.find('/');
    size_t pos2 = s2.find('/');
    
    return convert_distance(s1.substr(0, pos1), s2.substr(0, pos2)) / convert_time(s1.substr(pos1 + 1), s2.substr(pos2 + 1));
}
 
// ------------------------------------------------------------------------------------------------
 
int main (int argc, char * const argv[]) {
    // Где-то взяли конвертируемые размерности.
    std::string first_dimension("км/ч");
    std::string second_dimension("м/с");
    
    // Где-то раздобыли конвертуремую величину.
    double value = 60;
    
    double result = value * convert_speed(first_dimension, second_dimension);
    std::cout << result << ' ' << second_dimension << std::endl;
 
    return 0;
}
Если нужны дополнительные измерения длины или времени, то добавляется одна строчка в соответствующий конвертор.

И, разумеется, можно конвертировать не только км/ч в м/с, но и любые комбинации доступных величин, например, м/ч в км/мин.
0
zarenta
0 / 0 / 0
Регистрация: 02.02.2011
Сообщений: 4
05.02.2011, 15:21  [ТС] #21
спасибо но это не то что мне нужно
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
05.02.2011, 15:57 #22
zarenta, во-первых, я это писал не тебе, а во-вторых, то, что тебе нужно, уже несколько раз написали в этой теме.
1
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
17.12.2011, 11:42 #23
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main()
{
    setlocale(0,"");//русский язык в консоли
    cout << "Введите скорость в км/ч:" << endl;
    double a = 0;
    cin >> a;
    cout << "Введите скорость в м/с:" << endl;
    double b = 0;
    cin >> b;
    b *= 3.6;
    if( a > b )
        cout << "Скорость в км/ч больше.";
    if( a < b )
        cout << "Скорость в м/с больше.";
    else
        cout << "Скорости равны.";
 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2011, 11:42
Привет! Вот еще темы с ответами:

Верно ли то,что в последовательности больше отрицательных членов, чем положительных - C++
Дано натуральные числа N,a1,a2,...an. Верно ли то,что в последовательности больше отрицательных членов, чем положительных

Верно ли, что наибольший член в последовательности по модулю больше единицы? - C++
Даны натуральное n, действительные числа a1, …, an. Верно ли, что наибольший член в последовательности a1, …, an по модулю больше единицы?

Верно ли, что наибольший член последовательности a1, …, an по модулю больше единицы? - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { int i; double max; const int n = 10; double x, k; ...

Верно ли, что сумма элементов массива, которые больше 20, превышает 100 - C++
Дан массив целых чисел. Выяснить: а)верно ли, что сумма элементов, которые больше 20, превышает 100. ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.12.2011, 11:42
Ответ Создать тему
Опции темы

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