Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132

Добавить к каждому введённому числу типа double единицу измерения

13.01.2017, 19:10. Показов 6834. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Уже долго бьюсь над эти заданием и никак не могу понять как его делать. вот условие из книги:

Добавьте к каждому введенному числу типа double единицу измерения; иначе говоря, введите значения, такие как10cm,2.5in,5ft или3.33m. Допустимыми являются четыре единицы измерения: cm, m, in, ft. Коэффициенты преобразования равны: 1m == 100cm, 1in == 2.54cm, 1ft == 12in. Индикаторы единиц измерения введите в строку.
Вот имеющийся код:
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
  #include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    vector<double> numbs;
    string m, cm, in, ft;
    cout << "Вводите числа через пробел (для прекращения ввода введите символ не являющийся числом): ";
    for (double numb; cin >> numb;)
    {
        numbs.push_back(numb);
    }
    double max = numbs[0];
    double min = numbs[0];
    cout << "Исходный массив: " << endl;
    for (int i = 0; i < numbs.size(); i++)
    {
        cout << i << ".\t" << numbs[i] << endl;
        
        if (max < numbs[i])
        {
            max = numbs[i];
        }
        if (min > numbs[i])
        {
            min = numbs[i];
        }
        
    }
    cout << "Максимальное значение: " << max << ';' << endl;
    cout << "Минимальное значение: " << min << ';' << endl;
    if (min == max)
        cout << "Значения равны;" << endl;
 
    system("pause");
    return 0;
}
Буду очень благодарен
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.01.2017, 19:10
Ответы с готовыми решениями:

Добавьте к каждому введенному числу типа doube единицу измерения
Добавьте к каждому введенному числу типа douЫe единицу измерения Допустимыми являются четыре единицы измерения: cm, m, in, ft. Примите...

Добавить к введенному числу единицу измерения
Задание: Добавьте к каждому введенному числу типа double единицу измерения; иначе говоря, введите значения, такие как10cm,2.5in,5ft...

Добавить к каждому числу единицу и вывести конечное
Добрый день, сразу объясню в чём задача имеются числа, к примеру: 1 2 3 4 5 6 7 8 9 10 Нужно написать программу которая добавляла бы...

18
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
09.02.2017, 19:58
Еще интересует решение задачи?
0
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
09.02.2017, 20:04  [ТС]
Shatl21, примерно знаю как делать, но было бы очень интересно посмотреть ваше решение
0
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
09.02.2017, 21:34
Уже накидал решение в голове, но напишу завтра, а пока решение предыдущего пункта покажу, может тоже будет интересно.
"Теперь измените тело цикл так чтобы он считывал только по одному числу типа doule в каждой итерации. Определите две переменные, чтобы отслеживать наименьшее и наибольшее среди всех ранее введенных значений. В каждой итерации цикл выводите только что введенное число. Если оно окажется наименьшим среди всех введенных, выводите на экран строку "Наименьшее среди введенных" . Если же оно окажется наибольшим среди введенных, выводите на экран строку " Наибольшее сред введенных".
Само решение:
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
int main(int argc, char* argv[])
{
    ConsoleCP cp(1251);
 
    double number = 0, x = 0, y = 0;
    cout << "Введите любое число:\n";
    while (cin >> number)
    {
        if (x == 0 && y == 0) //это условие выполняется единожды при вводе первого числа
        {
            cout << number << " - первое введенное число\n";
            x = number;
            y = number;
        }
        else if (number > x)
        {
            cout << number << " - наибольшее из введенных\n";
            x = number;
        }
        else if (number < y)
        {
            cout << number << " - наименьшее из введенных\n";
            y = number;
        }
        else
            cout << "Данное число " << number << " находится между наибольшим и наименьшим ранее веденными числами\n";
 
        
    }
 
    keep_window_open();
    return 0;
}
Добавлено через 3 минуты
В своем решении Вы использовали вектор, но по условию, его использование пока еще не оговаривается. Решение должно быть выполнено без векторов.
1
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
09.02.2017, 22:15  [ТС]
Shatl21, благодарю за вариант, проанализирую и усвою
0
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
09.02.2017, 22:31
Держи решение 7 пункта задания, только я тоже еще начинающий и может где то и не прав)))
"Добавьте к каждому введенному числу типа doule единиц измере*ния; иначе говоря, вводите такие значения, как 10cm, 2.5in, 5ft или 3.ЗЗm. Допустимыми являются четыре единицы измерения: cm m, in, ft. Примите следующие коэффициенты преобразования: 1m = 100cm, 1in = 2 .54cm 1ft == 12in. Индикатор единицы измерения вводите в строку. Можно считать ввод 12 m (с пробелом между числом и единицей измерения) эквивалентным ввод 12m (без пробела).
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
#include "../../std_lib_facilities.h"
 
