Очередь в C++ - Форум
Пятница, 09.12.2016, 12:35
Задачи по информатике
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ignorer, KOT_B_MEIIIKE, PASCAL26, atvrider 
Форум » Решение задач по информатике » Задачи по программированию + блок-схемы » Очередь в C++ (Запрограммировать очередь)
Очередь в C++
Кнопка918Дата: Вторник, 13.04.2010, 20:52 | Сообщение # 1
Рядовой
Группа: Новичок
Сообщений: 4
[ 0 ]
Статус: Offline
Запрограммировать очередь. Емкость очереди 10 элементов (A,B,C,D,E,F,G,H,I,J). Один элемент находится в очереди 3 единицы времени. В течение одной единицы времени в очереди может появиться не более 2 элементов.

Помогите, пожалуйста, составить программу на С++... Очень нужно
 
GrihaIДата: Среда, 14.04.2010, 11:18 | Сообщение # 2
Генерал-полковник
Группа: Участник
Сообщений: 89
[ 1 ]
Статус: Offline
Раз в 3 ед. времени удаляем, в 1ед. времени добавляем (1 или 2 элемента рандомно) ?
элементы эти -> (A,B,C,D,E,F,G,H,I,J) или случайные?
Выводить после каждого изменения или в конце?
Ед. времени вводится или чему то равна?


Собираю деньги на инв. коляску. С предложениями писать в личку или мыло.
 
Кнопка918Дата: Среда, 14.04.2010, 14:46 | Сообщение # 3
Рядовой
Группа: Новичок
Сообщений: 4
[ 0 ]
Статус: Offline
Элементы эти. Как в задании было написано, так и написала, слово в слово. Я не очень в этом понимаю...(((

Вот пример очереди из 5 элементов.

Прикрепления: 6241157.jpg(354Kb)


Сообщение отредактировал Кнопка918 - Среда, 14.04.2010, 14:46
 
GrihaIДата: Четверг, 15.04.2010, 13:13 | Сообщение # 4
Генерал-полковник
Группа: Участник
Сообщений: 89
[ 1 ]
Статус: Offline
почти сделал, но при вызове диструктора виснет.
доработаю напильником, выложу.


Собираю деньги на инв. коляску. С предложениями писать в личку или мыло.
 
Кнопка918Дата: Четверг, 15.04.2010, 13:24 | Сообщение # 5
Рядовой
Группа: Новичок
Сообщений: 4
[ 0 ]
Статус: Offline
Заранее спасибо smile
 
GrihaIДата: Четверг, 15.04.2010, 19:13 | Сообщение # 6
Генерал-полковник
Группа: Участник
Сообщений: 89
[ 1 ]
Статус: Offline
Вобщем сделал.
1 - Очередь 10 символов.
2 - Каждую секунду добавляется 1 или 2 символа (рандомно).
3 - Каждую 3 секунду удаляется 1 символ.
4 - Символы выбираются рандомно из тих A,B,C,D,E,F,G,H,I,J.
5 - Время реальное.
Баг остался, я его закомментировал и выделил. Проблема в том что после закрытия проги не очищается оперативка.

#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
class queue{
char *p;
int n,head,tail;//количество,начало,конец
int next(int i){if(i==n)return 0;else return i+1;}
public:
queue(int N):n(N),head(0),tail(0){p=new char[n];}//конструктор
/////////////////////////////////////////////////////////
//~queue(){delete[]p;}//деструктор
//////////////////////////////////////////////////////////
int add(char x);//объявление функций
char sub();
void show();
int out();
};
int queue::add(char x)//добавление в очередь
{
//if(next(tail) == 0)
if (next(tail)==head)
{

return 1;
}
else
{
p[tail]=x;tail=next(tail);//записываем в очередь и увеличиваем конец на еденицу
return 0;
}
}
char queue::sub()//удаление
{
if (tail==head){cout<<"Очероедь пуста\n";return -1;}
else{int h=head;//в h записываем head
head=next(head);//увеличиваем head
return p[h];}//возвращаем значение первого символа
}
void queue::show()
{
int i=head;
if (head!=tail)//если очередь не пустая
do{
cout<<p[i]<<" ";
i=next(i);
}while(i!=tail);//выполнять пока i не будет конец
cout<<endl;
}
int queue::out()
{
if((tail+1)==head)
{
cout<<"\nОчередь заполнена\n";
return 0;
}
else return 1;
}
void main()
{
char bukva;
int i=1,temp=0,s=0,exit=1;
srand(time(NULL));
queue q(10);
do
{
if (i>=3)
{ cout<<"\nПрошла: "<<i<<"с.\n";
cout<<"взяли "<<q.sub()<<"\n";//удаление
i=1;//сброс времени
q.show();//выод на екран
Sleep(1000);//пауза 1 сек
}
else
{
cout<<"\nПрошла: "<<i<<"с.\n";
cout<<"добавили ";
temp=rand()%2+1;//1или 2 символа
for(s=0;s<temp;s++)
{
bukva=rand()%10+65;
if(q.add((char)bukva))// если функция "q.add" не добавила
{
exit=0;
break;
}
else cout<<" "<<bukva;
}
cout<<endl;
q.show();//выод на екран
exit=q.out();
i++;
Sleep(1000);
}
}while(exit);
}


Собираю деньги на инв. коляску. С предложениями писать в личку или мыло.
 
Форум » Решение задач по информатике » Задачи по программированию + блок-схемы » Очередь в C++ (Запрограммировать очередь)
Страница 1 из 11
Поиск:

Copyright MyCorp © 2016