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

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

Восстановить пароль Регистрация
 
Manula93
1 / 1 / 0
Регистрация: 08.04.2012
Сообщений: 100
08.05.2012, 22:59     Ошибка при сравнении символов #1
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
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
 Аватар для edward_jonson
157 / 157 / 25
Регистрация: 23.02.2011
Сообщений: 388
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     Ошибка при сравнении символов
Ответ Создать тему
Опции темы

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