Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 11
1

удаление массивов

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

Author24 — интернет-сервис помощи студентам
помогите найти ошибку и исправить!
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;
}
ошибка скорее всего здесь, я не уверен что правильно сделал освобождение памяти массива.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2010, 17:06
Ответы с готовыми решениями:

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

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

Создать массив структур без использования массивов и нотации массивов
Доброго времени суток! Есть задание, в котором нужно создать массив структур, имея следующую...

В каждом из массивов найти наибольшее значение и умножить на него все элементы массивов
Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и умножить на него...

8
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
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);
}
1
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 11
16.10.2010, 18:00  [ТС] 3
поменял, но прога не компилируется!
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.10.2010, 18:04 4
Цитата Сообщение от Aspire Mcafee Посмотреть сообщение
поменял, но прога не компилируется!
Какие ошибки выдает?
0
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 11
16.10.2010, 18:09  [ТС] 5
ошибки не выдает но виснет current line: 0 total lines: 0 ничего короче не происходит!
0
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
16.10.2010, 18:34 6
Где-то вылез за границы массива, так как хип коррапшн, но код написан со всеми почестями Будде, так что придется тебе выискивать.
1
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.10.2010, 18:43 7
Отладчик в руки и вперед
1
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 11
16.10.2010, 18:57  [ТС] 8
блин перезапустил компилятор все сделал как было изначально и все работает, может глюк компилятора был?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
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;
}
1
16.10.2010, 22:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2010, 22:27
Помогаю со студенческими работами здесь

В каждом из заданных массивов найти наименьшее значение и прибавить его ко всем элементам массивов
Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и прибавить его ко...

В каждом из заданных массивов найти наибольшее значение, и разделить на него все элементы массивов
Заданы два массива А(5) и В(5). В каждом из массивов найти наибольшее значение и разделить на него...

Сравнение массивов: найти максимальное перебором массивов
Добрый вечер такая проблема даны два одномерных массива A, B причем в каждом массиве записанно...

Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и разделить на него все элементы массивов. На печать вывести исходные
Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и разделить на него...

Обработка одномерных массивов. Сортировка массивов
Здравствуйте, помогите пожалуйста решить задачу легким способом. В одномерном массиве, состоящем...

Сортировка массивов по убыванию и замена массивов
Задача: Даны два массива: А3 и В3х3. Массив А упорядочить по убыванию и заменить им первую строку...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru