S
Seriy1994
Помогите! Написал программу по заданию:
Ввести массив А. В массив В перенести все элементы массива А, имеющие нечетный индекс, справа от которых расположены элементы с нечетным значением, а слева -с четным. Массив В отсортировать по убыванию, используя быструю сортировку.
Вот код!
#include "stdafx.h"
#include <iostream>
#include "conio.h"
#include "stdio.h"
#include "locale.h"
#include <time.h>
void quickSort(int B, int left, int right);
//От А к В
int* AtoB(int* A,int n)
{int* B=0;
B=new int [n];
for (int i=1;i<n-1;i++)
{
if ((i%2!=0)&&(A[i+1]%2!=0)&&(A[i-1]%2==0))
{
B=A;
printf("%d ",B);
}
}/*
quickSort(B, 0, n);
for( int i=0;i<n;i++)
printf("%d ",B);*/
return B;
}
//Сортировка быстрая
void quickSort(int B[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = B[ (left + right) / 2];
/* partition */
while (i <= j) {
while (B > pivot)
i++;
while (B[j] < pivot)
j--;
if (i <= j) {
tmp = B;
B = B[j];
B[j] = tmp;
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(B, left, j);
if (i < right)
quickSort(B, i, right);
}
int _tmain(int argc, _TCHAR* argv[])
{setlocale(0, "Russian");
int n=0, *A=0, *B=0;
printf("Введите размерность массива: ");
scanf("%d", &n);
A=new int[n];
printf("");
for (int i = 0; i<n; i++){
printf("A[%d]=",i);
scanf("%d", &A);
}
printf("\n Исходный массив A: ");
for(int i = 0; i < n; i++)
printf("%d ", A);
printf("\n\n");
printf("Массив B: ");
AtoB(A,n);
quickSort(B, 0, n-1);
for(int i=0;i=n-1;i++)
printf("%d",B);
getch();
return 0;
}
Но в процессе выполнения доходит до сортировки и выдаёт ошибку типа:"Необработанное исключение в "0x010e1148" в "Сортировка.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000008"."
Помогите пожалуйста!!! В чём ошибка?
Ввести массив А. В массив В перенести все элементы массива А, имеющие нечетный индекс, справа от которых расположены элементы с нечетным значением, а слева -с четным. Массив В отсортировать по убыванию, используя быструю сортировку.
Вот код!
#include "stdafx.h"
#include <iostream>
#include "conio.h"
#include "stdio.h"
#include "locale.h"
#include <time.h>
void quickSort(int B, int left, int right);
//От А к В
int* AtoB(int* A,int n)
{int* B=0;
B=new int [n];
for (int i=1;i<n-1;i++)
{
if ((i%2!=0)&&(A[i+1]%2!=0)&&(A[i-1]%2==0))
{
B=A;
printf("%d ",B);
}
}/*
quickSort(B, 0, n);
for( int i=0;i<n;i++)
printf("%d ",B);*/
return B;
}
//Сортировка быстрая
void quickSort(int B[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = B[ (left + right) / 2];
/* partition */
while (i <= j) {
while (B > pivot)
i++;
while (B[j] < pivot)
j--;
if (i <= j) {
tmp = B;
B = B[j];
B[j] = tmp;
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(B, left, j);
if (i < right)
quickSort(B, i, right);
}
int _tmain(int argc, _TCHAR* argv[])
{setlocale(0, "Russian");
int n=0, *A=0, *B=0;
printf("Введите размерность массива: ");
scanf("%d", &n);
A=new int[n];
printf("");
for (int i = 0; i<n; i++){
printf("A[%d]=",i);
scanf("%d", &A);
}
printf("\n Исходный массив A: ");
for(int i = 0; i < n; i++)
printf("%d ", A);
printf("\n\n");
printf("Массив B: ");
AtoB(A,n);
quickSort(B, 0, n-1);
for(int i=0;i=n-1;i++)
printf("%d",B);
getch();
return 0;
}
Но в процессе выполнения доходит до сортировки и выдаёт ошибку типа:"Необработанное исключение в "0x010e1148" в "Сортировка.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000008"."
Помогите пожалуйста!!! В чём ошибка?