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

ready-only - C++

Восстановить пароль Регистрация
 
Wbgury
 Аватар для Wbgury
88 / 85 / 2
Регистрация: 16.05.2010
Сообщений: 272
25.02.2012, 10:49     ready-only #1
Компилирую код в CodeBlocks вот такие ошибки:

||=== until, Debug ===|
K:\until\main.cpp||In function 'void mode(const int*, int*, int)':|
K:\until\main.cpp|69|error: assignment of read-only location '*(freq + ((unsigned int)(rating * 4u)))'|
K:\until\main.cpp|72|error: increment of read-only location '*(freq + ((unsigned int)(((unsigned int)(*(answer + ((unsigned int)(((unsigned int)j) * 4u))))) * 4u)))'|
||=== Build finished: 2 errors, 0 warnings ===|

Вот сам код:

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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
void mean(const int[], int);
void median(int[], int);
void mode(const int[], int[], int);
void bubbleSort(int [], int);
void printArray(const int[], int);
 
int main()
{
    const int responseSize = 99;
    int frequency[10] = {0},
         response[responseSize] = {6, 7, 8, 9, 8, 7, 8, 9, 8, 9,
                                   7, 8, 9, 5, 9, 8, 7, 8, 7, 8,
                                   6, 7, 8, 9, 3, 9, 8, 7, 8, 7,
                                   7, 8, 9, 8, 9, 8, 9, 7, 8, 9,
                                   6, 7, 8, 7, 8, 7, 9, 8, 9, 2,
                                   7, 8, 9, 8, 9, 8, 9, 7, 5, 3,
                                   5, 6, 7, 2, 5, 3, 9, 4, 6, 3,
                                   7, 8, 9, 6, 8, 7, 8, 9, 7, 8,
                                   7, 4, 4, 2, 5, 3, 8, 7, 5, 6,
                                   4, 5, 6, 1, 6, 5, 7, 8, 7};
    mean(response, responseSize);
    median(response, responseSize);
    mode(frequency, response, responseSize);
    return 0;
}
 
void mean(const int answer[ ], int arraySize)
{
    int total = 0;
    cout << "*********" << endl << "Srednee" << endl
         << "*********" << endl;
 
    for (int j = 0; j < arraySize; j++)
        total += answer[j];
 
    cout << "Srednee znachenie dlya dannogo rascheta:" << setiosflags(ios::fixed | ios::showpoint)
         << setprecision(4) << (float) total / arraySize << endl << endl;
}
 
void median(int answer[ ], int size)
{
    cout << "*********" << endl << "Mediana" << endl
         << "*********" << endl
         << "Ne sortirovanni massiv:";
 
    printArray(answer, size);
    bubbleSort(answer, size);
    cout << endl << endl << "Sortirovanni massiv:";
    printArray(answer, size);
 
    cout << endl << endl << "Mediana - eto element " << size / 2
         << " is massiva " << endl << size << " sortirovannih elementov. " << endl
         << "Dlya dannogo rascheta mediana: "
         << answer[size / 2] << endl << endl;
}
 
void mode(const int freq[ ], int answer[ ], int size)
{
    int largest = 0, modeValue = 0;
    cout << "*********" << endl << "Moda" << endl
         << "*********" << endl;
 
    for (int rating = 1; rating <= 9; rating++)
        freq[rating] = 0; //cpp|69|error: assignment of read-only location '*(freq + ((unsigned int)(rating * 4u)))'|
 
    for (int j = 0; j < size; j++)
        ++freq[answer[j]];  // cpp|72|error: increment of read-only location '*(freq + ((unsigned int)(((unsigned int)(*
 
    cout << "Otvet" << setw(11) << "Castota"
         << setw(19) << "Gistogramma" << endl << endl << setw(54)
         << "1  1   2   2" << endl << setw(54)
         << "5  0   5   0   5" << endl << endl;
 
    for (int rating = 1; rating <= 9; rating++) {
        cout << setw(8) << rating << setw(11)
        << freq[rating] << "               ";
 
        if (freq[rating] > largest) {
            largest = freq[rating];
            modeValue = rating;
        }
 
        for (int h = 1; h <= freq[rating]; h++)
            cout << "*";
 
        cout << endl;
    }
 
    cout << "Moda - eto naibolee chasto vstechaushiesy znachenie." << endl
         << "Dlya dannogo rascheta moda ravna " << modeValue
         << ", vstrechaetsya " << largest << " raz."
         << endl;
}
 
void bubbleSort(int a[ ], int size)
{
    int hold;
 
    for (int pass = 1; pass < size; pass++)
 
        for (int j = 0; j < size - 1; j++)
 
            if (a[j] > a[j + 1]) {
                hold = a[j];
                a[j] = a[j + 1];
                a[j + 1] =  hold;
            }
}
 
void printArray(const int a[ ], int size)
{
    for (int j = 0; j < size; j++) {
 
        if (j % 20 == 0)
            cout << endl;
 
        cout << setw(2) << a[j];
    }
}
Добавлено через 2 минуты
мучаюсь уже часа 2, никак не пойму в чём ошибка. Для переменной rating уже изменял тип в unsigned int и массиву freq[], тоже пытался. Ничего не получается((((. Обьясните пожалуйста в чём проблема
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2012, 10:49     ready-only
Посмотрите здесь:

Ready Boost? Windows 7
jQuery ready в jQuery
Disk is not ready in drive D C++
jQuery $(document).ready LiteBox
Windows 7 Ready Boost
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.02.2012, 11:02     ready-only #2
Естественно, у вас массив freq объявлен как const int []. А константам нельзя ничего присваивать.
Уберите const, в общем.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
25.02.2012, 11:02     ready-only #3
Массивы передаются по ссылке, вы в параметрах функции указали, что принимается ссылка на константные данные...

Не по теме:

Чутка опоздал

Wbgury
 Аватар для Wbgury
88 / 85 / 2
Регистрация: 16.05.2010
Сообщений: 272
25.02.2012, 11:25  [ТС]     ready-only #4
спасибо! прогледел что то....
Yandex
Объявления
25.02.2012, 11:25     ready-only
Ответ Создать тему
Опции темы

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