Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
0 / 0 / 1
Регистрация: 17.10.2010
Сообщений: 12
1

Реализовать с использованием массива очередь

21.10.2010, 17:01. Показов 5896. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
13.первое задание
1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.
2) Распечатать полученный массив.
3) Удалить из массива все элементы совпадающие с его минимальным значением.
4) Добавить в начало массива 3 элемента со значением равным среднему арифметическому массива.
5) Распечатать полученный массив.


16.
Реализовать с использованием массива очередь (первый пришел, первый ушел), для чего организовать добавление, удаление элементов в массив и печать массива после каждой операции.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2010, 17:01
Ответы с готовыми решениями:

Реализовать очередь с использованием динамического массива
Реализовать очередь с использованием динамического массива. Помогите с заданием пожалуйста!)

Реализовать очередь с использованием динамического массива
Реализовать очередь с использованием динамического массива.Я сделала код, можете проверить и внести...

Реализовать очередь с использованием структуры
Реализовать очередь с использованием структуры.Помогите с заданием пожалуйста!)

Реализовать двунаправленную очередь на основе одномерного символьного массива
Добрый день! Реализовал программу по данной задаче. На основе одномерного массива символьных...

16
98 / 94 / 16
Регистрация: 16.05.2010
Сообщений: 310
21.10.2010, 17:54 2
первое
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
#include <conio.h>
#include <iostream.h>
#include <time.h>
#include <list>
#include <algorithm>
 
int main()
{   
    cout << "enter size massiva: ";
    int min = 32001, summ;
    cin >> summ;
    list <int> mass(summ);
    summ = 0;
    
    srand(time(NULL));
    for(list <int>::iterator i = mass.begin(); i!= mass.end();i++)
    {
        *i = rand()%200;
        cout << *i << ends;
        if(*i < min) min = *i;// определение минимального елемента
        summ+=*i;//поиск среднего значения
    }
    summ = summ/mass.size();
    cout << endl;   
    cout << "************\n";
    cout << "min is: "<< min << endl;
    std::remove(mass.begin(), mass.end(), min);
 
    for(int i = 0;i<3;i++)
        mass.push_front(summ);
 
    for(list <int>::iterator i = mass.begin(); i!= mass.end();i++)
        cout << *i << ends;
    
    _getch();
//  cin.ignore();
    return 0;
}
1
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
21.10.2010, 18:09 3
IchMors, есть подозрение, что это список, а не массив
1
IchMors
21.10.2010, 18:10
  #4

Не по теме:

:rofl: что то теперь оно забралось и в мою душу )))

1
easybudda
21.10.2010, 18:26
  #5

Не по теме:

Цитата Сообщение от irishka-peyton Посмотреть сообщение
Реализовать с использованием массива очередь
По-моему самый нелепый способ реализовывать очередь - это через массив...

