Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.62
irishka-peyton
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 12
#1

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

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

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


16.
Реализовать с использованием массива очередь (первый пришел, первый ушел), для чего организовать добавление, удаление элементов в массив и печать массива после каждой операции.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2010, 17:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализовать с использованием массива очередь (C++):

Реализовать с использованием массива двунаправленное кольцо - C++
В программе нужно: 1) Реализовать с использованием массива двунаправленное кольцо (просмотр возможен в обе стороны, от последнего...

Реализовать однонаправленное кольцо с использованием массива - C++
Добрый день. У меня возникло много вопросов. На практике нам дали разбирать тему с одномерными массивами. Как реализовывать простой...

Реализовать очередь - C++
класс figure #pragma once class figure { public: figure(void); virtual ~figure(void); //figure * adr; figure* prev;

Реализовать очередь - C++
Очередь - это устройство для хранения данных, похожее на стек. Отличие в том, что в стеке последний сохраненный элемент будет первым...

Реализовать очередь на массиве - C++
Начал знакомиться с очередью, хотелось бы увидеть пример реализации ее на массиве и без классов пожалуйста, их еще не проходил:) И если...

Реализовать добавление элементов в очередь - C++
Помогите сделать,кто знает: Создать очередь случайных чисел. Реализовать добавление элементов в очередь, затем вывод очереди и удаление...

16
IchMors
97 / 93 / 4
Регистрация: 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
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
21.10.2010, 18:09 #3
IchMors, есть подозрение, что это список, а не массив
1
IchMors
21.10.2010, 18:10
  #4

Не по теме:

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

1
easybudda
21.10.2010, 18:26
  #5

Не по теме:

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

1
irishka-peyton
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 12
21.10.2010, 18:32  [ТС] #6
согласна,но такое задание у меня другово выхода к сожелению нет((
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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
Ruslanishe
25 / 9 / 1
Регистрация: 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
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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
Ruslanishe
25 / 9 / 1
Регистрация: 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
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
24.10.2011, 19:26 #11
Цитата Сообщение от Ruslanishe Посмотреть сообщение
а как насчёт удаления?
Написал же, что функция pop.
0
Ruslanishe
25 / 9 / 1
Регистрация: 17.10.2010
Сообщений: 203
25.10.2011, 07:03 #12
Цитата Сообщение от fasked Посмотреть сообщение
Написал же, что функция pop.
Извините меня!!!, но я представлял себе решение этого задания по другому:
допустим мы задали эту очередь а потом идёт выбор добавить или удалить! с последующей печатью после каждого действия!
что-то я не понимаю эти очереди!
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
25.10.2011, 09:22 #13
Цитата Сообщение от Ruslanishe Посмотреть сообщение
Извините меня!!!, но я представлял себе решение этого задания по другому:
допустим мы задали эту очередь а потом идёт выбор добавить или удалить! с последующей печатью после каждого действия!
что-то я не понимаю эти очереди!
Ну зайдите в магазин, постойте у кассы, понаблюдайте. С одной стороны в неё (в очередь) встают с набором покупок, с другой выходят рассчитавшись. Пока не посчитает кассирша, на сколько набрал тот, кто первым подошёл, стоимость покупок у стоящих за ним неизвестна. При этом в общем случае стоящие в очереди не могут перестраиваться по стоимости покупок или ещё каким-нибудь способом. Первым пришёл - первым вышел. FIFO - First In First Out.
Более сложный случай - двухсторонние очереди. Это, когда с любой стороны можно одного поставить, или одного убрать. Но при этом всё равно что там в середине очереди происходит - тайна...
2
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
25.10.2011, 10:57 #14
Цитата Сообщение от Ruslanishe Посмотреть сообщение
допустим мы задали эту очередь а потом идёт выбор добавить или удалить! с последующей печатью после каждого действия!
Ну как бы переписывайте код, так чтобы можно было делать выбор и производилась печать после каждого действия. Я в своем примере демонстрировал лишь тот факт, что числа входят в очередь и выходят из очереди в правильном порядке.

Не по теме:

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

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

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

Не по теме:

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

0
25.10.2011, 14:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2011, 14:39
Привет! Вот еще темы с ответами:

Реализовать очередь на одномерном массиве - C++
Программа должна позволять многократно выполнять операции над очередью. При выполнении функции input переменная last увеличивается на...

Программа с использованием объектов типа стека или очередь на C. - C++
Помогите пожалуйста с написанием. Программа с использованием объектов типа стека или очередь. На стандартный ввод программы поступают...

Реализовать очередь на базе односвязного списка - C++
собственно, весь вопрос содержится в теме. Помогите, пожалуйста, а то я совсем не понимаю как это сделать...

Реализовать очередь Unemployed на бирже труда - C++
Кто может помочь написание программы на c++ Задание: Реализовать очередь Unemployed на бирже труда. Один элемент списка безработных...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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