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

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

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

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

08.05.2012, 22:59. Просмотров 1041. Ответов 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++
Здравствуйте, уважаемые программисты. Подскажите пожалуйста, а то в силу своей неопытности не могу понять в чем проблема. Задание стоит...

Ошибка при сравнении введённых данных - C++
Я очень долго пытался решить эту трабл но так и не понял даже ее суть( Суть данного компонента в том что есть 2 массива из которых...

Ошибка при сравнении типа char - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace std; int main(int argc, char...

Ошибка при сравнении элемента динамического массива с числом - C++
Здравствуйте! При попытке сравнения элемента двухмерного динамического массива с числом возникает критическая ошибка в момент выполнения...

Ошибка ввода символов строки, при количестве символов кратных 8 - C++
Здравствуйте, уважаемые форумчане! Разбираясь с механизмом ввода и динамическим выделением памяти для строк решил написать такой...

Ошибка в поэлементном сравнении элементов матрицы - C++
не правильно сравнивает, помогите исправить. что с условием сделать, чтобы сравнивало поелементно каждую строку. Т.е. при сравнении 1 и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
grizlik78
Эксперт С++
1908 / 1440 / 111
Регистрация: 29.05.2011
Сообщений: 2,996
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
Сообщений: 392
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));
С делением облажался). А символ сначала стоял в одинарных кавычках, но строка тоже была в одинарных и выдавало ошибку. Спасибо за помощь запомнил что символ в одинарных кавычках.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2012, 01:24
Привет! Вот еще темы с ответами:

Ошибка в сравнении глобальных переменных в функциях - C++
Здравствуйте! Я всю жизнь писал на Pascal и с С столкнулся впервые пару дней назад, когда начал эксперементировать с Arduino. Поискал...

Зацикливание при сравнении строк - C++
Добрый вечер. У меня возникла проблема при сравнивании строк, после сравнивания происходит расчет по циклу и далее по идее должно...

Проблемы с кодировкой при сравнении строк - C++
Здравствуйте! Мне, нужно сравнить две строки: одну получаю get запросом(на сайте кодировка windows 1251), а вторая указывается...

Зацикливание при сравнении двоичных чисел - C++
На вход идет текстовый файл с 1 целым числом. Это число нужно перевести в двоичную систему счисления и биты сдвигать вправо до тех...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.05.2012, 01:24
Ответ Создать тему
Опции темы

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