int main(int argc, char* argv[])
{
    ConsoleCP cp(1251);
 
    string value = " ";
    double number = 0, x = 0, y = 0;
    cout << "Введите длинну и один из индикаторов длины m, cm, in или ft:\n";
    while (cin >> number >> value)
    {
        if (value == "m") //здесь используется пустое условие о котором автор упоминал в главе, как о необходимом иногда случае, думаю он и задумывал решение таким 
        {
        }
        else if (value == "cm")
            number = number * 0.01;
        else if (value == "in")
            number = number * 0.0254;
        else if (value == "ft")
            number = number * 0.3048;
        
        
        if (x == 0 && y == 0)
        {
            cout << number << "m" << " - первая введенная длина\n";
            x = number;
            y = number;
        }
        else if (number > x)
        {
            cout << number << "m" << " - наибольшее из введенных длин\n";
            x = number;
        }
        else if (number < y)
        {
            cout << number << "m" << " - наименьшее из введенных длин\n";
            y = number;
        }
        else
            cout << "Данная длина " << number << "m" << " находится между наибольшей и наименьшей ранее веденными длинами\n";
 
 
    }
 
    keep_window_open();
    return 0;
}
Добавлено через 8 минут
Если интересны мои решения, могу выложить все решения интересующих пунктов этого задания из книги.
1
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
09.02.2017, 22:50  [ТС]
Shatl21, Очень интересно, а на какой вы сейчас главе?
0
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
09.02.2017, 22:53
4 главу закончил, решаю теперь задачи, через пару дней 5 главу начну, я все досконально разбираю медленно продвигаюсь. Плюс еще работы много, только вечерами сижу за ноутом, решаю.
1
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
09.02.2017, 22:56  [ТС]
Shatl21, 16 лет, тоже не особо много времени есть, я главы минимум по 2 раза читаю)
0
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
09.02.2017, 22:59
mskoromets, в 30 еще меньше будет, я вот поздно начал учится, а у тебя еще все впереди. Удачи тебе! Главное не бросай начатого!
1
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
09.02.2017, 23:10  [ТС]
Shatl21, спасибо за совет на мой взгляд было бы неплохо временами связываться в какой либо соц сети с целью обмена опытом, тк часто в заданиях поставлены сложные задачи и обмен мнениями был бы очень полезным. Среди сверстников нет ни одного человека, кому это было бы интересно
0
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
10.02.2017, 20:20
Цитата Сообщение от mskoromets Посмотреть сообщение
Shatl21, спасибо за совет на мой взгляд было бы неплохо временами связываться в какой либо соц сети с целью обмена опытом, тк часто в заданиях поставлены сложные задачи и обмен мнениями был бы очень полезным. Среди сверстников нет ни одного человека, кому это было бы интересно
Задавай вопросы здесь, на форуме, я думаю здесь много толковых людей, которые обязательно помогут.

Добавлено через 9 часов 32 минуты
Вид программы после выполнения 1-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
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
#include "../../std_lib_facilities.h"
 
