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

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

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

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

Добавьте к каждому введенному числу типа 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2017, 19:10
Ответы с готовыми решениями:

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

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

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

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

17
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
09.02.2017, 19:58 2
Еще интересует решение задачи?
0
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
09.02.2017, 20:04  [ТС] 3
Shatl21, примерно знаю как делать, но было бы очень интересно посмотреть ваше решение
0
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
09.02.2017, 21:34 4
Уже накидал решение в голове, но напишу завтра, а пока решение предыдущего пункта покажу, может тоже будет интересно.
"Теперь измените тело цикл так чтобы он считывал только по одному числу типа 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  [ТС] 5
Shatl21, благодарю за вариант, проанализирую и усвою
0
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
09.02.2017, 22:31 6
Держи решение 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  [ТС] 7
Shatl21, Очень интересно, а на какой вы сейчас главе?
0
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
09.02.2017, 22:53 8
4 главу закончил, решаю теперь задачи, через пару дней 5 главу начну, я все досконально разбираю медленно продвигаюсь. Плюс еще работы много, только вечерами сижу за ноутом, решаю.
1
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
09.02.2017, 22:56  [ТС] 9
Shatl21, 16 лет, тоже не особо много времени есть, я главы минимум по 2 раза читаю)
0
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
09.02.2017, 22:59 10
mskoromets, в 30 еще меньше будет, я вот поздно начал учится, а у тебя еще все впереди. Удачи тебе! Главное не бросай начатого!
1
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
09.02.2017, 23:10  [ТС] 11
Shatl21, спасибо за совет на мой взгляд было бы неплохо временами связываться в какой либо соц сети с целью обмена опытом, тк часто в заданиях поставлены сложные задачи и обмен мнениями был бы очень полезным. Среди сверстников нет ни одного человека, кому это было бы интересно
0
6 / 6 / 0
Регистрация: 04.01.2016
Сообщений: 13
10.02.2017, 20:20 12
Цитата Сообщение от 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 13
я прошу прощения, что залезаю, но под эти задания я написал свое решение и после ввода буквы "е/Е" после цифр, программа выходит из цикла в завершение! Я скопировал решениe Shatl21 и такая же ерунда. Все, абсолютно все буквы кроме "е/Е" работают как и должны. Это только у меня такой прикол или этому есть объяснение какое-то?

p.s. Элементарная программа типа int a, string b, cin >> a >> b, cout << a << b таких глюков не имеет.
0
Миниатюры
Добавить к каждому введённому числу типа double единицу измерения   Добавить к каждому введённому числу типа double единицу измерения  
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
22.02.2017, 18:39  [ТС] 14
badvik, а можно код?
0
3 / 3 / 0
Регистрация: 15.10.2015
Сообщений: 60
22.02.2017, 19:08 15
один код прямо надо моим сообщением (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 16
сделал принт с дебаггером. Правда, непонятно что там не так.

p.s. добавил так же с кодом из темы.
0
Миниатюры
Добавить к каждому введённому числу типа double единицу измерения   Добавить к каждому введённому числу типа double единицу измерения  
6 / 6 / 3
Регистрация: 29.12.2016
Сообщений: 132
22.02.2017, 20:19  [ТС] 17
badvik, Попробуйте ввести ед. Изм через пробел после значения
0
3 / 3 / 0
Регистрация: 15.10.2015
Сообщений: 60
22.02.2017, 21:37 18
mskoromets, так работает, как ни странно. Без пробела не работает только "е". Повторюсь, все до одной буквы и символы, все работает, а именно с "е" - выход из цикла. Может это какой-то потайной "exit" ))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2017, 21:37

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

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

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

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


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

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

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