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

Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd" - C++

Восстановить пароль Регистрация
 
NIKST
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 5
30.03.2014, 13:32     Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd" #1
Всем доброго суток времени прошу помогите найти ошибку при компиляции ошибок нет, при запуску всплывает ошибка. работа. в Visual studio 2010

Необработанное исключение в "0x0110111e" в "qsort.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfdfdfdfd".

ошибка возникает при int h=(first+last)/2;


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
#include <iostream>
#include <cstdlib>
#include<fstream>
#include<time.h>
#include<stdlib.h>
using namespace std;
 
 
void arrprint(int** arr, int linen, int rowses) {
    for(int i = 0; i < linen; i++) {
        for(int j = 0; j < rowses; j++) {
            cout << arr[i][j]<<" ";
        }
        cout << endl;
    }
}
int qsort(int** array,int first,int last,int linen)
{
int k=0;
int temp=0;
int i=first;int j=last;
int h=(first+last)/2;
int x=array[linen][h];
do
{
while(k<linen) k++;
while(array[k][i]<x)i++;
while(array[k][j]>x)j--;
if(i<j)
{
   temp=array[k][i];
   array[k][i]=array[k][j];
   array[k][j]=temp;
   i++;
   j--;
}
}
while(i<=j);
if(i<last)
{
qsort(array,i,last,linen);
}
if(first<j)
{
qsort(array,first,j,k);
}
 
}
 
 
int main()
{
    int line,rows;
    int k=0;
    srand(time(0));
    cout<<"vedit line"<<endl;
    cin>>line;
    cout<<"vedit rows"<<endl;
    cin>>rows;
//dynamic array
    int** mas = new int*[line];
    for(int i = 0; i < line; i++)
        {
        mas[i] = new int[rows];
        for(int j = 0; j < rows; j++)
            {
            mas[i][j] = rand()%10;
            }
        }
//function
    arrprint(mas, line, rows);
     qsort(mas,0,rows,line);
    for(int i = 0; i < line; i++) delete[] mas[i];
    delete[] mas;
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 13:32     Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd"
Посмотрите здесь:

Нарушение прав доступа при чтении C++
C++ Нарушение прав доступа при записи "0x00000000"
C++ Нарушение прав доступа при чтении
C++ Нарушение прав доступа при записи "0xabababab"
C++ Нарушение прав доступа при чтении
Создание динамических массивов внутри класса: Нарушение прав доступа при чтении "0xbf800000" C++
C++ Нарушение прав доступа при чтении "0xcdcdcdcd"
C++ 0xC0000005: Нарушение прав доступа при записи "0xcccccccc". Инициализация строк
Ошибка "Нарушение прав доступа при записи" C++
"Нарушение прав доступа при чтении по адресу 0x00000000" C++
"Нарушение прав доступа при чтении" C++
C++ Нарушение прав доступа при чтении "0xcdcdcdcd"

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S Inspiration
 Аватар для S Inspiration
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 9
30.03.2014, 13:40     Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd" #2
Проверь какие значение у тебя передаются в first и last, вставь перед int h=(first+last)/2; строку аля cout <<"first = " << first << endl << "last = " << last << endl;
IrineK
Заблокирован
30.03.2014, 13:44     Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd" #3
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
void swap (int *arr,int i, int j)
{   int a = arr[i];
    arr[i] = arr[j];
    arr[j] = a;
}
 
void sort(int *arr ,int left, int right)
{   int e = (arr[left]+arr[right])/2;   //средний опорный элемент
    int i = left;
    int j = right;
    
    do    
    {   while (arr[i]<e)    i++;    //пока не найдем слева что-то большое
        while (arr[j]>e)    j--;    //пока не найдем справа что-то маленькое
        if(i<=j)
        {   swap(arr,i,j);          //поменяли местами
            i++; j--;               //двинулись дальше
        }
    } while(i<j);
    
    if (left<j)
        sort(arr,left,j);           //продолжаем слева
      
    if(i<right)                     //продолжаем справа
         sort(arr,i,right);
}
zss
Модератор
Эксперт С++
 Аватар для zss
6046 / 5649 / 1825
Регистрация: 18.12.2011
Сообщений: 14,435
Завершенные тесты: 1
30.03.2014, 13:55     Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd" #4
А Ваша ошибка в строке
C++
1
int x=array[linen][h];
Надо наверное
C++
1
int x=array[linen-1][h];
NIKST
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 5
30.03.2014, 14:25  [ТС]     Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd" #5
да ошибка в етой строке
int x=array[linen][h];
и дальше идет ошибка Переопределение, множественная инициализация.
как исправить ?
Yandex
Объявления
30.03.2014, 14:25     Быстрая сортировка. Нарушение прав доступа при чтении "0xfdfdfdfd"
Ответ Создать тему
Опции темы

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