int main(int argc, char* argv[])
{
    ConsoleCP cp(1251);
 
    int i = 0;
    string value = " ";
    double number = 0, sum = 0, x = 0, y = 0;
    cout << "Введите длину и один из индикаторов длины m, cm, in или ft:\n";
    while (cin >> number >> value)
    {
        if (value != "m" && value != "cm" && value != "in" && value != "ft")
        {
            cout << "Вы ввели не правильную меру длины, повторите ввод заново!!! Введите m, cm, in или ft!!!\n";
            cin >> number >> value;
        }
 
        if (value == "m")
        {
        }
        else if (value == "cm")
            number = number * 0.01;
        else if (value == "in")
            number = number * 0.0254;
        else if (value == "ft")
            number = number * 0.3048;
 
 
        if (x == 0 && y == 0)
        {
            cout << number << "m" << " - первая введенная длина\n";
            x = number;
            y = number;
        }
        else if (number > x)
        {
            cout << number << "m" << " - наибольшая из введенных длин\n";
            x = number;
        }
        else if (number < y)
        {
            cout << number << "m" << " - наименьшая из введенных длин\n";
            y = number;
        }
        else
            cout << "Данная длина " << number << "m" << " находится между наибольшей и наименьшей ранее веденными длинами\n";
 
        i++;
        sum += number;
        
    }
 
    cout << "Количество введенных значений - " << i << "\n";
    cout << "Наибольшее из введенных - " << x << "\n";
    cout << "Наименьшее из введенных - " << y << "\n";
    cout << "Сумма введенных значений в метрах - " << x << " метров\n";
 
    keep_window_open();
    return 0;
}
Осталось добавить вектор выполнив пункты 10 и 11. Если нужно выложу окончательный вид программы со всеми пунктами задания.
2
3 / 3 / 0
Регистрация: 15.10.2015
Сообщений: 60
22.02.2017, 18:11
я прошу прощения, что залезаю, но под эти задания я написал свое решение и после ввода буквы "е/Е" после цифр, программа выходит из цикла в завершение! Я скопировал решениe Shatl21 и такая же ерунда. Все, абсолютно все буквы кроме "е/Е" работают как и должны. Это только у меня такой прикол или этому есть объяснение какое-то?

p.s. Элементарная программа типа int a, string b, cin >> a >> b, cout << a << b таких глюков не имеет.
Миниатюры
Добавить к каждому введённому числу типа double единицу измерения   Добавить к каждому введённому числу типа double единицу измерения  
0
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
22.02.2017, 18:39  [ТС]
badvik, а можно код?
0
3 / 3 / 0
Регистрация: 15.10.2015
Сообщений: 60
22.02.2017, 19:08
один код прямо надо моим сообщением (Shatl21), я его пробовал полностью, а мой, который я собрал ниже. "Вылетают" оба:
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
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
 
using namespace std;
using std::cout;
 
double sort_i_sum_znach(vector<double> sum_numbers);        // для сорт и сум
bool checkinput(const string *p, string ed_izm);            // проверка ввода ед. изм.
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    double number, min = 0, max = 0;
    bool first_flag = true;                         // для определения мин.
    const string str[] = { "m", "cm", "in", "ft" };         // массив ед. изм
    const string *p = str;                          // указатель для передачи в функц.
    string ed_izm;                              // для ввода ед. изм   
    int count = 0;                              // счетчик значений
    bool second_flag = false;                       // флаг для проверки ед. изм.
    vector<double> sum_numbers;                 // вектор правильно введенных знач. в м.
 
    cout << "Input length\n";
    while (cin >> number >> ed_izm) {
 
        if (first_flag) {                           // определяем мин значение
                first_flag = false;
                min = number;
                max = number;
            }
            
        if (!checkinput(str, ed_izm)) {                 // проверяем ввод ед. изм, если нет, след. итерация
            cout << "Wrong input, repeat\n";
            cout << "Input length\n";
            continue;
        }
        else {
            count++;
            if (ed_izm == str[1]) {
            number *= 0.01;
            }
            else if (ed_izm == str[2]) {
                number *= 0.0254;
            }
            else if (ed_izm == str[3]) {
                number *= 0.3048;
            }
 
            if (number < min) min = number;
            if (number > max) max = number;
 
            sum_numbers.push_back(number);
        }
    }
    
    cout << "Minimum input was: " << min << " m" << endl;
    cout << "Maximum input was: " << max << " m" << endl;
    cout << "Right input q-ty is: " << count << " m" << endl;
    cout << "Sum of inputs in m is: " << sort_i_sum_znach(sum_numbers) << " m" << endl;
 
    system("pause");
}
 
double sort_i_sum_znach(vector<double> sum_numbers) {
    double summa = 0;
    sort(sum_numbers.begin(), sum_numbers.end());
    for (auto i : sum_numbers) {
        summa += i;
    }
    return summa;
}
 
bool checkinput(const string *p, string ed_izm) {
    for (size_t i = 0; i < sizeof(p); i++) {
        if (ed_izm == p[i]) {           
            return true;
        }
    }
    return false;
}
p.s. попробовал в С::В, прямой запуск через exe - то же самое.
0
3 / 3 / 0
Регистрация: 15.10.2015
Сообщений: 60
22.02.2017, 19:22
сделал принт с дебаггером. Правда, непонятно что там не так.

p.s. добавил так же с кодом из темы.
Миниатюры
Добавить к каждому введённому числу типа double единицу измерения   Добавить к каждому введённому числу типа double единицу измерения  
0
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
22.02.2017, 20:19  [ТС]
badvik, Попробуйте ввести ед. Изм через пробел после значения
0
3 / 3 / 0
Регистрация: 15.10.2015
Сообщений: 60
22.02.2017, 21:37
mskoromets, так работает, как ни странно. Без пробела не работает только "е". Повторюсь, все до одной буквы и символы, все работает, а именно с "е" - выход из цикла. Может это какой-то потайной "exit" ))
0
0 / 0 / 0
Регистрация: 29.10.2021
Сообщений: 1
30.10.2021, 11:04
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
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL,"Russian");
    ////////////////////////////
 
    vector <double> digits;
    double a;
    string unit;
    while (cin >> a >> unit){
        double b = a;
        if (unit == "cm"){
            digits.push_back(a);
        }
 
        else if (unit == "m"){
            a *= 100;
            digits.push_back(a);
        }
 
        else if (unit == "in"){
            a *= 2.54;
            digits.push_back(a);
        }
 
        else if (unit == "ft"){
            a *= 12 * 2.54;
            digits.push_back(a);
        }
 
        else{
            cout << "Такой единицы измерения нет!" << endl;
            continue;
        }
        int s = digits.size();
        sort(digits.begin(), digits.end());
//////////////////////////////////////////////
 
        if (a == digits[0]){
            cout << "Наименьшее число: " << b << unit << endl;
        }
 
        else if (a == digits[s-1]){
            cout << "Наибольшее число: " << b << unit << endl ;
        }
 
        else{
            cout << b << unit <<endl;
        }
 
    }
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.10.2021, 11:04
Помогаю со студенческими работами здесь

Прибавить единицу к введенному числу и вывести результат
Начал изучать Ruby по этому сайту http://www.shokhirev.com/mikhail/ruby/ltp/Chapter04.html Так вот там задание: • Напишите...

1C 7.7 как добавить единицу измерения
Есть отчет созданый конструктором - описание запроса и печатная форма отчета в прикрепленных файлах. нужно в печатную форму добавить...

Как добавить единицу измерения для каждого товара в накладную?
Добрый день! Собственно, сам вопрос такой. В шаблонной конфигурации есть Расходная Накладная, нужно чтобы для каждого товара добавилась...

Добавить к каждому числу, кроме последнего, значение следующего
Пожалуйста, помогите с задачкой. Проблема в составлении цикла do while (добавив к каждому числу, кроме последнего, значение следующего) ...

Добавить к каждому числу корень квадратный из абсолютного значения произведения
Есть задание на шаблоны функции я слаб в си++, прощу помощи, по заданию, оставляйте комментарии по возможности что делаете в коде ...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru