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

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

13.01.2017, 19:10. Показов 6812. Ответов 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
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru