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

Нахождение плотности вещества - C++

Восстановить пароль Регистрация
 
Nik-
19 / 19 / 9
Регистрация: 12.07.2015
Сообщений: 322
14.07.2015, 12:54     Нахождение плотности вещества #1
Как должна выглядить структура, в который хранятся , например, название и плотности газов, чтобы при вводе в консоли имени газа, показывалась его плотность.Напишите шаблон, пожалуйста.Язык C++.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4268 / 3699 / 1245
Регистрация: 14.04.2014
Сообщений: 14,485
14.07.2015, 13:13     Нахождение плотности вещества #2
Может массив структур, если газов много?
Nik-
19 / 19 / 9
Регистрация: 12.07.2015
Сообщений: 322
14.07.2015, 13:15  [ТС]     Нахождение плотности вещества #3
Да, хорошая идея, но мне нужен шаблон , по которому я это буду делать
nmcf
4268 / 3699 / 1245
Регистрация: 14.04.2014
Сообщений: 14,485
14.07.2015, 13:46     Нахождение плотности вещества #4
C++
1
2
3
4
5
6
7
struct Gas
{
    char *name;
    double d;
};
 
Gas Gases[10] = { {"газ1", 1.1}, ...};
Nik-
19 / 19 / 9
Регистрация: 12.07.2015
Сообщений: 322
14.07.2015, 14:30  [ТС]     Нахождение плотности вещества #5
Спасибо

Добавлено через 27 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
struct Gas
{
    char *name;
    double d;
};
 
int main()
{
    setlocale(LC_ALL, "Russian");
    Gas Gases[10] = { {"Азот", 1.250}, {"Кислород", 1.429} };
    cout << "Density of gases is " << Gases << endl;
    return 0;
 
}
Что надо сделать, чтобы можно было выводить на терминал название и плотность газа?
это не работает : cout << "Density of gases is : " << Gases << endl;
Пишет : Density of gases is 0x28fe60.
WhitePanda
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 4
14.07.2015, 14:36     Нахождение плотности вещества #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
struct Gas
{
char *name;
double d;
};
 
int main()
{
setlocale(LC_ALL, "Russian");
Gas Gases[2] = { {"Азот", 1.250}, {"Кислород"1.429} };
 
cout << "Density of gases is" << endl;
for(int i=0;i<2;++i)
cout<<"Gas name:"<<Gases[i].name<<" density:"<<Gases[i].d<<endl;
return 0;
 
}
Nik-
19 / 19 / 9
Регистрация: 12.07.2015
Сообщений: 322
14.07.2015, 14:45  [ТС]     Нахождение плотности вещества #7
Спасибо.
IrineK
Заблокирован
14.07.2015, 14:49     Нахождение плотности вещества #8
Цитата Сообщение от Nik- Посмотреть сообщение
Пишет : Density of gases is 0x28fe60
Это вам написался адрес указателя на массив записей.
Нужно выводить каждую запись в цикле, обращаясь к сответствующим полям записи.

Gases - весь массив записей
Gases[i] - i-я запись в массиве
Gases[i].name - поле name i-й записи
Gases[i].d - поле d i-й записи
Nik-
19 / 19 / 9
Регистрация: 12.07.2015
Сообщений: 322
14.07.2015, 15:10  [ТС]     Нахождение плотности вещества #9
Мне нужно например больше двух газов в массиве. Я заменил [2] на [6] и в for(i=0;i<6;++i) (заменил i<2 на i<6), но у меня при попытке скомпилировать данный код выдается ошибка: error: two or more data types in declaration of 'main', как решить эту проблему. И я буду делать еще структуру с другими веществами.
WhitePanda
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 4
14.07.2015, 15:13     Нахождение плотности вещества #10
Если вы хотите их показать нужно же также внести их в массив как и первые 2.
Nik-
19 / 19 / 9
Регистрация: 12.07.2015
Сообщений: 322
14.07.2015, 15:19  [ТС]     Нахождение плотности вещества #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
#include <iostream>
 
