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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
milya
2 / 2 / 0
Регистрация: 15.04.2012
Сообщений: 61
#1

Ошибка в коде - C++

26.02.2013, 21:22. Просмотров 316. Ответов 8
Метки нет (Все метки)

Ребят,подскажите пожалуйста...работаю на Visual Studio 2010...и выдает такие ошибки:
1)error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup
2)error LNK1120: 1 неразрешенных внешних элементов
Ну почему?
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
 
using namespace std;
 
static int win = 0;
static int loss = 0;
 
class NumbSystem
{
public:
    void BinToHex(const int *in, char *HexMas, int BinCount, char *answer)
    {
        int DecSum = 0;
        for (int i = 0; i < BinCount; i++)
        {
            if (in[i] != 0) 
            {
                DecSum += in[i] * pow(2.0, BinCount - 1 - i);
 
            }
        }
        itoa(DecSum, HexMas, 16);
        if (strcmp(HexMas,answer) == 0)
        {
            win++; 
        }
        else
        {
            loss++;
        }
 
    }
 
 
    void BinToOct(const int *in, char *OctMas, int BinCount, char *answer)
    {
        int DecSum = 0;
        for (int i = 0; i < BinCount; i++)
        {
            if (in[i] != 0) 
            {
                DecSum += in[i] * pow(2.0, BinCount - i - 1);
            }
        }
        itoa(DecSum, OctMas ,8);
        if ( strcmp(OctMas,answer) == 0 ) 
        {
            win++;
        }
        else {
            loss++;
        }
    }
 
    int CharToIntBin(const char &c)
    {
        return c == '1'? 1 : 0;
    }
 
    void main()
    {
        setlocale(0,"");
 
        while (true)
        {
            cout << "Пожалуйста, выберите основание или введите q для выхода:\n";
            cout << "o - oct (8)\n";
            cout << "h - hex (16)\n";
            cout << "q - quit \n";
            cout << "Ваш ответ  ";
 
 
            char radix; 
            cin >> radix;
            if (radix != 'o' && radix != 'h' && radix != 'q') 
            {
                continue;
            }
            if (radix == 'q') 
            {
                cout << "Правильных ответов: " << win << endl;
                cout << "Неправильных:  " << loss << endl;
                system("pause");
                exit(1);
            }
 
 
 
            char randomChars[8];
            int IntBin[7] = {0};
            for (int i = 0; i < 8; i++)
            {
                IntBin[i] = rand()%100;
            }
 
            itoa(IntBin[7], randomChars, 2);
 
            int count = 0;
            cout << "Сгенерированное двоичное число  :" << randomChars << endl;
 
            for (int i = 0; randomChars[i] != '\0'; i++)
            {
                IntBin[i] = CharToIntBin(randomChars[i]);
                count++;
            }
 
            char OctMas[4];
            char HexMas[3];
 
            cout << endl;
 
            char answer[4];
            cout << "Ваш ответ в " << radix << " системе счисления = ";
            cin >> answer;
 
 
            bool isOct = true;
            switch (radix)
            {
            case 'o': BinToOct(IntBin, OctMas, count,answer);
                break;
            case 'h': BinToHex(IntBin, HexMas, count,answer);
                isOct = false; 
            }
 
 
            if (isOct) 
            {
                cout << "Правильный ответ " << OctMas << " в восьмеричной системе счисления\n";
            }
            else 
            {
                cout << "Правильный ответ " << HexMas << " в шестнадцатеричной системе счисления\n";
            }
 
        }
    }
 };
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2013, 21:22     Ошибка в коде
Посмотрите здесь:

Ошибка в коде К и Р C++
Ошибка в коде C++ C++
C++ Ошибка в коде
C++ ошибка в коде
C++ Ошибка в коде
Ошибка в коде C++
Ошибка в коде C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
26.02.2013, 21:32     Ошибка в коде #2
интересный подход - объявлять функцию main() в теле класса. Это возможно в C#, но не в С++.
Вообщем вырезал из класса функцию main() и убрал объявление класса(его методы стали обычными фунцкиями), т.к. в программе нет его объектов.
Если наличие класса не принципиально, то вот работающий вариант:
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
 
using namespace std;
 
static int win = 0;
static int loss = 0;
 
 
    void BinToHex(const int *in, char *HexMas, int BinCount, char *answer)
    {
        int DecSum = 0;
        for (int i = 0; i < BinCount; i++)
        {
            if (in[i] != 0) 
            {
                DecSum += in[i] * pow(2.0, BinCount - 1 - i);
 
            }
        }
        itoa(DecSum, HexMas, 16);
        if (strcmp(HexMas,answer) == 0)
        {
            win++; 
        }
        else
        {
            loss++;
        }
 
    }
 
 
    void BinToOct(const int *in, char *OctMas, int BinCount, char *answer)
    {
        int DecSum = 0;
        for (int i = 0; i < BinCount; i++)
        {
            if (in[i] != 0) 
            {
                DecSum += in[i] * pow(2.0, BinCount - i - 1);
            }
        }
        itoa(DecSum, OctMas ,8);
        if ( strcmp(OctMas,answer) == 0 ) 
        {
            win++;
        }
        else {
            loss++;
        }
    }
 
    int CharToIntBin(const char &c)
    {
        return c == '1'? 1 : 0;
    }
 
void main()
    {
        setlocale(0,""); 
        while (true)
        {
            cout << "Пожалуйста, выберите основание или введите q для выхода:\n";
            cout << "o - oct (8)\n";
            cout << "h - hex (16)\n";
            cout << "q - quit \n";
            cout << "Ваш ответ  ";
 
 
            char radix; 
            cin >> radix;
            if (radix != 'o' && radix != 'h' && radix != 'q') 
            {
                continue;
            }
            if (radix == 'q') 
            {
                cout << "Правильных ответов: " << win << endl;
                cout << "Неправильных:  " << loss << endl;
                system("pause");
                exit(1);
            }
 
 
 
            char randomChars[8];
            int IntBin[7] = {0};
            for (int i = 0; i < 8; i++)
            {
                IntBin[i] = rand()%100;
            }
 
            itoa(IntBin[7], randomChars, 2);
 
            int count = 0;
            cout << "Сгенерированное двоичное число  :" << randomChars << endl;
 
            for (int i = 0; randomChars[i] != '\0'; i++)
            {
                IntBin[i] = CharToIntBin(randomChars[i]);
                count++;
            }
 
            char OctMas[4];
            char HexMas[3];
 
            cout << endl;
 
            char answer[4];
            cout << "Ваш ответ в " << radix << " системе счисления = ";
            cin >> answer;
 
 
            bool isOct = true;
            switch (radix)
            {
            case 'o': BinToOct(IntBin, OctMas, count,answer);
                break;
            case 'h': BinToHex(IntBin, HexMas, count,answer);
                isOct = false; 
            }
 
 
            if (isOct) 
            {
                cout << "Правильный ответ " << OctMas << " в восьмеричной системе счисления\n";
            }
            else 
            {
                cout << "Правильный ответ " << HexMas << " в шестнадцатеричной системе счисления\n";
            }
 
        }
    }
milya
2 / 2 / 0
Регистрация: 15.04.2012
Сообщений: 61
26.02.2013, 21:55  [ТС]     Ошибка в коде #3
вот именно что принципиально...да) программа состояла только из функций,но сказали А НЕТ,ДАВАЙ С КЛАССОМ!!!а вот работа классов мне в с++ ваще не понятна.. c классами работала только в c#...а как сделать.чтобы класс был??
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.02.2013, 22:57     Ошибка в коде #4
Цитата Сообщение от milya Посмотреть сообщение
а как сделать.чтобы класс был??
Разместить его перед main(). В main() создавать объект класса и работать с ним.
milya
2 / 2 / 0
Регистрация: 15.04.2012
Сообщений: 61
26.02.2013, 23:20  [ТС]     Ошибка в коде #5
спасибо спасибо =)
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
26.02.2013, 23:57     Ошибка в коде #6
вообще классы нужны для того, чтобы отображать в программе объекты реального мира с определённой степенью абстракции.
Тут задача с числами. Зачем для них писать классы, если в С++ уже есть встроенные типы для чисел.
Но, конечно, для извращенцев можно придумать вариант типа этого
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
 
using namespace std;
 
static int win = 0;
static int loss = 0;
class NumberSystem
{
public:
    
    char randomStr[8];
    char OctMas[4];
    char HexMas[4];
    void initRandomStr()
    {
        for (size_t i = 0; i < 7; ++i)
            randomStr[i] = rand()%2 == 0 ? '1' : '0';
        randomStr[7] = '\0';
    }
    char* BinToHex()
    {
        int DecSum = 0;
        for (int i = 0; i < 7; i++)
        {
            if (randomStr[i] == '1') 
            {
                DecSum += (int)(1 * pow(2.0, 7 - 1 - i)); 
            }
        }
        itoa(DecSum, HexMas, 16);
        return HexMas;
    }
 
    char* BinToOct()
    {
        int DecSum = 0;
        //char* OctMas;
        for (int i = 0; i < 7; i++)
        {
            if (randomStr[i] == '1') 
            {
                DecSum += (int)(1 * pow(2.0, 7 - 1 - i)); 
            }
        }
        itoa(DecSum, OctMas, 8);
        return OctMas;
    }
 
    void LetsPlay()
    {
        while (true)
        {
            cout << "Пожалуйста, выберите основание или введите q для выхода:\n";
            cout << "o - oct (8)\n";
            cout << "h - hex (16)\n";
            cout << "q - quit \n";
            cout << "Ваш ответ  "; 
            char radix; 
            cin >> radix;
            if (radix != 'o' && radix != 'h' && radix != 'q') 
            {
                continue;
            }
            if (radix == 'q') 
            {
                cout << "Правильных ответов: " << win << endl;
                cout << "Неправильных:  " << loss << endl;
                system("pause");
                exit(1);
            } 
            /*char randomChars[8];
            int IntBin[7] = {0};
            for (int i = 0; i < 8; i++)
            {
                IntBin[i] = rand()%100;
            }*/
            initRandomStr();
 
            //itoa(IntBin[7], randomChars, 2); 
           
            cout << "Сгенерированное двоичное число  :" << randomStr << endl;
 
            if (radix == 'h') 
            {
                char answer[4];
                cout << "Ваш ответ в шестнадцатеричной системе счисления = ";
                cin >> answer;
                if (strcmp(BinToHex(),answer) == 0)
                {
                    win++;
                }
                else
                {
                    loss++;
                }
                cout << "Правильный ответ " << BinToHex() << " в шестнадцатеричной системе счисления\n";
            } 
 
            if (radix == 'o') 
            {
                char answer[4];
                cout << "Ваш ответ в восьмеричной системе счисления = ";
                cin >> answer;
                if (strcmp(BinToOct(),answer) == 0)
                {
                    win++;
                }
                else
                {
                    loss++;
                }
                cout << "Правильный ответ " << BinToOct() << " в восьмеричной системе счисления\n";
            }
        }
    }
};
 
int main()
{
    setlocale(0, "");
    srand((unsigned)time(NULL));
    NumberSystem n;
    n.LetsPlay();
    return 0;
}
milya
2 / 2 / 0
Регистрация: 15.04.2012
Сообщений: 61
27.02.2013, 00:01  [ТС]     Ошибка в коде #7
тоже исправила,работает вроде...но грамотно ли?))
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
 
using namespace std;
 
static int win = 0;
static int loss = 0;
class NumSystem
{
public:
 
    void BinToHex(const int *in, char *HexMas, int BinCount, char *answer)
    {
        int DecSum = 0;
        for (int i = 0; i < BinCount; i++)
        {
            if (in[i] != 0) 
            {
                DecSum += in[i] * pow(2.0, BinCount - 1 - i);
 
            }
        }
        itoa(DecSum, HexMas, 16);
        if (strcmp(HexMas,answer) == 0)
        {
            win++; 
        }
        else
        {
            loss++;
        }
 
    }
 
 
    void BinToOct(const int *in, char *OctMas, int BinCount, char *answer)
    {
        int DecSum = 0;
        for (int i = 0; i < BinCount; i++)
        {
            if (in[i] != 0) 
            {
                DecSum += in[i] * pow(2.0, BinCount - i - 1);
            }
        }
        itoa(DecSum, OctMas ,8);
        if ( strcmp(OctMas,answer) == 0 ) 
        {
            win++;
        }
        else {
            loss++;
        }
    }
 
    int CharToIntBin(const char &c)
    {
        return c == '1'? 1 : 0;
    }
};
 
    void main()
    {
        NumSystem two;
        setlocale(0,"");
 
        while (true)
        {
            cout << "Пожалуйста, выберите основание или введите q для выхода:\n";
            cout << "o - oct (8)\n";
            cout << "h - hex (16)\n";
            cout << "q - quit \n";
            cout << "Ваш ответ  ";
 
 
            char radix; 
            cin >> radix;
            if (radix != 'o' && radix != 'h' && radix != 'q') 
            {
                continue;
            }
            if (radix == 'q') 
            {
                cout << "Правильных ответов: " << win << endl;
                cout << "Неправильных:  " << loss << endl;
                system("pause");
                exit(1);
            }
 
 
 
            char randomChars[8];
            int IntBin[7] = {0};
            for (int i = 0; i < 8; i++)
            {
                IntBin[i] = rand()%100;
            }
 
            itoa(IntBin[7], randomChars, 2);
 
            int count = 0;
            cout << "Сгенерированное двоичное число  :" << randomChars << endl;
 
            for (int i = 0; randomChars[i] != '\0'; i++)
            {
                IntBin[i] = two.CharToIntBin(randomChars[i]);
                count++;
            }
 
            char OctMas[4];
            char HexMas[3];
 
            cout << endl;
 
            char answer[4];
            cout << "Ваш ответ в " << radix << " системе счисления = ";
            cin >> answer;
 
 
            bool isOct = true;
            switch (radix)
            {
            case 'o': two.BinToOct(IntBin, OctMas, count,answer);
                break;
            case 'h': two.BinToHex(IntBin, HexMas, count,answer);
                isOct = false; 
            }
 
 
            if (isOct) 
            {
                cout << "Правильный ответ " << OctMas << " в восьмеричной системе счисления\n";
            }
            else 
            {
                cout << "Правильный ответ " << HexMas << " в шестнадцатеричной системе счисления\n";
            }
 
        }
    }
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
27.02.2013, 00:20     Ошибка в коде #8
Ну обычно у классов присутствуют не только методы, но и члены класса.
например, класс Самолет.
У него есть:
Параметры(члены-класса)
-кол-во пассажиров,
-дальность перелёта,
-кол-во пилотов,
-запас горючего и тд.
Действия(методы-класса)
-лететь,
-приземляться,
-взлетать,
и тд.
Но, думаю, ваш способ тоже приемлем для такого задания.
По-моему, в этом задании использовать классы - тоже самое, что зажигать конфорку не спичками, а газосваркой.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2013, 17:43     Ошибка в коде
Еще ссылки по теме:

C++ Ошибка в коде
Ошибка в коде C++
C++ Ошибка в коде
C++ Ошибка в коде
Ошибка в коде C++

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

Или воспользуйтесь поиском по форуму:
milya
2 / 2 / 0
Регистрация: 15.04.2012
Сообщений: 61
01.03.2013, 17:43  [ТС]     Ошибка в коде #9
раз требуют - никуда не денешься
Yandex
Объявления
01.03.2013, 17:43     Ошибка в коде
Ответ Создать тему
Опции темы

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