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

Нарушение прав доступа - C++

Восстановить пароль Регистрация
 
Angeline
36 / 30 / 2
Регистрация: 21.10.2013
Сообщений: 197
24.10.2013, 21:14     Нарушение прав доступа #1
Выдает вот это
Необработанное исключение в "0x000d1e05" в "зпр3.exe":
0xC0000005: Нарушение прав доступа при чтении "0xfdfdfe05".

В этой функции
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
//Сортировка
void sort(int n, int m, float** matrix)
{
    //Выбор элемента для сравнения
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
        {
            int x=0;
            int y=0;
            float servp=matrix[i][j];
            //Поиск элемента для замены
            while (x<n)
            {
                while (y<m)
                {
                    if (matrix[i][j]>matrix[x][y])
                    {
                        break;
                        break;
                    }
                    else
                    {
                        x++;
                        y++;
                    }
                }
            }
            matrix[i][j]=matrix[x][y] ;//Ошибка здесь
            matrix[x][y]=servp;
        }
    }
}
Не пойму что делать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
2867 / 1815 / 272
Регистрация: 27.08.2010
Сообщений: 4,919
Записей в блоге: 1
24.10.2013, 21:22     Нарушение прав доступа #2
Угу. Строки 19 и 20 наводят на мысль :-)
newbie666
Заблокирован
24.10.2013, 21:24     Нарушение прав доступа #3
Цитата Сообщение от Angeline Посмотреть сообщение
Не пойму что делать.
использовать stl
Ты лучше скажи, чё хочешь сделать, а тут какой то бред сивой кобылы
dane.yeah
15 / 15 / 1
Регистрация: 08.04.2012
Сообщений: 133
24.10.2013, 21:27     Нарушение прав доступа #4
а одного брейка не хватает?
Angeline
36 / 30 / 2
Регистрация: 21.10.2013
Сообщений: 197
24.10.2013, 21:28  [ТС]     Нарушение прав доступа #5
Хочу добиться сортировки матрицы. То что там бред я догадываюсь(100 раз переписала уже циклы, скорее всего в очередной раз писала и написала бред). Вопрос в том, как исправить ошибку с доступом к памяти.
dane.yeah
15 / 15 / 1
Регистрация: 08.04.2012
Сообщений: 133
24.10.2013, 21:29     Нарушение прав доступа #6
Angeline, а какая сортировка то нужна?)
Angeline
36 / 30 / 2
Регистрация: 21.10.2013
Сообщений: 197
24.10.2013, 21:43  [ТС]     Нарушение прав доступа #7
Два брейка там на два вайла.

Добавлено через 1 минуту
От меньшего к большему и от большего к меньшему. Алгоритм там одинаковый, так что достаточно будет скопировать и поменять знак.

Добавлено через 1 минуту
newbie666, что такое stl? Только не смейтесь.

Добавлено через 10 минут
Господи, зачем я запихнула ++ в один цикл, при чем это я только что сделала... Ппц, у меня с этой программы уже крыша едет.
dane.yeah
15 / 15 / 1
Регистрация: 08.04.2012
Сообщений: 133
24.10.2013, 21:51     Нарушение прав доступа #8
Angeline, ну попробуйте вот с этим поработать, а можно sort() из <algorithm> с предикатом использовать

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
#include <iostream>
#include <cstdlib>
#include <clocale>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"");
    const int rows = 3;
    const int cols = 3;
    int matrix[rows][cols];
    
    for(int i = 0; i < rows; ++i) {
        for(int j = 0; j < cols; ++j)
            matrix[i][j] = rand() % 9;
    }
    
    cout << "Исходная матрица: " << endl;
    for(int i = 0; i < rows; ++i) {
        for(int j = 0; j < cols; ++j)
            cout << matrix[i][j] << " ";
            
        cout << endl;
    }
    
    for(int k = 0; k < rows * cols; ++k) {
        for(int i = 0; i < rows; ++i) {
            for(int j = 0; j < cols; ++j) {
                if(j != cols - 1) {  
                    if(matrix[i][j+1] < matrix[i][j]) {
                        int tmp = matrix[i][j+1];
                        matrix[i][j+1] = matrix[i][j];
                        matrix[i][j] = tmp;
                    }
                }
                else {
                    if((matrix[i+1][0] < matrix[i][j]) && (i != rows - 1)) {
                        int tmp = matrix[i+1][0];
                        matrix[i+1][0] = matrix[i][j];
                        matrix[i][j] = tmp;
                    }
                }
            }
        }
    }
    
    cout << "Сортированная матрица: " << endl;
    for(int i = 0; i < rows; ++i) {
        for(int j = 0; j < cols; ++j)
            cout << matrix[i][j] << " ";
            
        cout << endl;
    }
    
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 22:04     Нарушение прав доступа
Еще ссылки по теме:

указатель (нарушение прав доступа) C++
Нарушение прав доступа к виртуальной функции C++
C++ Нарушение прав доступа при записи

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

Или воспользуйтесь поиском по форуму:
Angeline
36 / 30 / 2
Регистрация: 21.10.2013
Сообщений: 197
24.10.2013, 22:04  [ТС]     Нарушение прав доступа #9
dane.yeah, я поработаю, спасибо. Только поясните пожалуйста строки 3, 5, 9 и 55 что делают? И еще переведите на русский фразу
Цитата Сообщение от dane.yeah Посмотреть сообщение
можно sort() из <algorithm> с предикатом использовать
Yandex
Объявления
24.10.2013, 22:04     Нарушение прав доступа
Ответ Создать тему
Опции темы

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