1
0 / 0 / 1
Регистрация: 17.10.2010
Сообщений: 12
21.10.2010, 18:32  [ТС] 6
согласна,но такое задание у меня другово выхода к сожелению нет((
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
24.10.2010, 13:04 7
Пожалуйста:
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
#include <stdio.h>
#include <assert.h>
 
#define MAXSIZ 10
 
typedef struct {
        int data[MAXSIZ];
        int top;
} queue_t;
 
void push(queue_t *q, int value) {
        assert(q != NULL);
 
        if(q->top == MAXSIZ) {
                fprintf(stderr, "queue overflow\n");
                return;
        }
 
        q->data[q->top++] = value;
}
 
void pop(queue_t *q) {
        int i = 0;
        assert(q != NULL);
 
        if(q->top == 0) {
                fprintf(stderr, "queue is empty\n");
                return;
        }
 
        for(i = 0; i < q->top && i < MAXSIZ; ++i)
                q->data[i] = q->data[i+1];
 
        --(q->top);
}
 
int back(queue_t *q) {
        assert(q != NULL);
 
        if(q->top == 0) {
                fprintf(stderr, "queue is empty\n");
                return 0;
        }
 
        return q->data[q->top - 1];
}
 
int front(queue_t *q) {
        assert(q != NULL);
 
        if(q->top == 0) {
                fprintf(stderr, "queue is empty\n");
                return 0;
        }
 
        return q->data[0];
}
 
int empty(queue_t *q) {
        assert(q != NULL);
        return q->top == 0;
}
 
int size(queue_t *q) {
        assert(q != NULL);
        return q->top;
}
 
void create(queue_t *q) {
        int i = 0;
        assert(q != NULL);
 
        q->top = 0;
        for(i = 0; i < MAXSIZ; ++i)
                q->data[i] = 0;
}
 
 
int main() 
{
        int i = 0;
        queue_t q;
 
        create(&q);
 
        for(i = 0; i < 10; ++i)
                push(&q, i + 1);
 
        while(!empty(&q)) {
                printf("%d -> ", front(&q));
                pop(&q);
        }
        printf("\b\b\b   \n");
 
        return 0;
}
1
25 / 9 / 4
Регистрация: 17.10.2010
Сообщений: 203
24.10.2011, 18:06 8
Цитата Сообщение от fasked Посмотреть сообщение
Пожалуйста:
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
#include <stdio.h>
#include <assert.h>
 
#define MAXSIZ 10
 
typedef struct {
        int data[MAXSIZ];
        int top;
} queue_t;
 
void push(queue_t *q, int value) {
        assert(q != NULL);
 
        if(q->top == MAXSIZ) {
                fprintf(stderr, "queue overflow\n");
                return;
        }
 
        q->data[q->top++] = value;
}
 
void pop(queue_t *q) {
        int i = 0;
        assert(q != NULL);
 
        if(q->top == 0) {
                fprintf(stderr, "queue is empty\n");
                return;
        }
 
        for(i = 0; i < q->top && i < MAXSIZ; ++i)
                q->data[i] = q->data[i+1];
 
        --(q->top);
}
 
int back(queue_t *q) {
        assert(q != NULL);
 
        if(q->top == 0) {
                fprintf(stderr, "queue is empty\n");
                return 0;
        }
 
        return q->data[q->top - 1];
}
 
int front(queue_t *q) {
        assert(q != NULL);
 
        if(q->top == 0) {
                fprintf(stderr, "queue is empty\n");
                return 0;
        }
 
        return q->data[0];
}
 
int empty(queue_t *q) {
        assert(q != NULL);
        return q->top == 0;
}
 
int size(queue_t *q) {
        assert(q != NULL);
        return q->top;
}
 
void create(queue_t *q) {
        int i = 0;
        assert(q != NULL);
 
        q->top = 0;
        for(i = 0; i < MAXSIZ; ++i)
                q->data[i] = 0;
}
 
 
int main() 
{
        int i = 0;
        queue_t q;
 
        create(&q);
 
        for(i = 0; i < 10; ++i)
                push(&q, i + 1);
 
        while(!empty(&q)) {
                printf("%d -> ", front(&q));
                pop(&q);
        }
        printf("\b\b\b   \n");
 
        return 0;
}
можно Вас попросить написать комментарии к каждой функции! чтобы было легче разобраться! а то я скопировал код запустил он мне выдал числа от 1 до 10 и всё, что бы я не нажал он закрывает программу!
Заранее спасибо!
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
24.10.2011, 18:42 9
Цитата Сообщение от Ruslanishe Посмотреть сообщение
можно Вас попросить написать комментарии к каждой функции!
Данные queue:
  • MAXSIZ - (константа) максимальное количество элементов в очереди.
  • data - массив данных.
  • top - индекс первого элемента в очереди.
Интерфейс queue:
  • push - положить значение value в очередь q.
    В случае переполнения значение в очередь помещено не будет.
  • pop - извлечь значение из очереди q.
  • back - получить последний элемент из очереди q.
  • front - получить первый элемент из очереди q.
  • empty - возвращает 1, если очередь q пуста и 0 в обратном случае.
  • size - возвращает размер очереди q.
  • create - инициализация очереди q.
На самом деле функции back не должно быть, она не вписывается в понятие FIFO. Функция create избыточна - обнулять массив не обязательно. Да и вообще тут все плохо с обработкой ошибок.
запустил он мне выдал числа от 1 до 10 и всё, что бы я не нажал он закрывает программу!
Так и должно быть.
0
25 / 9 / 4
Регистрация: 17.10.2010
Сообщений: 203
24.10.2011, 18:50 10
Спасибо!!
Тогда получается добавление элементов осуществляется с помощью этой строки!
C
1
2
for(i = 0; i < 10; ++i)
                push(&q, i + 1);
и изменяя MAXSIZ и конечное значение i мы можем получать разное количество элементов!
а изменяя начальное i получать от определённого числа!

а как насчёт удаления?
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
24.10.2011, 19:26 11
Цитата Сообщение от Ruslanishe Посмотреть сообщение
а как насчёт удаления?
Написал же, что функция pop.
1
25 / 9 / 4
Регистрация: 17.10.2010
Сообщений: 203
25.10.2011, 07:03 12
Цитата Сообщение от fasked Посмотреть сообщение
Написал же, что функция pop.
Извините меня!!!, но я представлял себе решение этого задания по другому:
допустим мы задали эту очередь а потом идёт выбор добавить или удалить! с последующей печатью после каждого действия!
что-то я не понимаю эти очереди!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12456 / 7480 / 1753
Регистрация: 25.07.2009
Сообщений: 13,759
25.10.2011, 09:22 13
Цитата Сообщение от Ruslanishe Посмотреть сообщение
Извините меня!!!, но я представлял себе решение этого задания по другому:
допустим мы задали эту очередь а потом идёт выбор добавить или удалить! с последующей печатью после каждого действия!
что-то я не понимаю эти очереди!
Ну зайдите в магазин, постойте у кассы, понаблюдайте. С одной стороны в неё (в очередь) встают с набором покупок, с другой выходят рассчитавшись. Пока не посчитает кассирша, на сколько набрал тот, кто первым подошёл, стоимость покупок у стоящих за ним неизвестна. При этом в общем случае стоящие в очереди не могут перестраиваться по стоимости покупок или ещё каким-нибудь способом. Первым пришёл - первым вышел. FIFO - First In First Out.
Более сложный случай - двухсторонние очереди. Это, когда с любой стороны можно одного поставить, или одного убрать. Но при этом всё равно что там в середине очереди происходит - тайна...
2
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
25.10.2011, 10:57 14
Цитата Сообщение от Ruslanishe Посмотреть сообщение
допустим мы задали эту очередь а потом идёт выбор добавить или удалить! с последующей печатью после каждого действия!
Ну как бы переписывайте код, так чтобы можно было делать выбор и производилась печать после каждого действия. Я в своем примере демонстрировал лишь тот факт, что числа входят в очередь и выходят из очереди в правильном порядке.

Не по теме:

Цитата Сообщение от Ruslanishe Посмотреть сообщение
что-то я не понимаю эти очереди!
Хм... интересно при чем здесь все остальные участники форума.

1
25 / 9 / 4
Регистрация: 17.10.2010
Сообщений: 203
25.10.2011, 14:39 15
Цитата Сообщение от fasked Посмотреть сообщение
Ну как бы переписывайте код, так чтобы можно было делать выбор и производилась печать после каждого действия. Я в своем примере демонстрировал лишь тот факт, что числа входят в очередь и выходят из очереди в правильном порядке.
Спасибо! вот это я и не мог понять!!
Ну в общем функции остаются те же??? надо будет сделать выбор и в зависимости от выбора вызывать ту или иную функцию??

Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от fasked Посмотреть сообщение
Хм... интересно при чем здесь все остальные участники форума.
Конечно же участники не причём просто как тов голове не укладывается)))
Извините за предоставленные неудобства!!!

0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
25.10.2011, 14:42 16
Цитата Сообщение от Ruslanishe Посмотреть сообщение
Ну в общем функции остаются те же??? надо будет сделать выбор и в зависимости от выбора вызывать ту или иную функцию??
У Вас есть интерфейс "очереди". С этим интерфейсом Вы можете делать, что угодно. Грубо говоря, Вам надо переписать функцию main().
0
25 / 9 / 4
Регистрация: 17.10.2010
Сообщений: 203
25.10.2011, 14:44 17
Цитата Сообщение от fasked Посмотреть сообщение
У Вас есть интерфейс "очереди". С этим интерфейсом Вы можете делать, что угодно. Грубо говоря, Вам надо переписать функцию main().
Вот большое спасибо! с main() - ом разберусь!!
0
25.10.2011, 14:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2011, 14:44
Помогаю со студенческими работами здесь

Реализовать очередь с использованием массива
Помогите. Реализовать очередь с использованием массива. Разработать все в терминах класса. Методы:...

Реализовать очередь с использованием двух стеков
Задали нам такое задание, перерыл весь интернет, но так и не понял, что от нас требуется :wall:...

Реализовать Очередь при помощи массива
Помогите реализовать Очередь при помощи массива. +добавление элементов очереди +удаление...

Очередь на основе массива с использованием сдвига элементов при удалении
Добрый день, помогите пожалуйста реализовать очередью на основе массива с использованием сдвига...

Реализовать стек с использованием массива
помогите пожалуйста с решением Реализовать стек с использованием массива. Разработать...

Реализовать стек с использованием массива
Реализовать стек с использованием массива. Разработать все в терминах класса. Методы: добавить...


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

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