using namespace std;
struct Gas
{
char *name;
double d;
};
struct
 
int main()
{
  {
    setlocale(LC_ALL, "Russian");
    Gas Gases[6] = { {"Азот", 1.250}, {"Кислород",  1.429}, {"Водород", 0.090}, {"Углекислый газ"1.977},
    {"Азот",    1.250},{"Метан",    0.717} };
 
    cout << "Density of gases is "<< endl;
    for(int i=0;i<6;++i)
    cout << "Gas name: " <<Gases[i].name<<" density: " << Gases[i].d << " кг/м.куб" <<endl;
 
  }
 
   return 0;
}
Я так и сделал.

Добавлено через 1 минуту
странно, после "углекислый газ", 1.977 не прорисовалась фигурная скобка, но она есть в исходном коде
nmcf
4268 / 3699 / 1245
Регистрация: 14.04.2014
Сообщений: 14,485
14.07.2015, 15:20     Нахождение плотности вещества #12
В 9-й строке что?
WhitePanda
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 4
14.07.2015, 15:20     Нахождение плотности вещества #13
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
#include <iostream>
 
using namespace std;
struct Gas
{
    char *name;
    double d;
};
 
    int main()
{
    
        setlocale(LC_ALL, "Russian");
        Gas Gases[6] = { { "Азот", 1.250 }, { "Кислород", 1.429 }, { "Водород", 0.090 }, { "Углекислый газ", 1.977 },
        { "Азот", 1.250 }, { "Метан", 0.717 } };
 
        cout << "Density of gases is " << endl;
        for (int i = 0; i<6; ++i)
            cout << "Gas name: " << Gases[i].name << " density: " << Gases[i].d << " кг/м.куб" << endl;
 
    
 
        return 0;
}
Вот. Это работает.
Nik-
19 / 19 / 9
Регистрация: 12.07.2015
Сообщений: 322
14.07.2015, 15:23  [ТС]     Нахождение плотности вещества #14
Действительно, 9 строку не досмотрел, спасибо Вам всем еще раз, пойду допишу под остальные вещества.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
14.07.2015, 17:29     Нахождение плотности вещества #15
C++
1
2
3
4
5
struct Gas
{
    char *name;
    double d;
};
может все-таки
C++
1
const char* name?

Не по теме:

или предупреждения компилятора в топку?



может проще вообще это все в файле держать, а при запуске программы считывать?
Nik-
19 / 19 / 9
Регистрация: 12.07.2015
Сообщений: 322
14.07.2015, 18:16  [ТС]     Нахождение плотности вещества #16
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
#include <iostream>
 
 
using namespace std;
struct Fluid
{
    const char *name;
    double d;
};
struct Gas
{
    const char *name;
    double d;
};
struct Solid
{
    const char *name;
    double d;
};
 
    int main()
{
    setlocale(LC_ALL, "Russian");
   {
        Gas Gases[6] = { { "Азот", 1.250 }, { "Кислород", 1.429 }, { "Водород", 0.090 }, { "Углекислый газ", 1.977 },
                { "Азот", 1.250 }, { "Метан", 0.717 } };
 
                cout << "Плотность газов: " << endl << endl;
                for (int i = 0; i<6; ++i)
                    cout << "Название газа: " << Gases[i].name << ", плотность: " << Gases[i].d << " кг/м.куб = " << Gases[i].d / 1000 << " г/см.куб" << endl;
   };
 
   {
        Fluid Fluids[6] = { { "Вода", 1.00 }, { "Керосин", 0.82 }, { "Морская вода", 1.03 }, { "Спирт", 0.80 },
                { "Ртуть", 13.60 }, { "Бензин", 0.74 } };
 
                cout << "Плотность жидкостей: " << endl << endl;
                for (int i = 0; i<6; ++i)
                    cout << "Название жидкости: " << Fluids[i].name << ", плотность: " << Fluids[i].d << " г/см.куб = " << Fluids[i].d * 1000 << " кг/м.куб" << endl;
   };
 
   {
        Solid Solids[6] = { { "Алюминий", 2.7 }, { "Золото", 19.3 } , { "Свинец", 11.3 }, { "Серебро", 10.5 },
         { "Олово", 7.3 }, { "Сталь", 7,8 } };
 
 
             cout << "Плотность твердого тела: " << endl << endl;
             for (int i = 0; i<6; ++i)
                 cout << "Название твердого тела: " << Solids[i].name << ", плотность: " << Solids[i].d << " г/см.куб = " << Solids[i].d * 1000 << " кг/м.куб" << endl;
   }
 
 
 
return 0;
 
}
Проблема в том, что при запуске программы, компилятор выдает ошибку - error: too many initializers for 'Solid'.
Как решать данную проблему

Добавлено через 42 секунды
Да, спасибо насчет
C++
1
const char *name
, проглядел

Добавлено через 39 секунд
ошибка выскакивает только на 44 строке.

Добавлено через 40 минут
А, все, я понял в чем ошибка. Я написал { "Сталь", 7,8 }, вместо { "Сталь", 7.8 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2015, 18:23     Нахождение плотности вещества
Еще ссылки по теме:

C++ Нахождение экстремума
C++ Поменять нахождение min среди двумерного массива, на нахождение min в каждой сточке

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

Или воспользуйтесь поиском по форуму:
Nik-
19 / 19 / 9
Регистрация: 12.07.2015
Сообщений: 322
14.07.2015, 18:23  [ТС]     Нахождение плотности вещества #17
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
#include <iostream>
 
 
using namespace std;
struct Fluid
{
    const char *name;
    double d;
};
struct Gas
{
    const char *name;
    double d;
};
struct Solid
{
    const char *name;
    double d;
};
 
    int main()
{
    setlocale(LC_ALL, "Russian");
   {
        Gas Gases[6] = { { "Азот", 1.250 }, { "Кислород", 1.429 }, { "Водород", 0.090 }, { "Углекислый газ", 1.977 },
                { "Азот", 1.250 }, { "Метан", 0.717 } };
 
                cout << "Плотность газов: " << endl << endl;
                for (int i = 0; i<6; ++i)
                    cout << "Название газа: " << Gases[i].name << ", плотность: " << Gases[i].d << " кг/м.куб = " << Gases[i].d / 1000 << " г/см.куб" << endl;
   };
 
   {
        Fluid Fluids[6] = { { "Вода", 1.00 }, { "Керосин", 0.82 }, { "Морская вода", 1.03 }, { "Спирт", 0.80 },
                { "Ртуть", 13.60 }, { "Бензин", 0.74 } };
 
                cout << "Плотность жидкостей: " << endl << endl;
                for (int i = 0; i<6; ++i)
                    cout << "Название жидкости: " << Fluids[i].name << ", плотность: " << Fluids[i].d << " г/см.куб = " << Fluids[i].d * 1000 << " кг/м.куб" << endl;
   };
 
   {
        Solid Solids[6] = { { "Алюминий", 2.7 }, { "Золото", 19.3 } , { "Свинец", 11.3 }, { "Серебро", 10.5 },
         { "Олово", 7.3 }, { "Сталь", 7.8 } };
 
 
             cout << "Плотность твердого тела: " << endl << endl;
             for (int i = 0; i<6; ++i)
                 cout << "Название твердого тела: " << Solids[i].name << ", плотность: " << Solids[i].d << " г/см.куб = " << Solids[i].d * 1000 << " кг/м.куб" << endl;
   }
 
 
 
return 0;
 
}
программа выводит на экран терминала наименование вещества и его плотность, если надо показать больше веществ и их плотность - заменить в
C++
1
Gas Gases[6]
C++
1
Fluid Fluids[6]
C++
1
Solid Solids[6]
[6] на нужное вам кол-во веществ. И в
C++
1
for (int i = 0; i<6; ++i)
заменить i<6 на нужное вам число во всех трех структурах , где это требуется.
Yandex
Объявления
14.07.2015, 18:23     Нахождение плотности вещества
Ответ Создать тему
Опции темы

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