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

Поиск бинарных чисел в строке символов и их преобразование - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка в double http://www.cyberforum.ru/cpp-beginners/thread721156.html
Приветствую! Недавно делая простую программу встретился с проблемой - при работе с числами типа double возникают ошибки. Пример double a(-2), b(0.1); a += b; По идеи a должно быть равно -1.9, но вот что получаю я: http://s58.***********/i162/1212/95/e7a568fc4b6c.png Как мне побороть такие ошибки? Вот код, если нужен: while (x < xend) { //x изначально равно -2
C++ Не рабочий ИИ в программе "Крестики-Нолики" Возникла проблема при написании программы "Крестики-Нолики" После трех ходов ИИ перестает ходить. Помогите мне пожалуйста в этой проблеме. #include <iostream> using namespace std; char matrix; //матрица игры bool vulnerable(int mat); bool winnable(int mat); int row, col, diag; http://www.cyberforum.ru/cpp-beginners/thread721146.html
Абстрактные структуры данных C++
добрый вечер всем. Не понимаю как реализовать функцию insert(x,p,L), где элемент х вставляется в позицию р списка L, смог добиться только удаления элементов. // linklist.cpp // список #include <iostream> #include <conio.h> using namespace std; /////////////////////////////////////////////////////////// struct link // один элемент списка { int data; // некоторые данные
Не корректно работает программа (Упорядочить элементы матрицы) C++
Условие: Дана матрица целых чисел N* M.Упорядочить элементы матрицы так чтобы четные элементы матрицы максимально плотно заняли верхнюю часть матрицы,а не четные нижнюю. Код: #include <iostream> #include <cmath> using namespace std; void sort( int **a, const int nstb, const int nstr); int main(){ cout <<"Vvedite razmer massiva\n";
C++ уплотнение памяти http://www.cyberforum.ru/cpp-beginners/thread721136.html
помогите исправить ошибку в коде. условие: Реализовать заданную стратегию управления памятью. Реализовать базовые операции управления оперативной памятью. - Выделение блока памяти заданного размера; - высвобождение выбранного блока; - уплотнение памяти. //#include "stdafx.h" #include <stdio.h> #include<string.h>
C++ Прочитать неограниченное количество строк, а после нажатия Enter выйти из цикла Здравствуйте. Столкнулся с такой проблемой: необходимо прочитать неограниченное количество строк, а после нажатия Enter выйти из цикла. Делаю так: #include <iostream> #include <string> using std::cin; using std::cout; using std::string; using std::endl; int main (){ подробнее

Показать сообщение отдельно
Fareiro
15 / 15 / 1
Регистрация: 06.12.2012
Сообщений: 130
10.12.2012, 03:25  [ТС]     Поиск бинарных чисел в строке символов и их преобразование
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
143
144
145
146
147
148
149
150
#include <cstdio> 
#include <cstdlib> 
 
using namespace std; 
 
enum STATE { 
   NN, 
   SIGN, 
   BNUM, 
   CCOMA, 
   ENUM 
}; 
 
enum CTYPE { 
   DIGIT, 
   MINUS, 
   COMA, 
   OTHER 
}; 
 
CTYPE getCTYPE(int character) { 
   switch (character) { 
      case '0': return DIGIT; 
      case '1': return DIGIT; 
      case '-': return MINUS; 
      case ',': return COMA; 
      default: return OTHER; 
   } 
} 
 
int main() { 
   // переменная для суммы бинарных чисер 
   double sum = 0.0; 
 
   // переменная для считывания чисел
   double num; 
   double tnum; 
 
   // определение, был ли знак минуса перед числом
   bool minus; 
   int c; 
 
   // состояние в котором находимся
   STATE state; 
   // начальное положение
   state = NN; 
    
   // строка заканчивается  ';'
   int end_character = ';'; 
   // все до первого ';'
   while ( (c = getchar()) != end_character) { 
    
      switch (state) { 
         case NN: 
            switch (getCTYPE(c))
     { 
               case MINUS: 
            minus = true; 
            num = 0.0; 
            state = SIGN; 
            break; 
               case DIGIT: 
            minus = false; 
            num = (c == '0' ? 0.0 : 1.0); 
            state = BNUM; 
            break; 
            }; break; 
 
    //----------------------------------------------------------     
    case SIGN: 
            switch (getCTYPE(c)) 
    { 
               case DIGIT: 
            state = BNUM; 
            num = num * 2 + (c == '0' ? 0.0 : 1.0); 
            break; 
               case OTHER: 
            state = NN; break; 
            }; break; 
         
    //----------------------------------------------------------
 
    case BNUM: 
            switch (getCTYPE(c)) { 
               case MINUS: 
            minus = true; 
            num = 0.0; 
            state = SIGN; 
            break; 
               case DIGIT: 
            num = num * 2 + (c == '0' ? 0.0 : 1.0); 
            break; 
               case COMA: tnum = 1.0 / 2.0; state = CCOMA; break; 
               case OTHER: state = NN; break; 
            }; break; 
 
   //-----------------------------------------------------------
 
         case CCOMA: 
            switch (getCTYPE(c)) { 
               case MINUS: 
            minus = true; 
            num = 0.0; 
            state = SIGN; 
            break; 
               case DIGIT: 
            num += (c == '0' ? 0.0 : tnum); 
            tnum /= 2; 
            state = ENUM; 
            break; 
               case COMA: 
            state = NN; 
            break; 
               case OTHER: 
            state = NN; 
            break; 
            }; break; 
 
  //------------------------------------------------------------
         case ENUM: 
            switch (getCTYPE(c)) { 
               case MINUS: 
            sum = minus ? sum - num : sum + num; 
            minus = true; 
            num = 0.0; 
            state = SIGN; 
            break; 
               case DIGIT: 
            num += tnum; 
            tnum /= 2; break; 
               case COMA: 
            sum = minus ? sum - num : sum + num; 
            state = NN; 
            break; 
               case OTHER: 
            sum = minus ? sum - num : sum + num; 
            state = NN;
            break; 
            }; break; 
      }; 
   } 
   if (state == ENUM) { 
      if (minus) 
         sum -= num; 
      else 
         sum += num; 
   } 
   printf("%lf\n", sum); 
   return 0; 
}
Нужна помощь в переписи данного кода в функции или в нечто другое. Буду весьма благодарен за помощь. Заранее спасибо.
 
Текущее время: 17:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru