6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
|
||||||
1 | ||||||
Очередь на основе динамического массива03.07.2013, 15:16. Показов 4648. Ответов 16
Метки нет (Все метки)
Помогите найти ошибку, по заданию надо записать в очередь данные из файла, а при записи отрицательного числа программа должна извлечь все элементы из очереди, вывести на экран и завершится, вроде всё верно написал, но выдаёт ошибку с нарушением прав доступа записи при записи.
0
|
03.07.2013, 15:16 | |
Ответы с готовыми решениями:
16
Очередь на основе динамического (статического) массива Очередь на основе динамического массива. Изучение функций ввода/вывода в программном интерфейсе Win32 "Очередь" на основе динамического массива Очередь на основе массива |
vorobey_93
|
|
03.07.2013, 15:50 | 2 |
Кажется, так как ptr объявлен в Private, то на прямую обращаться к нему ты не можешь, т.е. нельзя выводить просто через cout<< Либо ты ptr объявляешь в Public, либо строишь функцию класса, которая просто выводить этот ptr.
|
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
|
|
03.07.2013, 16:05 [ТС] | 3 |
Private тут не при чём, он же из этого же класса
0
|
73 / 69 / 1
Регистрация: 19.05.2010
Сообщений: 167
|
||||||
03.07.2013, 17:23 | 4 | |||||
Только это не очередь Очередь предполагает последовательный доступ к элементам, а здесь тупо по индексу.
0
|
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
|
|
03.07.2013, 17:44 [ТС] | 5 |
0
|
73 / 69 / 1
Регистрация: 19.05.2010
Сообщений: 167
|
||||||
03.07.2013, 17:46 | 6 | |||||
Правда тогда не понятно как ее на основе массива сделать
0
|
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
|
|||||||||||
03.07.2013, 17:50 [ТС] | 7 | ||||||||||
Да вот именно, на основе списка тут вроде всё ясно, а надо на основе массива. Я вот так что то пытаюсь сделать, но не получается тоже
0
|
73 / 69 / 1
Регистрация: 19.05.2010
Сообщений: 167
|
|||||||||||
03.07.2013, 17:52 | 8 | ||||||||||
т.е. в самом начале создается только один элемент и сораняется указатель на него, который не трогается в дальнейшем, иначе не достучаться до элементов будет, а потом при чтении нового числа делается
Можно почитать тут и тут
1
|
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
|
|
03.07.2013, 17:53 [ТС] | 9 |
Это на основе списка, а мне массив надо
0
|
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
|
|
03.07.2013, 18:03 [ТС] | 11 |
То есть указатель на первый и последний элементы будут и там и там?
0
|
73 / 69 / 1
Регистрация: 19.05.2010
Сообщений: 167
|
|
03.07.2013, 18:12 | 12 |
Не совсем понял вопрос
Суть очереди именно в способе доступа, тот элемент, который был первым добавлен и будет прочитан первым, и до второго как бы мимо первого не получится добраться А массив позволяет по индексу обращаться, т.е. сразу прыгать на нужный элемент. То что там указатели на начало и конец - это детали не особо важные, в понятии очередь и массив ключевым моментом является именно способ доступа. По крайней мере это я так понимаю, могу и ошибаться Сделайте оба варианта, сил не много потребуется, но будет что показать преподу. Добавлено через 45 секунд Кроме очереди есть еще стек, там принцип последний пришел - первый ушел
0
|
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
|
|
03.07.2013, 18:13 [ТС] | 13 |
Я просто не особо улавливаю разницу между очередью на основе списка и на основе массива
0
|
73 / 69 / 1
Регистрация: 19.05.2010
Сообщений: 167
|
|
03.07.2013, 18:18 | 14 |
В массиве динамическом, где память выделяется через new можно только заранее указанное число элементов создать
А в очереди - сколько угодно Что делать если в файле будет не 100 чисел, а 1000? А если 10000? Не делать же каждый раз массив который будет на 1000000 значений заранее, хотя может потребоваться только 5 элементов В случае со списком будет заниматься только необходимая память, лишнего не будет зажираться. Разница между очередью на основе списка и на основе массива в том, что в последнем случае это не очередь. Это все равно что спрашивать в чем разница между системным блоком на основе процессора и на основе жесткого диска, это не совместимые понятия.
0
|
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
|
|
03.07.2013, 18:22 [ТС] | 15 |
То есть очереди на основе массива можно сказать не бывает?
0
|
73 / 69 / 1
Регистрация: 19.05.2010
Сообщений: 167
|
|
03.07.2013, 18:29 | 16 |
Из того что я знаю - нет
Иначе как это можно представить? Просто сделать new int[100] - это будет динамический массив А где тогда основной принцип очереди "первый пришел - первый ушел" ? Изменить функционал массива внешними обертками? тогда это будет просто извращение и код ради кода.
0
|
6 / 6 / 4
Регистрация: 18.10.2011
Сообщений: 187
|
|
03.07.2013, 18:39 [ТС] | 17 |
Получается тупо ограниченная очередь
0
|
03.07.2013, 18:39 | |
03.07.2013, 18:39 | |
Помогаю со студенческими работами здесь
17
Очередь на основе массива Очередь на основе массива Стек на основе динамического массива Очередь на основе статического массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |