Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2021, 12:25   #1
LargeFury
 
Регистрация: 03.11.2021
Сообщений: 8
По умолчанию Ошибка Process returned -1073740940 (0xC0000374)

Доброго времени суток. Вообщем проблема в том что если в исходном массиве 3 или меньше отрицательных элементов то все работает корректно. Если больше 3 отрицательных то получается ошибка
Код:
Process returned -1073740940 (0xC0000374)
Может подскажет кто в чем может быть проблема?

Вот мой код
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <conio.h>

const int n = 10;

void PrintMas(int* mas) //Виведення масиву на екран
{
	for (int i = 0; i < n; i++)
	{
		if (mas != NULL)
			printf("%d\t", mas[i]);
	}
}

void BubbleSort(int* mas) //Сортування простим обміном
{
	for (int i = 1; i < n; i++)
	{
        for (int j = n - 1; j >= i; j--)
        {
            if (mas[j] < mas[j - 1])
            {
                int temp = mas[j];
                mas[j] = mas[j - 1];
                mas[j - 1] = temp;
            }
        }
	}
}

void SortPos(int* arr) //Сортування лише додатніх елементів
{
    int countPos = 0;
    for (int i = 0; i < n; i++)
    {
        if (arr[i] > 0)
        {
            ++countPos;
        }
    }

    int* tempArrIndex = (int*)malloc(sizeof(int) * countPos);
    int* tempArr = (int*)malloc(sizeof(int) * countPos);

    for (int i = 0, k = 0; i < n; i++)
    {
        if (arr[i] <= 0)
            continue;
        if (arr[i] > 0)
        {
            tempArrIndex[k] = i;
            tempArr[k] = arr[i];
            ++k;
        }
    }

    BubbleSort(tempArr);

    for (int i = 0; i < countPos; i++)
    {
        arr[tempArrIndex[i]] = tempArr[i];
    }

    free(tempArrIndex);
    free(tempArr);
}

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    srand(time(NULL));

	int* a = (int*)malloc(sizeof(int) * n);

	for (int i = 0; i < n; i++)
	{
		if (a != NULL)
			a[i] = rand() % 50 - 20;
	}

	printf("Вхідний масив:\t");
	PrintMas(a);
	SortPos(a);
	printf("\n");
	printf("Відсортований масив:\t");
	PrintMas(a);

	getch();

	free(a);
	return 0;
}
LargeFury вне форума Ответить с цитированием
Старый 06.11.2021, 13:27   #2
LargeFury
 
Регистрация: 03.11.2021
Сообщений: 8
По умолчанию

Вопрос решен. Проблема была в
Код:
BubbleSort(tempArr);
Размер tempArr не соответствовал размеру с которым проводилась работа в BubbleSort
LargeFury вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что это за ошибка при запуске Eclipse? Java was started but returned exit code=13 SASFM Java Мобильная разработка (Android) 2 23.05.2016 17:16
Ошибка Module Unload: ole32.dll. Process Project1.exe (6812) Lum Общие вопросы Delphi 4 05.09.2011 23:28
ошибка raized exception class EListError with message 'List index out of bounds(1)'.Process stopped SGRaptor Софт 0 22.05.2010 19:12
(process.h) Компилятор говорит Process не объявлен Парсифаль Общие вопросы C/C++ 0 15.02.2010 00:27
Generic Host Process for Win32 Services - обнаружена ошибка p6l6a6n Помощь студентам 8 26.11.2009 15:11