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

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

Войти
Регистрация
Восстановить пароль
 
Manula93
1 / 1 / 0
Регистрация: 08.04.2012
Сообщений: 100
#1

Ошибка при сравнении символов - C++

08.05.2012, 22:59. Просмотров 1001. Ответов 3
Метки нет (Все метки)

1) НЕ могу понять в чем ошибка при сравнении символов вот пример одной:

Энтропия.cpp(18): error C2446: ==: нет преобразования "const char *" в "int"
Не существует контекста, в котором такое преобразование возможно
Энтропия.cpp(18): error C2040: ==: "int" отличается по уровням косвенного обращения от "const char [2]"
2) Что за ошибка
Энтропия.cpp(87): error C2017: недопустимая escape-последовательность
Энтропия.cpp(87): error C2064: результатом вычисления фрагмента не является функция, принимающая 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 <stdafx.h>
#include <iostream>
#include <iomanip>
#include <math.h>
#include <windows.h>
using namespace std;
using namespace System;
 
double *  VeroyatnostiXY(char *X, char *Y)
{
    double ka,kb,kc,kd,a,b,c,d,HX,HY,*massiv;
    int i;
      for(i=0;i<35;i++)
      {
        
        if(X[i]=="a")
        ka++;
        if(X[i]=="b")
        kb++;
        if(X[i]=="c")
        kc++;
        if(X[i]=="d")
        kd++;
      }
      cout <<"---------------------------------------------------"<<endl;
      cout <<"|"<<" Sostoyanie                " << "|" << setw(5) << "a" << "|" << setw(5) <<"b"<<"|"<< setw(5) << "c" << "|" <<setw(5) <<"d"<<"|"<<"vsego"<< endl;
      cout <<"|"<<" Chislo nabludenii dlya X  " << "|" << setw(5) << ka << "|" << setw(5) << kb << "|" << setw(5)<< kc << "|" << setw(5) << kd << "|"<<setw(5)<<ka+kb+kc+kd <<"|"<< endl;
 
      for(i=0;i<35;i++)
      {
        if(Y[i]=="a")
        a++;
        if(Y[i]=="b")
        b++;
        if(Y[i]=="c")
        c++;
        if(Y[i]=="d")
        d++;
      }
      cout <<"|"<<" Chislo nabludenii dlya Y  " << "|" << setw(5) << a << "|" << setw(5) << b << "|" << setw(5)<< c << "|" << setw(5) << d << "|"<< setw(5)<<a+b+c+d<<"|"<< endl;
      cout <<"|"<<" Veroyatnost dlya X        " << setw(5) << ka/(ka+kb+kc+kd) << "|" << setw(5) << kb/(ka+kb+kc+kd) << "|" << setw(5)<< kc /(ka+kb+kc+kd)<< "|" << setw(5) << kd/(ka+kb+kc+kd) << "|"<<setw(5)<<ka/(ka+kb+kc+kd)+kb/(ka+kb+kc+kd)+kc/(ka+kb+kc+kd)+ kd/(ka+kb+kc+kd)<<"|"<< endl;  
      cout <<"|"<<" Veroyatnost dlya Y        " << setw(5) << a/(a+b+c+d) << "|" << setw(5) << b/(a+b+c+d) << "|" << setw(5)<< c /(a+b+c+d)<< "|" << setw(5) << d/(a+b+c+d) << "|"<<setw(5)<<a/(a+b+c+d)+b/(a+b+c+d)+c/(a+b+c+d)+ d/(a+b+c+d)<<"|"<< endl;  
      cout<<"------------------------------------------------------\n\n"<<endl;
      HX=ka/(ka+kb+kc+kd) * ( log(ka/(ka+kb+kc+kd)) / log(2.0)  )+ kb/(ka+kb+kc+kd) * ( log(kb/(ka+kb+kc+kd)) / log(2.0)  )+kc/(ka+kb+kc+kd) * ( log(kc/(ka+kb+kc+kd)) / log(2.0)  )+kd/(ka+kb+kc+kd) * ( log(kd/(ka+kb+kc+kd)) / log(2.0)  );
      HY=a/(a+b+c+d) * ( log(a/(a+b+c+d)) / log(2.0)  )+ b/(a+b+c+d) * ( log(b/(a+b+c+d)) / log(2.0)  )+c/(a+b+c+d) * ( log(c/(a+b+c+d)) / log(2.0)  )+d/(a+b+c+d) * ( log(d/(a+b+c+d)) / log(2.0)  );
      cout << "Entropia X ="<< HX <<endl;
      cout << "Entropia Y ="<< HY <<endl;
      massiv[0]=HX;
      massiv[1]=HY;
      return massiv;
}
void  EntropiiXY(char *X, char *Y, float * massiv)
{
    float HXY=0,HYX=0,ka,kb,kc,kd,a,b,c,d,nxy,nyx;
    int i,ch1,ch2;
     
     for(i=0;i<35;i++)
     {
        if(X[i]=="a")
        ka++;
        if(X[i]=="b")
        kb++;
        if(X[i]=="c")
        kc++;
        if(X[i]=="d")
        kd++;
        if(Y[i]=="a")
        a++;
        if(Y[i]=="b")
        b++;
        if(Y[i]=="c")
        c++;
        if(Y[i]=="d")
        d++;
     }
     for(ch1=(int)"a";ch1<=(int)"d";ch1++)
         for (ch2=(int)"a";ch2<=(int)"d";ch2++)
         {
             for(i=0;i<35;i++)
             {
                 if((int)X[i]==ch1 && (int)Y[i]==ch2)
                     nxy++;
             }
             if(ch2==(int)"a")
                 HXY=HXY+(-a\(a+b+c+d) * (nxy/a) * log(nxy/a)/log(2.0));
             if(ch2==(int)"b")
                 HXY=HXY+(-b\(a+b+c+d) * (nxy/b) * log(nxy/b)/log(2.0));
             if(ch2==(int)"c")
                 HXY=HXY+(-c\(a+b+c+d) * (nxy/c) * log(nxy/c)/log(2.0));
             if(ch2==(int)"d")
                 HXY=HXY+(-d\(a+b+c+d) * (nxy/d) * log(nxy/d)/log(2.0));
 
         }
     
      for(ch1=(int)"a";ch1<=(int)"d";ch1++)
         for (ch2=(int)"a";ch2<=(int)"d";ch2++)
         {
             for(i=0;i<35;i++)
             {
                 if((int)X[i]==b && (int) Y[i]==c)
                     nyx++;
             }
             if(ch2==(int)"a")
                 HYX=HYX+(-ka\(ka+kb+kc+kd) * (nyx/ka) * log(nyx/ka)/log(2.0));
             if(ch2==(int)"b")
                 HYX=HYX+(-kb\(ka+kb+kc+kd) * (nyx/kb) * log(nyx/kb)/log(2.0));
             if(ch2==(int)"c")
                 HYX=HYX+(-kc\(ka+kb+kc+kd) * (nyx/kc) * log(nyx/kc)/log(2.0));
             if(ch2==(int)"d")
                 HYX=HYX+(-kd\(ka+kb+kc+kd) * (nyx/kd) * log(nyx/kd)/log(2.0));
         }
 
         cout<<"H(X/Y)="<<HXY<<endl;
         cout<<"H(Y/X)="<<HYX<<endl;
         cout<<"Entropia nezavisimih sistem ="<< massiv[0]+massiv[1]<< endl;
         cout<<"Entropia zavisimih sistem ="<< massiv[0]+ HYX<< endl;
         cout<<"Vzaimnaya informaciya =" << massiv[0]-HXY <<endl;
         cout<<"Obyem informacii Q(X)="<<(ka+kb+kc+kd)*2<< endl;
         cout<< "Obyem informacii Q(Y)=" <<(a+b+c+d)*2<< endl;
}
 
 
int main()
{
    system ("cls");
    char *X;
    char *Y;
    int i;
    double *massiv;
      cout << " Vvedite X" << endl; 
      for(i=0;i<35;i++)
      cin >> X[i];
      cout << " Vvedite Y" << endl; 
      for(i=0;i<35;i++)
      cin >> Y[i];
      
     massiv=VeroyatnostiXY (X,Y);
     EntropiiXY(X,Y,massiv);
      system ("pause");
     return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2012, 22:59     Ошибка при сравнении символов
Посмотрите здесь:

C++ Массивы. Движение при сравнении значений индекса
C++ Проблемы с кодировкой при сравнении строк
Не срабатывает условие при сравнении строк типа string C++
Ошибка при сравнении элемента динамического массива с числом C++
Зацикливание при сравнении строк C++
Ошибка при сравнении типа char C++
Ошибка в сравнении символов C++
C++ Ошибка в сравнении глобальных переменных в функциях
C++ Зацикливание при сравнении двоичных чисел
Не верно работает strcmp при сравнении двух слов C++
C++ Ошибка при сравнении введённых данных
Ошибка в поэлементном сравнении элементов матрицы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
08.05.2012, 23:24     Ошибка при сравнении символов #2
Цитата Сообщение от Manula93 Посмотреть сообщение
C++
1
if(X[i]=="a")
C++
1
if(X[i]=='a')
И так далее.


Цитата Сообщение от Manula93 Посмотреть сообщение
C++
1
HXY=HXY+(-a\(a+b+c+d) * (nxy/a) * log(nxy/a)/log(2.0));
Что означает операция '\' ? Деление?
C++
1
HXY=HXY+(-a/(a+b+c+d) * (nxy/a) * log(nxy/a)/log(2.0));
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 390
08.05.2012, 23:32     Ошибка при сравнении символов #3
Там, где работаете непосредственно с символом, нужны ' ', а не " "
Manula93
1 / 1 / 0
Регистрация: 08.04.2012
Сообщений: 100
09.05.2012, 01:24  [ТС]     Ошибка при сравнении символов #4
Цитата Сообщение от grizlik78 Посмотреть сообщение
C++
1
if(X[i]=='a')
И так далее.



Что означает операция '\' ? Деление?
C++
1
HXY=HXY+(-a/(a+b+c+d) * (nxy/a) * log(nxy/a)/log(2.0));
С делением облажался). А символ сначала стоял в одинарных кавычках, но строка тоже была в одинарных и выдавало ошибку. Спасибо за помощь запомнил что символ в одинарных кавычках.
Yandex
Объявления
09.05.2012, 01:24     Ошибка при сравнении символов
Ответ Создать тему
Опции темы

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