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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Указатель на функцию и параметры по умолчанию http://www.cyberforum.ru/cpp-beginners/thread795676.html
Приветствую! Есть такая задача - мне нужно передавать в специальную функцию массив и указатель на функцию. Функции эти для сортировки, и имеют вид примерно такой: void s_sortname(char*, uint) ...
C++ Прокомментировать код Добрый вечер! Есть вопросы по коду... не понимаю некоторые строки. Их выделю розовым цветом. Буду очень благодарна!!! #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <io.h>... http://www.cyberforum.ru/cpp-beginners/thread795665.html
C++ Написать комментарии к коду
Добрый вечер! Есть вопросы по коду... не понимаю некоторые строки. Их выделю красным цветом. Буду очень благодарна!!! #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <io.h>...
Конструкторы и деструкторы C++
Напишите простейшие примеры объявления и определения конструкторов и деструкторов. Желательно, чтобы были примеры с различными типами данных
C++ Угадать задуманное пользователем число http://www.cyberforum.ru/cpp-beginners/thread795627.html
Описание словами: (я загадала 3) Прога пишет "Введите число с которого начать отсчет" 2 "Введите число которым закончить отсчет" 5 "Это число 4. Количество шагов = 1 1 - больше 2 - меньше 3-...
C++ Остановка второго потока останавливает также первый поток по непонятной причине Изучаю потоки и по ходу дела экспериментирую с ними в Visual Studio. Накидал код, который в первом потоке приостанавливает и возобновляет второй поток 1000 раз. А второй поток также себя... подробнее

Показать сообщение отдельно
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
26.02.2013, 21:32
интересный подход - объявлять функцию 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";
            }
 
        }
    }
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru