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

Заполнить очередь рандомом(начало я написала) - C++

Восстановить пароль Регистрация
 
Anna992
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 3
10.10.2013, 22:29     Заполнить очередь рандомом(начало я написала) #1
Буду очень благодарна за помощь. Вот у меня есть код. тут у меня функции добавления элементов, я хочу в еще одной функции пользователя заполнить свою очередь рандомом от 1 до 100. Мне это нужно для задания. мое задание "поместить максимальный элемент очереди на первую позицию.".я так понимаю,что очередь мне надо пересобрать. Но для начала нужно хотя бы ее заполнить, по этому прошу у вас помощи. вот кусок кода с самой структурой:
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
#include<iostream>
#include<stdlib.h>
#include <time.h>
struct queue
{
    int data;
    queue *next;
}*head, *tail, *head_pos, *tail_pos;
void push(queue **head, queue **tail, int data,)
{
    queue *element=new queue;
    
    element->data=data;
    element->next=NULL;
    if(*head==NULL)
        *head=*tail=element;
    else
    {
        (*tail)->next=element;
        *tail=element;
    }
}
void pop(queue ** head)
{
    *head=(*head)->next;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
10.10.2013, 22:39     Заполнить очередь рандомом(начало я написала) #2
Вопрос 1. Вы написали реализацию очереди (включая функцию ее заполнения), но не можете простым циклом добавлять в нее рандомное число?
Вопрос 2. (точнее замечание). Очередь нельзя "пересобрать". Она на то и очередь, что в нее кто первый "зашел", тот первый и выходит.
"поместить максимальный элемент очереди на первую позицию." А точно так звучит задание, а не: "создается контейнер и заполняется элементами, которые в качестве данных сберегают уникальные числа диапазоном от 1 до 100. Поместить максимальный элемент очереди на первую позицию."?
Anna992
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 3
10.10.2013, 22:48  [ТС]     Заполнить очередь рандомом(начало я написала) #3
Мне надо просто заполнить рандомом от 1 до 100, Я знаю как просто работает рандом и могу его написать. Я не знаю, как правильно указатели расставить ,чтобы передать значение. Мне нужно только это. Остальное я уже знаю как делать и сделаю. Проблема только в моем неработающем рандоме. Как правильно передать значение "а" элементам моей очереди. Вот это единственное что меня интересует. Помогите пожалуйста с этим.
C++
1
2
3
4
5
6
7
8
9
10
11
12
 void random(queue **head, queue **tail, int data)
{
 
     int a;
   srand(time(NULL));
   
   for(int i = 1; i < 100; i++)
   {
      a = 1 + rand() % 100;
   }
 
}
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
10.10.2013, 23:08     Заполнить очередь рандомом(начало я написала) #4
Цитата Сообщение от Anna992 Посмотреть сообщение
Как правильно передать значение "а" элементам моей очереди.
Цитата Сообщение от Anna992 Посмотреть сообщение
тут у меня функции добавления элементов,
Бинго?

Добавлено через 11 минут
А вообще я бы сделал так (если очередь уже реализована вместе с функцией добавление элементов).
1. Написать цикл for по i от 100 до 1 с шагом -1.
2. В цикле if (rand() % 2), то enqueue(i);
В итоге полчим сортированную очередь, в которой максимальный элемент на 1-й позиции.
Anna992
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 3
11.10.2013, 22:25  [ТС]     Заполнить очередь рандомом(начало я написала) #5
Я тут написала нечто ужасное. Помогите исправить, если тут хоть что-то правильно.
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
#include<iostream>
#include<stdlib.h>
#include <time.h>
using namespace std;
 
struct qitem {
  struct qitem *next, *prev;
  int data;
};  
struct queue {
  struct qitem *first, *last;
};  
void spisok( qitem **first,  qitem **last, qitem **next, qitem **prev,int N )
{
    
struct queue my_q = {0, 0};
struct qitem *add_head(struct queue *, struct qitem *),
             *add_tail(struct queue *, struct qitem *),
             *remove(struct queue *, struct qitem *),
             *find_max(struct queue *),
             *make_item(int);
cout <<"vvedit N";
cin >> N;
for (int i = 0; i < N; i++)// заполним очередь 
   add_tail(&my_q, make_item((rand() % 100) + 1));
add_head(&my_q, remove(&my_q, find_max(&my_q)));
cout <<&my_q<<endl;
}
int main()
{
    
}
Yandex
Объявления
11.10.2013, 22:25     Заполнить очередь рандомом(начало я написала)
Ответ Создать тему
Опции темы

Текущее время: 22:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru