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

Конвертер различных измерений массы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Маргарита
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 77
18.09.2012, 19:01     Конвертер различных измерений массы #1
Написать программу, которая бы по введенному номеру единицы измерения (1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 -тонна, 5 — центнер) и массе М выдавала бы соответствующее значение массы в килограммах.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DeathMetal
44 / 44 / 2
Регистрация: 05.05.2012
Сообщений: 178
18.09.2012, 20:02     Конвертер различных измерений массы #2
Как-то так
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.NetworkInformation;
using System.Management;
using System.IO;
using System.Threading;
using System.Diagnostics;
using System.Media;
 
namespace ConsoleAPI
{
    class Program
    {
        static void Main(string[] args)
        {
            double m, it, ed;
            Console.Write("Введите массу: ");
            m = Convert.ToDouble(Console.ReadLine());
            Console.Write("Введите единице измерения массы (0 - кг, 1 - мг, 2 - г, 3 - т, 4 - ц): ");
            ed = Convert.ToDouble(Console.ReadLine());
            switch (Convert.ToInt32(ed))
            {
                case 0:
                    it = m * 1;
                    Console.WriteLine("Киллограм: " + it);
                    break;
                case 1:
                    it = m / 1000000;
                    Console.WriteLine("Миллиграмм: " + it);
                    break;
                case 2:
                    it = m / 1000;
                    Console.WriteLine("Грамм: " + it);
                    break;
                case 3:
                    it = m / 1000;
                    Console.WriteLine("Тонн: " + it);
                    break;
                case 4:
                    it = m / 100;
                    Console.WriteLine("Центнеров: " + it);
                    break;
            }
        }
    }
}
Правда, проблема есть со склонением чисел(сами доработаете, на ютубе есть видео даже).
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.09.2012, 20:18     Конвертер различных измерений массы #3
DeathMetal, Где здесь С++?
AxelPAL
30 / 25 / 4
Регистрация: 22.06.2011
Сообщений: 123
18.09.2012, 20:21     Конвертер различных измерений массы #4
DeathMetal, в миллиграммах и граммах нужно умножить. Зачем куча лишних using?

Маргарита, Так все же нужен C++ или C#?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.09.2012, 20:29     Конвертер различных измерений массы #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
unsigned long long operator "" _kg(unsigned long long m) { return m; }
long double operator "" _g(unsigned long long m) { return m / 1000.; }
long double operator "" _mg(unsigned long long m) { return operator "" _g(m) / 100.; }
unsigned long long operator "" _tones(unsigned long long m) { return m * 1000; }
unsigned long long operator "" _cnt(unsigned long long m) { return m * 100; }
 
int main()
{
   std::cout << 10_tones << std::endl;
   std::cout << 10_cnt << std::endl;
   std::cout << 10_g << std::endl;
   std::cout << 10_mg << std::endl;
   std::cout << 10_kg << std::endl;
}
http://liveworkspace.org/code/7fcdf4...30c7ec4b204702

А ежели нужен нормальный код - пишем менюшку для выбора куда переводить - в конкретном случае используем конкретную формулу.
DeathMetal
44 / 44 / 2
Регистрация: 05.05.2012
Сообщений: 178
18.09.2012, 23:04     Конвертер различных измерений массы #6
Извиняюсь.
Маргарита
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 77
19.09.2012, 09:59  [ТС]     Конвертер различных измерений массы #7
Мне нужна программа на С++ с использованием switch
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.09.2012, 10:07     Конвертер различных измерений массы #8
Маргарита, Дык, пишите, в чем проблема? Формулы не знаете? В кодах выше они есть. Остальное - пожалуйста уж сделайте сами.
AxelPAL
30 / 25 / 4
Регистрация: 22.06.2011
Сообщений: 123
19.09.2012, 10:14     Конвертер различных измерений массы #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
#include "stdafx.h"
#include <iostream>
#include <locale>
#include "conio.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    
setlocale(LC_ALL,"Russian");
    int ed;
    double m,it;
            std::cout << "Введите массу в кг: ";
            std::cin >> m;
            std::cout << "Введите единицу измерения массы (0 - кг, 1 - мг, 2 - г, 3 - т, 4 - ц): ";
            std::cin >> ed;
            switch (ed)
            {
                case 0:
                    it = m * 1;
                    std::cout << "Киллограм: " << it;
                    break;
                case 1:
                    it = m * 1000000;
                    std::cout << "Миллиграмм: " << it;
                    break;
                case 2:
                    it = m * 1000;
                    std::cout << "Грамм: " << it;
                    break;
                case 3:
                    it = m / 1000;
                    std::cout << "Тонн: " << it;
                    break;
                case 4:
                    it = m / 100;
                    std::cout << "Центнеров: " << it;
                    break;
            }
            _getch();
    return 0;
}
Переделал для плюсов пример DeathMetal, исправил маленькие ошибки в преобразовании к граммам и миллиграммам.
Маргарита
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 77
19.09.2012, 12:20  [ТС]     Конвертер различных измерений массы #10
Спасибо я уже написала....
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,662
19.09.2012, 12:31     Конвертер различных измерений массы #11
Мне кажется, что кое-кто невнимательно прочел условие задачи.
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
/////////////////////////////////////////////////////////////////////////////////////////
//Написать программу, которая бы по введенному номеру единицы измерения 
//(
//  1 — килограмм, 
//  2 — миллиграмм, 
//  3 — грамм, 
//  4 - тонна, 
//  5 — центнер
//) и массе М выдавала бы соответствующее значение массы в килограммах.
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <map>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef double          T_mass;
typedef double          T_factor;
typedef std::string     T_str;
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_name_and_factor_for_gm
{    
    T_str       name_;
    T_factor    factor_;
    //-----------------------------------------------------------------------------------
    T_name_and_factor_for_gm
        (
            T_str       name    =   T_str(),
            T_factor    factor  =   0
        )
        :
        name_       ( name      ),
        factor_     ( factor    )
    {}
};
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::map<int, T_name_and_factor_for_gm>    T_name_and_factor_for_gm_of_ind;
/////////////////////////////////////////////////////////////////////////////////////////
void  fill_name_and_factor_for_gm_of_ind( T_name_and_factor_for_gm_of_ind&  name_and_factor_for_gm_of_ind )
{
    name_and_factor_for_gm_of_ind[1]   =   T_name_and_factor_for_gm( "кг",  1e3     );
    name_and_factor_for_gm_of_ind[2]   =   T_name_and_factor_for_gm( "мг",  1e-3    );
    name_and_factor_for_gm_of_ind[3]   =   T_name_and_factor_for_gm( "г",   1       );
    name_and_factor_for_gm_of_ind[4]   =   T_name_and_factor_for_gm( "т",   1e6     );
    name_and_factor_for_gm_of_ind[5]   =   T_name_and_factor_for_gm( "ц",   1e5     );
}
/////////////////////////////////////////////////////////////////////////////////////////
void  print_mass_in_kg
    (
        int                                 ind,
        T_mass                              mass,
        T_name_and_factor_for_gm_of_ind&    name_and_factor_for_gm_of_ind
    )
{
    std::cout   <<  mass
                <<  ' '
                <<  name_and_factor_for_gm_of_ind[ ind ].name_
                <<  " = "                
                <<      mass 
                    *   name_and_factor_for_gm_of_ind   [ ind  ].factor_
                    /   name_and_factor_for_gm_of_ind   [ 1    ].factor_
 
                <<  ' '
                <<  name_and_factor_for_gm_of_ind       [ 1    ].name_;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    T_name_and_factor_for_gm_of_ind    name_and_factor_for_gm_of_ind;
    fill_name_and_factor_for_gm_of_ind( name_and_factor_for_gm_of_ind );
 
    for(;;)
    {
        int     ind     =   0;
        do
        {
            std::cout   <<  "индекс единицы измерения массы ("
                        <<  name_and_factor_for_gm_of_ind.begin     ()->first
                        <<  ".."
                        <<  name_and_factor_for_gm_of_ind.rbegin    ()->first
                        <<  ") = ";
            std::cin    >>  ind;
        }while  (
                    name_and_factor_for_gm_of_ind.find( ind )   ==  name_and_factor_for_gm_of_ind.end()
                );
        
        T_mass  mass    =   0;
        std::cout   <<  "масса в "
                    <<  name_and_factor_for_gm_of_ind[ ind ].name_
                    <<  " = ";
        std::cin    >>  mass;
        if(mass == 0)
        {
            break;
        }
 
        print_mass_in_kg
            (
                ind,
                mass,            
                name_and_factor_for_gm_of_ind
            );
 
        std::cout   <<  std::endl
                    <<  std::endl
                    <<  std::endl
                    <<  std::endl;
    }    
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2012, 12:52     Конвертер различных измерений массы
Еще ссылки по теме:

C++ уравнение массы переноса
Найти наименьшую сумму квадратов двух результатов измерений с интервалом в 5 элементов C++
Перевод единиц массы C++

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.09.2012, 12:52     Конвертер различных измерений массы #12
Mr.X, Несомненно извращаться можно по разному.
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
#include <iostream>
#include <functional>
#include <string>
#include <vector>
 
struct converter
{
   std::function<double(double)> function;
   std::string to;
};
 
int main()
{
   std::vector<converter> table =
   {
      {[](double d) { return d; }, "kg"},
      {[](double d) { return d / 1000 / 1000; }, "mg"},
      {[](double d) { return d / 1000; }, "g"},
      {[](double d) { return d * 100; }, "cnt" },
      {[](double d) { return d * 1000; }, "tones" }
   };
   int ind = 0;
   std::cin >> ind;
   ind -= 1;
   if (ind >= 0 && ind < table.size())
   {
      int m = 0;
      std::cin >> m;
      const converter& current = table[ind];
      std::cout << "Result of converting " << m << " " << current.to << " is " << current.function(m) << " kg" << std::endl;
   }
}
Но свитч тут откровенно говоря использовать логичнее.
Yandex
Объявления
19.09.2012, 12:52     Конвертер различных измерений массы
Ответ Создать тему
Опции темы

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