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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
zarenta
0 / 0 / 0
Регистрация: 02.02.2011
Сообщений: 4
02.02.2011, 10:22     5 м/с и 5 км/ч. Что больше? #1
5 м/с и 5 км/ч. что больше? Нужно составить программу С++.

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

C++ Проверить, что каждое из чисел х и у больше 100
Структуры: Вывести все танки с 1940-1950 г. чей калибр , больше 50 мм. или же просто больше 50 C++
C++ Верно ли, что наибольший член последовательности a1, …, an по модулю больше единицы?
Верно ли, что наибольший член в последовательности по модулю больше единицы? C++
Ребята а что FILE * больше 4Gb файлы не поддерживает? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
02.02.2011, 10:30     5 м/с и 5 км/ч. Что больше? #2
Извиняюсь за оффтоп, но помоему вопрос, заданный в теме, больше в математический форум подходит. Да и попытки сделать чтото как я понимаю не было:\
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
02.02.2011, 11:20     5 м/с и 5 км/ч. Что больше? #3
zarenta, приведи километры к метрам, а часы — к секундам. Это так сложно?
vet
 Аватар для vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
02.02.2011, 12:15     5 м/с и 5 км/ч. Что больше? #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    int v1,v2;
    cout << "Enter v1 km/h ";
    cin >> v1;
    cout << "\nEnter v2 m/s ";
    cin >> v2;
    if( ((v1*1000)/3600) > v2) cout << "\nv1 =  " << v1 << " km/h  >  v2 = " << v2 << " m/s\n";
    else cout << "\nv1 =  " << v1 << " km/h  <  v2 = " << v2 << " m/s\n";
    
    cin.get();
    cin.get();
}
zarenta
0 / 0 / 0
Регистрация: 02.02.2011
Сообщений: 4
02.02.2011, 14:04  [ТС]     5 м/с и 5 км/ч. Что больше? #5
5 м/с и 5 км/ч. что больше? Нужно составить программу на языке С++.
Попытки были но учитель по информатике сказал что ещё чего то не хватает
Было вот так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h>
main()
{
int a,b,max;
scanf (''%d%d'',&a, &b);
if (a>b){
max=a;
}
else{
max=b;
}
printf (''наибольшее число%d'', max);
getch();
}
пожалуйста помогите
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
02.02.2011, 18:59     5 м/с и 5 км/ч. Что больше? #6
Вводишь два значения скорости - каждое либо в виде m/s (метры в секунду), либо в виде k/h (километры в час). Программа показывает, какое значение из двух наибольшее:
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
#include <stdio.h>
#include <stdlib.h>
 
enum units
{
    mps,
    kmph,
    all
};
 
double units_r[all][all] =
{
    {1.0   , 3.6},
    {1./3.6, 1.0}
};
 
double convert(double value, enum units from, enum units to)
{
    if(from == all || to == all)
    {
    fputs("Illegal unit\n", stderr);
    exit(1);
    }
 
    return value * units_r[from][to];
}
 
struct quantity
{
    double value;
    enum units u;
};
 
struct quantity* getQ(struct quantity* q)
{
    char n, d;
    scanf("%lf %c/%c", &(q->value), &n, &d);
    if(n == 'm' && d == 's')
    q->u = mps;
    else if(n == 'k' && d == 'h')
    q->u = kmph;
    else
    return NULL;
    return q;
}
 
void putQ(struct quantity q)
{
    printf("%.2f %s", q.value, (q.u == mps  ? "m/s"  :
                q.u == kmph ? "k/h"  :
                "ERR"));
}
 
int compareQ(struct quantity q1, struct quantity q2)
{
    double val1 = q1.value;
    double val2 = convert(q2.value, q2.u, q1.u);
    if(val1 < val2)
    return -1;
    if(val2 < val1)
    return 1;
    return 0;
}
 
int main()
{
    struct quantity q1, q2;
    int result;
    
    printf("Input speed in the following format:\n"
       "NUM UNIT,\n"
       "where NUM is a number and UNIT has one of the two valid values:\n"
       "\tm/s (which stands for metres per second)\n"
       "\tk/h (which stands for kilometres per hour)\n"
       "e.g., the 3.5 m/s is a correct speed\n");
    
    puts("Input the first speed");
    if(getQ(&q1) == NULL)
    {
    fputs("Illegal unit\n", stderr);
    exit(1);
    }
    puts("Input the second speed");
    if(getQ(&q2) == NULL)
    {
    fputs("Illegal unit\n", stderr);
    exit(1);
    }
    fputs("Let's find out, which speed is the greatest: ", stdout);
    putQ(q1);
    fputs(" or ", stdout);
    putQ(q2);
    fputs("?\n", stdout);
    result = compareQ(q1, q2);
    if(result < 0)
    putQ(q2);
    else if(result > 0)
    putQ(q1);
    else
    fputs("They're equal", stdout);
    putchar('\n');
    
    exit(0);
}

Не по теме:

Цитата Сообщение от zarenta Посмотреть сообщение
5 м/с и 5 км/ч. что больше? Нужно составить программу на языке С++.
Незачем повторять задание по три раза. Одного вполне достаточно

zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
02.02.2011, 19:06     5 м/с и 5 км/ч. Что больше? #7
Nameless One, Абалдеть, вот это всем решениям решение !)))
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
02.02.2011, 19:11     5 м/с и 5 км/ч. Что больше? #8
zulkis, не сказал бы. Излишне усложнённое и не вполне корректное.
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
02.02.2011, 19:28     5 м/с и 5 км/ч. Что больше? #9
volovzi, Дело в замахе
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
02.02.2011, 19:30     5 м/с и 5 км/ч. Что больше? #10
zulkis, если ты хотел сказать "в размахе", то нет, не в этом.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
03.02.2011, 04:17     5 м/с и 5 км/ч. Что больше? #11
Цитата Сообщение от volovzi Посмотреть сообщение
не вполне корректное
А что некорректного в моем решении?
zarenta
0 / 0 / 0
Регистрация: 02.02.2011
Сообщений: 4
03.02.2011, 09:01  [ТС]     5 м/с и 5 км/ч. Что больше? #12
--------------------------------------------------------------------------------
5 м/с и 5 км/ч. что больше? Нужно составить программу на языке С++.
Попытки были но учитель по информатике сказал что ещё чего то не хватает
Было вот так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h>
main()
{
int a,b,max;
scanf (''%d%d'',&a, &b);
if (a>b){
max=a;
}
else{
max=b;
}
printf (''наибольшее число%d'', max);
getch();
}
люди не надо составлять такие сложные программы нужно к этой которую я написала что то дабавить

 Комментарий модератора 
Исплользуйте теги форматирования кода!
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
03.02.2011, 09:10     5 м/с и 5 км/ч. Что больше? #13
Цитата Сообщение от zarenta Посмотреть сообщение
люди не надо составлять такие сложные программы нужно к этой которую я написала что то дабавить
тебе в посте #4 написали простое решение.

И вообще, твоя программа хотя бы компилируется?
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
03.02.2011, 09:11     5 м/с и 5 км/ч. Что больше? #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <conio.h>
int main()
{
    int a,b,c,max;
    printf ("Ввtдите 2 числа");
    scanf ("%d%d",&a, &b);
    c=b*1000/3600;
    if (a>b)
        max=a;
    else
    {
        max=b;
        printf ("наибольшее число  в м/с %d", c);
    }
    printf ("наибольшее число%d", max);
    getch();
    return 0;
}
deeflash
1 / 1 / 0
Регистрация: 05.11.2010
Сообщений: 144
03.02.2011, 11:22     5 м/с и 5 км/ч. Что больше? #15
Nameless One, зачем всё делать настолько громоздко и сложно?)
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
03.02.2011, 11:27     5 м/с и 5 км/ч. Что больше? #16
Nameless One, завершение с ошибками. Неверно введённая размерность или несуществующий формат не должны приводить к экстренному завершению.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
03.02.2011, 11:40     5 м/с и 5 км/ч. Что больше? #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;
}
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
03.02.2011, 11:52     5 м/с и 5 км/ч. Что больше? #18
Nameless One, а это ничего не меняет. Всё равно вылетает с ошибкой там, где можно просто выдать предупреждение.
Ещё, например, если потребовать правильное написание km/h, то программа окажется в тупике.
Да и расширяемость как-то сомнительна. Придётся изменять почти половину программы, если захочется добавить какой-нибудь новый формат.
deeflash
1 / 1 / 0
Регистрация: 05.11.2010
Сообщений: 144
03.02.2011, 11:53     5 м/с и 5 км/ч. Что больше? #19
Nameless One, понятно, не дорос я ещё до этого, никогда бы не додумался такую задучу через структуры решать =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2011, 14:01     5 м/с и 5 км/ч. Что больше?
Еще ссылки по теме:

Определить, что положительных чисел больше, чем отрицательных C++
C++ Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы

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

Или воспользуйтесь поиском по форуму:
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
03.02.2011, 14:01     5 м/с и 5 км/ч. Что больше? #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;
}
Если нужны дополнительные измерения длины или времени, то добавляется одна строчка в соответствующий конвертор.

И, разумеется, можно конвертировать не только км/ч в м/с, но и любые комбинации доступных величин, например, м/ч в км/мин.
Yandex
Объявления
03.02.2011, 14:01     5 м/с и 5 км/ч. Что больше?
Ответ Создать тему
Опции темы

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