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

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

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

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

26.02.2013, 21:22. Просмотров 325. Ответов 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++
Всем привет. Ниже дана программа для определения счастливого билета. Помогите понять,почему программа работает не правильно. #include...

Ошибка в коде С++ - C++
Помогите пожалуйста, налажал в цикле. Место где начинается цикл не работает, а должно в цикле взять цифры из файла которые написаны в...

C++ ошибка в коде - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main(){ double a=1.2; double b=2.7; cout&lt;&lt; avg (a, b);...

Ошибка в коде - C++
Кто знает в чём дело? Скинули файл. Код без ошибок, а компиляторы ругаются. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Ошибка в коде - C++
В ходе выполнения работы необходимо создать программу, которая определяет и инициализирует двумерный массив целых значений и затем...

Ошибка в коде - C++
Дорогие программисты! Помогите пожалуйста юному прогеру понять в чем трабла ) сабж: #include &lt;iostream&gt; using namespace std; ...

Ошибка в коде - 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
5416 / 4812 / 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++
#include &lt;stdio.h&gt; void main() { int num; scanf(&quot;%x&quot;,&amp;num); printf(&quot;%o\n&quot;,num); printf(&quot;%x\n&quot;,num«2); -тут ошибка(красным...

Ошибка в коде - C++
Всем привет! Пишу программу на языке с++ . Надо найти общее количество отрицательных элементов в массивах Х, Y, Z. Вот что я...

Ошибка в коде - C++
Что это за конченый Джини???

ошибка в коде - C++
// WhileDemo — введите счетчик цикла. // Программа выводит количество выполненных // циклов while #include: &lt;stdio.h&gt; # include: &lt;...


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

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

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