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

Ќе считает произведение разных типов данных - C++

¬осстановить пароль –егистраци€
 
 
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
15.04.2014, 08:31     Ќе считает произведение разных типов данных #1
Ќикак не могу разобратьс€, почему программа не хочет считать произведение.
¬от часть кода:
C++ (Qt)
1
2
3
4
for (i=0;i<N;i++) 
 {
  p[i]=1.0*ws[i]/N;
 }
где p[i]-динамический массив типа double
ws[i] массив типа long
N -переменна€ типа long.
я уже и так и этак переписывала этот код, и дополнительные переменные добавл€ла, но после i=2 p[i]=0.0 и хоть бейс€ головой об стенку . ’от€ массив ws{1,1,1,1,1,1,1,1,1,2,2,2}, N=12.

¬ целом рабочий код € приведу ниже, комментарии на русском, в компил€торе читаемы, а при переносе в блокнот и в ворд нечитаемы, поэтому прошу не ругатьс€, все комментарии переписывать, это с ума сойти, прошу лишь загрузить в компил€тор, чтобы проверить, что код реально рабочий, и то может и не понадобитс€ код вовсе, а знающим люд€м итак будет пон€тно в чем причина. ѕробовала воспользоватьс€ командами xxx_cast<type_to>, но в учебном компил€торе почему то отказываетс€ подключатьс€ библиотека iostream .
C++ (Qt)
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
 
#define n 69 //™ЃЂ®з•б⥁ б®ђҐЃЂЃҐ Ґ **£Ђ®©б™Ѓђ *Ђд*Ґ®в• °•І гз•в* а•£®бва* c 32 ѓЃ 127 ™Ѓ§ б®ђҐЃЂ*  в*°Ђ®жл ASCII
 
void swap (long *w, char *CHAR, long i, long j) //Ѓ°ђ•* нЂ•ђ•*вЃҐ ђ*бᮥ*
 {
  long t; char T;
  t=w[i];
  w[i]=w[j];
  w[j]=t;
  T=CHAR[i];
  CHAR[i]=CHAR[j];
  CHAR[j]=T;
 }
 
void shake (long *x, char *CHAR) //§Ђп гѓЃап§Ѓз•*®п ђ*бᮥ* Ґ•аЃпв*Ѓбв•© ѓЃ ҐЃІа*бв**®о ®бѓЃЂмІг•ђ и•©™•а*го бЃав®аЃҐ™г
  {
   long L,R,N,S,j,i;
   L=0;  //Ђ•Ґ*п £а**®ж* ђ*бᮥ*
   R=n-1;  //ѓа*Ґ*п £а**®ж* ђ*бᮥ*
   N=n-1;    //™ЃЂ®з•б⥁ нЂ•ђ•*вЃҐ ђ*бᮥ* (*гђ•а*ж®п б 0)
   while (L<R)
   {
    for(j=R; j>L; --j)  //ѓаЃеЃ§ бѓа*Ґ* **Ђ•ҐЃ
    {
     if (x[j]<x[j-1])
     {
      swap(x,CHAR,j,j-1);
      N=j;
     }
    }
    L=N;
     for (j=L; j<R; ++j)  //ѓаЃеЃ§ бЂ•Ґ* **ѓа*ҐЃ
     {
      if (x[j]>x[j+1])
      {
       swap(x,CHAR,j,j+1);
       N=j;
      }
     }
     R=N;
   }
   for (i=0,S=1;i<n-2;++i)
   {
   if (x[i]>x[i+1])
     S++;
   }
  if (S>1)
   {
    printf("\n Ои®°™*, ђ*бᮥ *• ЃвбЃав®аЃҐ**, ™ЃЂ®з•б⥁ б•а®© °ЃЂми• 1 \n");
    getch();
   }
  }
 
 
 
 
void main()
{
 FILE  *f;
 char  key, ch,
    fname[50], //ђ*бᮥ §Ђп еа**•*®п ®ђ•*® д*©Ђ*
    CHAR[n],  //ђ*бᮥ Ґб•е б®ђҐЃЂЃҐ **£Ђ®©б™Ѓ£Ѓ *Ђд*Ґ®в*
    **C,//ђ*ва®ж* §Ђп еа**•*®п нЂ•ђ•*в*а*ле ™Ѓ§ЃҐ
    *CHAR_S; //ђ*бᮥ §Ђп еа**•*®п б®ђҐЃЂЃҐ Ґбва•з*ой®ебп Ґ д*©Ђ•
 long  i,j,m,N, //ѓ•а•ђ•**л• бз•вз®™®
    w[n], //з*бвЃвл ѓЃпҐЂ•*®п б®ђҐЃЂЃҐ Ґ в•™бв•
    *ws,//ЃвбЃав®аЃҐ***л© ђ*бᮥ з*бвЃв
    *L; //ђ*бᮥ §Ђ®** ™Ѓ§ЃҐле бЂЃҐ
 double *p,//ђ*бᮥ Ґ•аЃпв*Ѓбв•© ѓЃпҐЂ•*®п б®ђҐЃЂ* Ґ §***Ѓђ в•™бв•
    Hmax=0.0, //ђ*™б®ђ*Ђм**п н*ваЃѓ®п в•™бв*
    H=0.0,//н*ваЃѓ®п Ш•**Ѓ**
    s;//™Ѓ*ваЃЂм ѓа*Ґ®Ђм*Ѓбв® а*бз•в* ђ*бᮥ* Ґ•аЃпв*Ѓбв•©
 memset(CHAR,0 ,sizeof(CHAR));
 for(i=0;i<=32;i++)//І*ѓЃЂ*•*®• ђ*бᮥ* ™Ѓ§*ђ® б®ђҐЃЂЃҐ бЃ£Ђ*б*Ѓ в*°Ђ®ж• ASCII °•І гз•в* а•£®бва*
 {
  CHAR[i]=32+i;
 }
 for(i=33;i<n;i++)
 {
  CHAR[i]=58+i;
 }
 
 do
 {
  clrscr();
  m=0;  //І**з•*®п Ѓ°*гЂповбп §Ђп ®б™Ђоз•*®п Ѓи®°Ѓ™ ѓа® Ѓв™алв®® §аг£Ѓ£Ѓ д*©Ђ*
  N=0; //™ЃЂ®з•б⥁ б®ђҐЃЂЃҐ Ґ в•™бв•
  memset(w,0.0,sizeof(w));
  memset(fname,0,sizeof(fname));
  printf ("\n ВҐ•§®в• **®ђ•*ЃҐ**®• д*©Ђ* ® ѓгвм ™ *•ђг. \n");
  fgets(fname,sizeof(fname),stdin);
  m=strlen(fname);
  fname[m-1]=0;
  f=fopen(fname,"rt") ;
  if (f==NULL)
  {
   printf("\n Ои®°™* Ѓв™алв®п д*©Ђ*! \n");
   getch();
   exit(0);
  }
  while(!feof(f))
  {
   ch=getc(f);    //бз®влҐ**®• б®ђҐЃЂЃҐ
   if((ch>=65)&&(ch<=90)) //•бЂ® І*£Ђ*Ґ**п °г™Ґ* вЃ ®£*Ѓа®аг•ђ а•£®бва
    i=ch-26;
   else
   {
    for (j=0;j<n;j++)
     if (ch==CHAR[j])
     {
      i=j;
      break;
     }
   }
   w[i]+=1;
 }
 
 shake(w,CHAR);//бЃав®аЃҐ™* ђ*бᮥ* з*бвЃв
 
 for (i=0; i<n; i++)
 {
  if (w[i]!=0)
   N++;
 }
 
 ws=(long *)malloc(N*sizeof(long));
 if (ws==NULL)
 {
  puts("М*бᮥ ws *• бЃІ§**!");
  getch();
  return;
 }
 
 CHAR_S=(char *)malloc(N*sizeof(char));
 if (CHAR_S==NULL)
 {
  puts("М*бᮥ CHAR_S *• бЃІ§**!");
  getch();
  return;
 }
 j=0;
 for (i=n-N; i<n; i++)//™Ѓѓ®аЃҐ**®• б®ђҐЃЂЃҐ б з*бвЃвЃ© ѓЃпЂҐ•*®п >0 Ґ §®**ђ®з•б™®© ђ*бᮥ
 {
   ws[j]=w[i];
   CHAR_S[j]=CHAR[i];
   j++;
 }
 
 p=(double *)malloc(N*sizeof(double)) ;
 if (p==NULL)
 {
  puts("М*бᮥ p *• бЃІ§**!");
  getch();
  return;
 }
 
 for (i=0;i<N;i++) //а*ббз•в н*ваЃѓ®® д*©Ђ*
 {
  p[i]=1.0*ws[i]/N;//І*ѓЃЂ*•*®• ђ*бᮥ* Ґ•аЃпв*Ѓбв•© ѓЃпҐЂ•*®п б®ђҐЃЂЃҐ/
 }
 
 //ЃбҐЃ°Ѓ¶§•*®• ѓ*ђпв® Ѓв бЃІ§***ле §®**ђ®з•б™®е ђ*бᮥЃҐ
 for (i=0;i<N;i++)
 
 free(p);
 free(ws);
 
 getch();
 fclose(f);
 puts ("\n Ов™алвм §аг£Ѓ© д*©Ђ? (Н•в=Esc)");
 key=getch();
 }
 while (key!=27);//ESC
}
“екстовый файл приложен
¬ложени€
“ип файла: txt NEW.TXT (14 байт, 10 просмотров)
Similar
Ёксперт
41792 / 34177 / 6122
–егистраци€: 12.04.2006
—ообщений: 57,940
15.04.2014, 08:31     Ќе считает произведение разных типов данных
ѕосмотрите здесь:

C++ криво считает произведение
сложение разных типов C++
«асечь врем€ сортировки разных типов данных C++
C++ ћатрица из разных типов
—оздание шаблонной функции дл€ работы с массивами разных типов данных C++
ѕосле регистрации реклама в сообщени€х будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
–егистраци€: 13.12.2012
—ообщений: 2,109
15.04.2014, 08:42     Ќе считает произведение разных типов данных #2
C++
1
2
3
4
for (i=0;i<N;i++) 
 {
  p[i]=1.0*(double)ws[i]/N;
 }
ƒобавлено через 10 секунд
если проблема реально в этом
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
15.04.2014, 08:46  [“—]     Ќе считает произведение разных типов данных #3
»справила, но все равно не считает после i=2
aLarman
636 / 557 / 89
–егистраци€: 13.12.2012
—ообщений: 2,109
15.04.2014, 09:27     Ќе считает произведение разных типов данных #4
÷итата —ообщение от ”ль€ниус ѕосмотреть сообщение
’от€ массив ws{1,1,1,1,1,1,1,1,1,2,2,2}
¬ы уверены в этом?
÷итата —ообщение от ”ль€ниус ѕосмотреть сообщение
N=12.
и в этом тоже?, вывод делали?

а как провер€ли содержание массива p[] ?
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
15.04.2014, 09:46  [“—]     Ќе считает произведение разных типов данных #5
да уверена, смотрела под отладчиком все данные смотрела под отладчиком при i=4 счет расчет прекращаетс€ (в ws лишнюю 1 нарисовала - там считаетс€ программно).
aLarman
636 / 557 / 89
–егистраци€: 13.12.2012
—ообщений: 2,109
15.04.2014, 10:00     Ќе считает произведение разных типов данных #6
перед этим кодом N = 12, создаем массив ws на 12 long и CHAR_S на 12 символов
C++
1
2
3
4
5
6
7
j=0;
 for (i=n-N; i<n; i++)//тут бежим по циклу, с i = 69 - 12 = 57 до i < 69 обращемс€ к ws и CHAR_S по индексу i - таких индексов нет - неопределенное поведение, дальше смотреть не стал
 {
   ws[j]=w[i];
   CHAR_S[j]=CHAR[i];
   j++;
 }
ƒобавлено через 2 минуты
C++
1
2
3
4
for (i=0;i<N;i++)
 
 free(p);
 free(ws);
надеюсь то ¬ы тут удалил какую то строчку, иначе получаетс€ инструкци€ free(p) буде выполн€тьс€ в цикле - снова падение
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
15.04.2014, 10:16  [“—]     Ќе считает произведение разных типов данных #7
÷итата —ообщение от aLarman ѕосмотреть сообщение
перед этим кодом N = 12, создаем массив ws на 12 long и CHAR_S на 12 символов
 од C++
j=0;
*for (i=n-N; i<n; i++)//тут бежим по циклу, с i = 69 - 12 = 57 до i < 69 обращемс€ к ws и CHAR_S по индексу i - таких индексов нет - неопределенное поведение, дальше смотреть не стал
*{
* *ws[j]=w[i];
* *CHAR_S[j]=CHAR[i];
* *j++;
*}
«десь все правильно, копирую 12 последних символов. я обращаюсь к ws[j] и CHAR_S[j], а в конце цикла увеличиваю j++

ƒобавлено через 1 минуту
÷итата —ообщение от aLarman ѕосмотреть сообщение
 од C++

for (i=0;i<N;i++)
free(p);
*free(ws);
надеюсь то ¬ы тут удалил какую то строчку, иначе получаетс€ инструкци€ free(p) буде выполн€тьс€ в цикле - снова падение
ƒа, вы правы, строка
C++ (Qt)
1
for (i=0;i<N;i++)
должна быть удалена, но это не вли€ет на расчет p[i].
aLarman
636 / 557 / 89
–егистраци€: 13.12.2012
—ообщений: 2,109
15.04.2014, 10:19     Ќе считает произведение разных типов данных #8
C++
1
2
3
4
5
6
7
8
for (i=0;i<N;i++) //а*ббз•в н*ваЃѓ®® д*©Ђ*
        {
            p[i]=1.0*ws[i]/N;//І*ѓЃЂ*•*®• ђ*бᮥ* Ґ•аЃпв*Ѓбв•© ѓЃпҐЂ•*®п б®ђҐЃЂЃҐ/
        }
        for (i=0;i<N;i++) //а*ббз•в н*ваЃѓ®® д*©Ђ*
        {
            cout<<p[i]<<endl;//І*ѓЃЂ*•*®• ђ*бᮥ* Ґ•аЃпв*Ѓбв•© ѓЃпҐЂ•*®п б®ђҐЃЂЃҐ/
        }
у мен€ почему все работает...
ћиниатюры
Ќе считает произведение разных типов данных  
aLarman
636 / 557 / 89
–егистраци€: 13.12.2012
—ообщений: 2,109
15.04.2014, 10:22     Ќе считает произведение разных типов данных #9
÷итата —ообщение от ”ль€ниус ѕосмотреть сообщение
смотрела под отладчиком все данные смотрела под отладчиком
может стоит сделать ¬ывод массива p

ƒобавлено через 1 минуту
÷итата —ообщение от ”ль€ниус ѕосмотреть сообщение
«десь все правильно, копирую 12 последних символов. я обращаюсь к ws[j] и CHAR_S[j], а в конце цикла увеличиваю j++
да мой кос€к, что то € перестаралс€
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
15.04.2014, 10:39  [“—]     Ќе считает произведение разных типов данных #10
ћожет у мен€ компил€тор кривой . ѕотому что потом € считаю энтропию файла и на самом деле p[i] равно нулю и ругаетс€ что не может посчитать логарифм нул€ . я использую —и++Builder. ѕод отладчиком смотрю двенадцать раз, потому как не выводит динамический массив как статический одной строкой

ƒобавлено через 2 минуты
÷итата —ообщение от aLarman ѕосмотреть сообщение
да мой кос€к, что то € перестаралс€
спасибо что пытаетесь помочь

ƒобавлено через 13 минут
÷итата —ообщение от ”ль€ниус ѕосмотреть сообщение
я использую —и++Builder.
„то попало написала, использую C++ Borland запущенный из DOSBox
DrOffset
6420 / 3794 / 877
–егистраци€: 30.01.2014
—ообщений: 6,584
15.04.2014, 10:53     Ќе считает произведение разных типов данных #11
÷итата —ообщение от ”ль€ниус ѕосмотреть сообщение
использую C++ Borland запущенный из DOSBox

Ќе по теме:

ѕозвольте один совет. ≈сли есть хоть малейша€ возможность сменить компил€тор при написаннии заданий - сделайте это.
ƒл€ большей пон€тности почему: вот пришли вы сдавать на права, а вам вместо автомобил€ предлагают управл€ть конной повозкой. ћожет быть где-то это и пригодитс€, но ездить на атомобиле вы точно не научитесь. ƒл€ справки: компил€тор этот 1992 года выпуска, первый международный стандарт —++ вышел только в 1998. ѕервый нормальный компил€тор, который его поддерживал, по€вилс€ только в начале 2000х.

”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
15.04.2014, 10:56  [“—]     Ќе считает произведение разных типов данных #12
÷итата —ообщение от DrOffset ѕосмотреть сообщение
ѕозвольте один совет.
посоветуйте программу, если можно бесплатную...
DrOffset
6420 / 3794 / 877
–егистраци€: 30.01.2014
—ообщений: 6,584
15.04.2014, 11:01     Ќе считает произведение разных типов данных #13
÷итата —ообщение от ”ль€ниус ѕосмотреть сообщение
посоветуйте программу, если можно бесплатную...
Ќапример, CodeBlocks качать mingw-setup.
aLarman
15.04.2014, 11:49
  #14

