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

C++

Войти
Регистрация
Восстановить пароль
 
Aspire Mcafee
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 11
#1

удаление массивов - C++

16.10.2010, 17:06. Просмотров 862. Ответов 8
Метки нет (Все метки)

помогите найти ошибку и исправить!
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
125
void quick_sort (int limit, int *array)
{
        long i = 0, j = limit;
        int central, temp;
 
        central = array[limit >> 1];
 
        do
        {
                while (array[i] < central)
                        i++;
                while (array[j] > central)
                        j--;
                if (i <= j)
                {
                        temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                        i++;
                        j--;
                }
 
        }
        while (i <= j);
 
        if (j > 0)
                quick_sort (j, array);
        if (limit > i)
                quick_sort (limit - i, array + i);
}
 
void delete_array (int *array)
{
     delete [] array;
}
 
void write_array (int limit, int *array)
{
        for (int counter = 0; counter < limit; counter++)
        {
                cout << "Enter [" << counter << "] element of array: ";
                cin >> array[counter];
                cout << endl;
        }
        cout << endl;
}
 
void read_array (int limit, int *array)
{
        for (int counter = 0; counter < limit; counter++)
        {
                cout << array[counter] << " ";
        }
        cout << endl << endl;
}
 
void search_array (int limit, int *array)
{
        int search_element, result = 0, *find_element, i = 0;
 
        cout << "Enter the array element you want to find: ";
        cin >> search_element;
        cout << endl;
 
        for (int counter = 0; counter < limit; counter++)
        {
                if (search_element == array[counter])
                        result++;
        }
        find_element = new int [result];
 
        for (int counter = 0; counter < limit; counter++)
        {
                if (search_element == array[counter])
                {
                        find_element[i] = counter;
                        i++;
                }
        }
 
        if (result != 0)
        {
                cout << "Found " << result << " elements:\n\n";
                i =1;
 
                for (int counter = 0; counter < result; counter++)
                {
                        cout << i << " = " << find_element[counter] << " array index\n\n";
                        i++;
                }
        }
        else
                cout << "Did not match any element!\n" << endl;
}
 
int main(int argc, char* argv[])
{
        int *array, limit;
 
        cout << "Enter limit: ";
        cin >> limit;
        cout << endl;
 
        array = new int [limit];
        write_array (limit, array);
 
        cout << "Array:\n" << endl;
 
        read_array (limit, array);
 
        search_array (limit, array);
 
        quick_sort (limit, array);
 
        cout << "Sorted array by quick sort:\n\n";
        
        read_array (limit, array);
 
        search_array (limit, array);
 
        delete_array (array);
 
        getch();
        return 0;
}
пользователь вводит массив, программа выводит массив выводит индексы указанного элемента, сортирует массив, снова выводит индексы указанного элемента, и удаляет массив. но компилятор ругается на вывод, программа запускается, но только как она дойдет до удаления то сразу вылетит с ошибкой.

Добавлено через 25 минут
C++
1
2
3
4
void delete_array (int *array)
{
     delete [] array;
}
ошибка скорее всего здесь, я не уверен что правильно сделал освобождение памяти массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2010, 17:06     удаление массивов
Посмотрите здесь:

Удаление динамических массивов - C++
Здравствуйте, вобщем проблема в этом куске кода: int *makeDigits(int n) { int *digits = new int; int i = 2; while (n != 0) ...

Создание одномерных массивов, поиск, вставка и удаление элементов - C++
нужно написать 1.Сформировать одномерный массив целых чисел, используя датчик случайных чисел и выполнить задание c использованием...

Элементы массивов a и b отсортировать в порядке возрастания. Образовать из этих массивов "c" из M+N элементов - C++
1.даны массивы a и b. элементы массивов a и b отсортировать в порядке возрастания.образовать из этих массивов &quot;c&quot; из M+N элементов....

Удаление нулей из массивов - Matlab
нужен универсальный код по удалению нулей из массивов(а). то есть есть нули где-то, надо их превратить в пустые клетки. может есть...

Добавление удаление массивов - C (СИ)
Здраствуйте, у меня есть программа которая выполнякт это условие: Дан массив a. После каждой группы подряд идущих одинаковых элементов...

Удаление повторяющихся записей из массивов - C#
Коллеги, помогите пожалуйста. Сломал голову напрочь. Задача следующая: Есть четыре одномерных массива - 2 string, 1 int, 1 double,...

Удаление из массивов одинаковых элементов - PHP
Есть два массива , к примеру Array ( =&gt; Array ( =&gt; /css/main.css =&gt; main.css ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
16.10.2010, 17:38     удаление массивов #2
Aspire Mcafee, сделай так:
C++
1
2
3
4
void delete_array(int*& array)
{
    delete[] array;
}
или так:
C++
1
2
3
4
void delete_array(int** array)
{
    delete[] (*array);
}
Aspire Mcafee
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 11
16.10.2010, 18:00  [ТС]     удаление массивов #3
поменял, но прога не компилируется!
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
16.10.2010, 18:04     удаление массивов #4
Цитата Сообщение от Aspire Mcafee Посмотреть сообщение
поменял, но прога не компилируется!
Какие ошибки выдает?
Aspire Mcafee
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 11
16.10.2010, 18:09  [ТС]     удаление массивов #5
ошибки не выдает но виснет current line: 0 total lines: 0 ничего короче не происходит!
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
16.10.2010, 18:34     удаление массивов #6
Где-то вылез за границы массива, так как хип коррапшн, но код написан со всеми почестями Будде, так что придется тебе выискивать.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
16.10.2010, 18:43     удаление массивов #7
Отладчик в руки и вперед
Aspire Mcafee
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 11
16.10.2010, 18:57  [ТС]     удаление массивов #8
блин перезапустил компилятор все сделал как было изначально и все работает, может глюк компилятора был?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2010, 22:27     удаление массивов
Еще ссылки по теме:

Удаление повторяющихся элементов массивов - Программирование
Здравствуйте Допустим, у нас есть два массива: А и В. Надо составить третий массив С, в которм записаны все элементы А и В, кроме...

Удаление последовательных символов из двумерных массивов. - C (СИ)
Требуется создать программу, которая удаляла бы 2 последовательных символа из двумерного массива и выводила результат на экран. Первый...

Выполнить удаление элементов из обоих массивов - Pascal
Даны два массива Х(10) и У(20). Выполнить удаление элементов из обоих массивов. Элемент удаляется, если его значение равно какому-либо...

Работа с элементами массивов. Удаление элемента массива - Free Pascal
Доброй ночи. Появилась еще одна небольшая проблема. Не могу реализовать следующие два вопроса (в коде пометил их комментариями как zadanie...

Удаление элемента из дин. массива дин. массивов. - Delphi
Есть динамический массив динамических массивов. Когда я удаляю элемент с этого массива, то с последнего элемента пропадают все данные, а...


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
16.10.2010, 22:27     удаление массивов #9
больще часа пыхтел над осмыслением алгоритма быстрой сортировки (никогда руками не делал - готовую функцию использовал), не пропадать же "добру" к тому-же странный способ вывода массивов придумал...
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
#include <iostream>
 
void swap(int * a, int * b) {
    int tmp = *a;
    *a = *b;
    *b = tmp;
}
 
void qsort_int(int * arr, size_t size){
    int * head, * tail, * middle;
    head = arr;
    tail = arr + size - 1;
    middle = arr + size / 2;
    if ( size < 2 )
        return;
    else if ( size == 2 ){
        if ( *head > *tail )
            swap(head, tail);
        return;
    }
    else {
        while ( 1 ){
            while ( head < middle ){
                if ( *head > *middle )
                    break;
                ++head;
            }
            while ( tail > middle ){
                if ( *tail < *middle )
                    break;
                --tail;
            }
            if ( head >= tail )
                break;
            swap(head, tail);
            if ( middle == head )
                middle = tail;
            else if ( middle == tail )
                middle = head;
        }
        qsort_int(arr, middle - arr);
        qsort_int(middle + 1, size - ( middle - arr ) - 1);
    }
}
 
int * find_in_array(int * arr, size_t size, int value){
    return ( ! size ) ? NULL : ( *arr == value ) ? arr : find_in_array(++arr, --size, value);
}
 
struct ArrOut {
    const int * arr;
    size_t size;
    const char * delim;
    ArrOut(int * _arr, size_t _size, const char * _delim) : arr(_arr), size(_size), delim(_delim) {}
    ~ArrOut() {}
};
 
std::ostream & operator << (std::ostream & ost, ArrOut & a){
    while ( a.size-- )
        ost << *(a.arr++) << a.delim;
    return ost;
}
 
int main(){
    size_t size;
    std::cout << "Number of elements: ";
    std::cin >> size;
    
    int * arr = new int [ size ];
    for ( size_t i = 0; i < size; ++i ){
        std::cout << "Array[" << i << "] = ";
        std::cin >> arr[i];
    }
    
    std::cout << "Array: " << ArrOut(arr, size, " ") << std::endl;
    
    int val;
    std::cout << "Value to find in array: ";
    std::cin >> val;
    std::cout << "Indexes: ";
    for ( int * found = find_in_array(arr, size, val); found; found = find_in_array(found + 1, size - ( found - arr ) - 1, val) )
        std::cout << ( found - arr ) << ' ';
    
    qsort_int(arr, size);
    std::cout << "\n\nSorted: " << ArrOut(arr, size, " ") << std::endl;
    
    delete [] arr;
    
    return 0;
}
Yandex
Объявления
16.10.2010, 22:27     удаление массивов
Ответ Создать тему
Опции темы

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