Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
zarenta
0 / 0 / 0
Регистрация: 02.02.2011
Сообщений: 4
#1

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

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

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

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

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

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

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

Проверить, что int не больше maxint и не меньше minint
Собственно вопрос, как проверить?

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

22
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
02.02.2011, 10:30 #2
Извиняюсь за оффтоп, но помоему вопрос, заданный в теме, больше в математический форум подходит. Да и попытки сделать чтото как я понимаю не было:\
0
volovzi
268 / 170 / 11
Регистрация: 14.03.2010
Сообщений: 501
02.02.2011, 11:20 #3
zarenta, приведи километры к метрам, а часы — к секундам. Это так сложно?
0
vet
175 / 176 / 55
Регистрация: 08.04.2009
Сообщений: 1,309
02.02.2011, 12:15 #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();
}
0
zarenta
0 / 0 / 0
Регистрация: 02.02.2011
Сообщений: 4
02.02.2011, 14:04  [ТС] #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();
}
пожалуйста помогите
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
02.02.2011, 18:59 #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 км/ч. что больше? Нужно составить программу на языке С++.
Незачем повторять задание по три раза. Одного вполне достаточно

1
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
02.02.2011, 19:06 #7
Nameless One, Абалдеть, вот это всем решениям решение !)))
0
volovzi
268 / 170 / 11
Регистрация: 14.03.2010
Сообщений: 501
02.02.2011, 19:11 #8
zulkis, не сказал бы. Излишне усложнённое и не вполне корректное.
0
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
02.02.2011, 19:28 #9
volovzi, Дело в замахе
0
volovzi
268 / 170 / 11
Регистрация: 14.03.2010
Сообщений: 501
02.02.2011, 19:30 #10
zulkis, если ты хотел сказать "в размахе", то нет, не в этом.
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
03.02.2011, 04:17 #11
Цитата Сообщение от volovzi Посмотреть сообщение
не вполне корректное
А что некорректного в моем решении?
0
zarenta
0 / 0 / 0
Регистрация: 02.02.2011
Сообщений: 4
03.02.2011, 09:01  [ТС] #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();
}
люди не надо составлять такие сложные программы нужно к этой которую я написала что то дабавить

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

И вообще, твоя программа хотя бы компилируется?
0
NNN777
299 / 157 / 62
Регистрация: 27.02.2010
Сообщений: 317
03.02.2011, 09:11 #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;
}
1
deeflash
1 / 1 / 0
Регистрация: 05.11.2010
Сообщений: 144
03.02.2011, 11:22 #15
Nameless One, зачем всё делать настолько громоздко и сложно?)
0
volovzi
268 / 170 / 11
Регистрация: 14.03.2010
Сообщений: 501
03.02.2011, 11:27 #16
Nameless One, завершение с ошибками. Неверно введённая размерность или несуществующий формат не должны приводить к экстренному завершению.
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
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
268 / 170 / 11
Регистрация: 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
268 / 170 / 11
Регистрация: 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
03.02.2011, 14:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2011, 14:01

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

Верно ли, что наибольший член последовательности a1, …, an по модулю больше единицы?
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { int...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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