Ќе по теме:

вижа - Microsoft Visual Studio

ƒобавлено через 20 секунд
gсс

”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
29.04.2014, 10:14  [“—]     Ќе считает произведение разных типов данных #15
„то-то у мен€ там не скомпилировалось, не нашел какую то стандартную библиотеку. ѕришлось Ѕилдер —и++ запустить под ’– без эмул€тора и все пошло . ј ща столкнулась с проблемой, что ƒќ—бокс под мою 8.1 не хочет идти, система умирает ((.
DrOffset
6420 / 3794 / 877
–егистраци€: 30.01.2014
—ообщений: 6,584
29.04.2014, 18:04     Ќе считает произведение разных типов данных #16
÷итата —ообщение от ”ль€ниус ѕосмотреть сообщение
„то-то у мен€ там не скомпилировалось
Ќельз€ так быстро отступать
¬сего-то нужно было немного к стандартному виду привести. ќшибки не исправл€л (они там есть), только код сделал компилируемым.
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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <locale.h>
 
#define n 69 //количество символов в английском алфавите без учета регистра c 32 по 127 код символа  таблицы ASCII
 
void swap (long *w, char *CHAR, long i, long j) //обмен элементов массива
{
    long t;
    char T;
    t=w[i];
    w[i]=w[j];
    w[j]=t;
    T=CHAR[i];
    CHAR[i]=CHAR[j];
    CHAR[j]=T;
}
 
void shake (long *x, char *CHAR) //дл€ упор€дочени€ массива веро€тностей по возрастанию используем шейкерную сортировку
{
    long L,R,N,S,j,i;
    L=0;  //лева€ граница массива
    R=n-1;  //права€ граница массива
    N=n-1;    //количество элементов массива (нумереци€ с 0)
    while (L<R)
    {
        for(j=R; j>L; --j)  //проход справа налево
        {
            if (x[j]<x[j-1])
            {
                swap(x,CHAR,j,j-1);
                N=j;
            }
        }
        L=N;
        for (j=L; j<R; ++j)  //проход слева направо
        {
            if (x[j]>x[j+1])
            {
                swap(x,CHAR,j,j+1);
                N=j;
            }
        }
        R=N;
    }
    for (i=0,S=1; i<n-2; ++i)
    {
        if (x[i]>x[i+1])
            S++;
    }
    if (S>1)
    {
        printf("\n ќшибка, массив не отсортирован, количество серий больше 1 \n");
        getch();
    }
}
 
int main()
{
    FILE  *f;
    char  key, ch,
          fname[50], //массив дл€ хранени€ имени файла
          CHAR[n],  //массив всех символов английского алфавита
          **C,//матрица дл€ хранени€ элементарных кодов
          *CHAR_S; //массив дл€ хранени€ символов встречающихс€ в файле
    long  i,j,m,N, //переменные счетчики
          w[n], //частоты по€влени€ символов в тексте
          *ws,//отсортированный массив частот
          *L; //массив длин кодовых слов
    double *p,//массив веро€тностей по€влени€ символа в данном тексте
           Hmax=0.0, //максимальна€ энтропи€ текста
           H=0.0,//энтропи€ Ўеннона
           s;//контроль правильности расчета массива веро€тностей
 
    setlocale(LC_ALL, "Russian");
 
    memset(CHAR,0 ,sizeof(CHAR));
    for(i=0; i<=32; i++) //заполнение массива кодами символов согласно таблице ASCII без учета регистра
    {
        CHAR[i]=32+i;
    }
    for(i=33; i<n; i++)
    {
        CHAR[i]=58+i;
    }
 
    do
    {
        system("cls");//clrscr();
        m=0;  //значени€ обнул€ютс€ дл€ исключени€ ошибок при открытии другого файла
        N=0; //количество символов в тексте
        memset(w,0.0,sizeof(w));
        memset(fname,0,sizeof(fname));
        printf ("\n ¬ведите наименование файла и путь к нему. \n");
        fgets(fname, sizeof(fname), stdin);
        m=strlen(fname);
        fname[m-1]=0;
        f=fopen(fname,"rt") ;
        if (f==NULL)
        {
            printf("\n ќшибка открыти€ файла! \n");
            getch();
            exit(0);
        }
        while(!feof(f))
        {
            ch=getc(f);    //считывание символов
            if((ch>=65)&&(ch<=90)) //если заглавна€ буква то игнорируем регистр
                i=ch-26;
            else
            {
                for (j=0; j<n; j++)
                    if (ch==CHAR[j])
                    {
                        i=j;
                        break;
                    }
            }
            w[i]+=1;
        }
 
        shake(w,CHAR);//сортировка массива частот
 
        for (i=0; i<n; i++)
        {
            if (w[i]!=0)
                N++;
        }
 
        ws=(long *)malloc(N*sizeof(long));
        if (ws==NULL)
        {
            puts("ћассив ws не создан!");
            getch();
            return 1;
        }
 
        CHAR_S=(char *)malloc(N*sizeof(char));
        if (CHAR_S==NULL)
        {
            puts("ћассив CHAR_S не создан!");
            getch();
            return 1;
        }
        j=0;
        for (i=n-N; i<n; i++)//копирование символов с частотой по€влени€ >0 в динамическом массиве
        {
            ws[j]=w[i];
            CHAR_S[j]=CHAR[i];
            j++;
        }
 
        p=(double *)malloc(N*sizeof(double)) ;
        if (p==NULL)
        {
            puts("ћассив p не создан!");
            getch();
            return 1;
        }
 
        for (i=0; i<N; i++) //рассчет энтропии файла
        {
            p[i]=1.0*ws[i]/N;//заполнение массива веро€тностей по€влени€ символов/
        }
 
//освобождение пам€ти от созданных динамических массивов
        for (i=0; i<N; i++)
            free(p);
        free(ws);
 
        getch();
        fclose(f);
        puts ("\n ќткрыть другой файл? (Ќет=Esc)");
        key=getch();
    }
    while (key!=27);//ESC
}
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
29.04.2014, 20:21  [“—]     Ќе считает произведение разных типов данных #17
ѕолучилось все, (спасибо, многое узнала) кроме русского €зыка, функци€
÷итата —ообщение от DrOffset ѕосмотреть сообщение
setlocale(LC_ALL, "Russian");
не помогла , везде кракоз€бры почему то...
DrOffset
6420 / 3794 / 877
–егистраци€: 30.01.2014
—ообщений: 6,584
29.04.2014, 20:25     Ќе считает произведение разных типов данных #18
÷итата —ообщение от ”ль€ниус ѕосмотреть сообщение
не помогла
Ўрифт в консольке надо помен€ть.
”ль€ниус
 јватар дл€ ”ль€ниус
1 / 1 / 0
–егистраци€: 15.08.2013
—ообщений: 132
29.04.2014, 20:36  [“—]     Ќе считает произведение разных типов данных #19
÷итата —ообщение от DrOffset ѕосмотреть сообщение
Ўрифт в консольке надо помен€ть.
нашла что надо сделать так:
¬ настройках Code Blocks: Settings - Editor, поставьте Windows-1251
но у мен€ так и было ...у мен€ вин 8.1, какой шрифт надо выбрать?

ƒобавлено через 3 минуты
и даже выбор Lucida consol не помог
MoreAnswers
Ёксперт
37091 / 29110 / 5898
–егистраци€: 17.06.2006
—ообщений: 43,301
29.04.2014, 21:00     Ќе считает произведение разных типов данных
≈ще ссылки по теме:

C++ ќпределить наибольшее из 3 чисел дл€ данных разных типов
C++ ‘ункци€ swap перестановки значений двух переменных дл€ данных разных типов. »спользуйте template
C++ ѕростое создание строки из объектов разных типов данных

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

»ли воспользуйтесь поиском по форуму:
DrOffset
6420 / 3794 / 877
–егистраци€: 30.01.2014
—ообщений: 6,584
29.04.2014, 21:00     Ќе считает произведение разных типов данных #20
÷итата —ообщение от ”ль€ниус ѕосмотреть сообщение
Lucida consol не помог
¬от проект. ƒолжно работать с Lucida Console.
¬ложени€
“ип файла: rar encoding.rar (130.8  б, 4 просмотров)
Yandex
ќбъ€влени€
29.04.2014, 21:00     Ќе считает произведение разных типов данных
ќтвет —оздать тему
ќпции темы

“екущее врем€: 20:21. „асовой по€с GMT +3.
 ибер‘орум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
–ейтинг@Mail.ru