Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.06.2011
Сообщений: 4
1

Необычное поведение оператора инкремента

13.06.2011, 01:20. Показов 615. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Это просто несчастье какое-то. Я пытаюсь посчитать коэффициенты корреляции, рассматривая строку из 16 массивов по 4 бит. Сравниваю побитно чтобы получить матрицу коэффициентов 4Х4. Программа выдает ерунду какую-то. Удивительно, в примере ниже я уже и цикл убрал, а коэффициенты корреляции больше 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
142
143
#include <QtCore/QCoreApplication>
#include <stdio.h>
 
void correlator(void);
 
int c[15][4];
int d[15][4];
 
float cor[3][3];
 
float cor00=0;
float cor01=0;
float cor02=0;
float cor03=0;
 
float cor10=0;
float cor11=0;
float cor12=0;
float cor13=0;
 
float cor20=0;
float cor21=0;
float cor22=0;
float cor23=0;
 
float cor30=0;
float cor31=0;
float cor32=0;
float cor33=0;
 
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    int i,j;
 
    for(i=0; i<16; i++)
    {
        for(j=0; j<4; j++)
            c[i][j]=0;
    }
 
    for(i=0; i<16; i++)
    {
        for(j=0; j<4; j++)
            d[i][j]=1;
    }
 
 
 
    for(j=0; j<16; j++)
    {
        for(i=0; i<4; i++)
printf("%d",d[j][i]);
 
    }
printf("\n");
 
correlator();
 
 
    return a.exec();
}
 
 
 
void correlator(void)
{
    int i=0, j, k;
    for(j=0; j<4; j++)
    {
        for(k=0; k<4; k++)
cor[j][k]=0;
 
    }
 
 
 
    //for(i=0; i<1; i++)
    {
           if(d[i][0]!=c[i][0]) ++cor[0][0];
           if(d[i][0]!=c[i][1]) ++cor[0][1];
           if(d[i][0]!=c[i][2]) ++cor[0][2];
           if(d[i][0]!=c[i][3]) ++cor[0][3];
 
           if(d[i][1]!=c[i][0]) ++cor[1][0];
           if(d[i][1]!=c[i][1]) ++cor[1][1];
           if(d[i][1]!=c[i][2]) ++cor[1][2];
           if(d[i][1]!=c[i][3]) ++cor[1][3];
 
           if(d[i][2]!=c[i][0]) ++cor[2][0];
           if(d[i][2]!=c[i][1]) ++cor[2][1];
           if(d[i][2]!=c[i][2]) ++cor[2][2];
           if(d[i][2]!=c[i][3]) ++cor[2][3];
 
           if(d[i][3]!=c[i][0]) cor[3][0]=cor[3][0]+1;
           if(d[i][3]!=c[i][1]) cor[3][1]=cor[3][1]+1;
           if(d[i][3]!=c[i][2]) cor[3][2]=cor[3][2]+1;
           if(d[i][3]!=c[i][3]) cor[3][3]=cor[3][3]+1;
 
 
           if(d[i][0]!=c[i][0]) {cor00++;}
           if(d[i][0]!=c[i][1]) {cor01++;}
           if(d[i][0]!=c[i][2]) {cor02++;}
           if(d[i][0]!=c[i][3]) {cor03++;}
 
           if(d[i][1]!=c[i][0]) cor10++;
           if(d[i][1]!=c[i][1]) cor11++;
           if(d[i][1]!=c[i][2]) cor12++;
           if(d[i][1]!=c[i][3]) cor13++;
 
           if(d[i][2]!=c[i][0]) cor20++;
           if(d[i][2]!=c[i][1]) cor21++;
           if(d[i][2]!=c[i][2]) cor22++;
           if(d[i][2]!=c[i][3]) cor23++;
 
           if(d[i][3]!=c[i][0]) cor30++;
           if(d[i][3]!=c[i][1]) cor31++;
           if(d[i][3]!=c[i][2]) cor32++;
           if(d[i][3]!=c[i][3]) cor33++;
 
 
 
    }
 
    printf("%d\t%d\t%d\t%d\t", cor00, cor01, cor02, cor03);
    printf("\n");
    printf("%d\t%d\t%d\t%d\t", cor10, cor11, cor12, cor13);
    printf("\n");
    printf("%d\t%d\t%d\t%d\t", cor20, cor21, cor22, cor23);
    printf("\n");
    printf("%d\t%d\t%d\t%d\t", cor30, cor31, cor32, cor33);
    printf("\n");
 
 
    for(j=0; j<4; j++)
    {
        for(k=0; k<4; k++)
printf("%f\t",cor[j][k]);
        printf("\n");
    }
 
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2011, 01:20
Ответы с готовыми решениями:

Необычное поведение порта
Добрый день уважаемые форумчане. У меня к вам вопрос. Можно ли файерволл настроить так, что бы при...

Необычное поведение у цикла
Имеется следующий код: &lt;?php header(&quot;Content-type: text/html; charset=utf-8&quot;); require_once...

Необычное поведение цикла for
Label1-&gt;Caption = &quot;Âñåãî ïàðòèé: &quot; + IntToStr(VsegoPart); for(i=0; i&lt;VsegoPart;i++) { ...

Необычное поведение холста
Привет;) Возможно я слишком устал, ну или болен, не знаю. Но у меня не получается canvas наложить...

3
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
13.06.2011, 01:29 2
у вас же объявлено 15 строк
Цитата Сообщение от nsuperman Посмотреть сообщение
int c[15][4];
int d[15][4];
а цикл на 16
Цитата Сообщение от nsuperman Посмотреть сообщение
for(i=0; i<16; i++)
* * {
* * * * for(j=0; j<4; j++)
* * * * * * c[i][j]=0;
* * }
Добавлено через 1 минуту
и с correlator'ом аналогично
объявлено 3х3 а используется 4
1
0 / 0 / 0
Регистрация: 13.06.2011
Сообщений: 4
13.06.2011, 01:37  [ТС] 3
Спасибо за ответ!
Так ведь нумерация же начинается с 0. т.е. Т.е. 15 элементов + нулевой получается 16. А в циклах стоит <16, стало быть последний элемент, который будет обработан будет 15-й. Вроде так и должно быть.
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
13.06.2011, 01:42 4
когда вы объявляете массив на 15 строк, нумерация будет идти от нулевого до 14.
попробуйте, выведите c[15][3] допустим.
0
13.06.2011, 01:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2011, 01:42
Помогаю со студенческими работами здесь

Необычное поведение &nbsp;
&amp;nbsp; отображается на сайте в виде мягкого знака, картинку прилагаю: del Дополнительная...

Необычное поведение при использовании каналов из <unistd.h>
Нужно написать программу на Си использующую несколько процессов. При написании столкнулся с...

Распознавание речи и клавиатура - время ожидания - необычное поведение
Столкнулся с необычной проблемой. Использую распознавание речи.. То есть при нажатии кнопки...

перегрузка оператора инкремента
клас class MyRectangle{ public: int xUpLeft; int yUpLeft; int xDownRight; int...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru