Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 17:24   #1
Kronoz
 
Регистрация: 21.12.2010
Сообщений: 5
По умолчанию Очередь С++ (очень очень надо)

Смоделировать очередь, в которой реализован такой механизм изъятия элемента из очереди: начало очереди всегда находится в первом элементе массива; при изъятии одного элемента из очереди, все остальные элементы перемещаются на одну позицию ближе к началу массива. После обработки всей заданной входной последовательности найти среднее арифметическое всех элементов очереди.

есть прога очень похожая:

Смоделировать очередь, в которой к описанию очереди добавлена ​​функция wipe_out, которая изымает все элементы из очереди. Каждый раз, когда во входной последовательности встречается число 0, то все элементы должны быть удалены из очереди. После обработки всей заданной входной последовательности проверить, есть ли в очереди одинаковые числа.

[CPP]const int M = 100;
#pragma once
#include <cassert>
#include "q.h"
#include <stdio.h>
#include <tchar.h>
#include <iostream>


// q.h
template <class Item>
class queue
{
private:
Item INFO[M];
int count;
public:
queue( );
void pop( );
void push(const Item& entry);
bool empty( ) const { return (count == 0); }
Item front( ) const;
int size( ) const { return count; }
void show();
void muve();
bool full(){return (INFO[M-1] == M-1);};
void wipe_out();
bool same();

};
template <class Item>
queue<Item>::queue( )
{
count = 0;
INFO[0] = 1;
INFO[M-1] = 0;
}
template <class Item>
Item queue<Item>::front( ) const
{
assert(!empty( ));
return INFO[1];
}
template <class Item>
void queue<Item>:op( )
{
muve();
count--;
}
template <class Item>
void queue<Item>:ush(const Item& entry)
{
assert(!(count > M - 1));
++count;
INFO[++INFO[M-1]] = entry;
}
template <class Item>
void queue<Item>::show()
{
std::cout << "QUENE: ";
for(int i = INFO[0]; i < INFO[M-1]+1; i++){
std::cout << INFO[i] << " " ;
}
std::cout << std::endl;
}
template <class Item>
void queue<Item>::muve()
{
for(int i = INFO[0]; i < INFO[M-1]; i++){
INFO[i] = INFO[i+1];
}
--INFO[M-1];
}
template <class Item>
void queue<Item>::wipe_out()
{
for (int i=0; i<count; i++)
{
muve();
}
count = 0;
}
template <class Item>
bool queue<Item>::same()
{
bool b = false;
for (int i=0; i<count-1; i++)
if (INFO[i]==INFO[i+1]) { b = true; }
return b;
}


//main.cpp
#include "stdafx.h"
using namespace std;

int main()
{
queue<int> q;
int v[M], m;
int k = 0;

cout << "ENTER VALUE OF QUEUE TO CONTINUE OR TEXT TO EXIT..." << std::endl;
while(cin >> v[k++]) { m = k; }

q.show();
for(k = 0; k < m; k++)
{
if (v[k]==0) { q.wipe_out(); q.show(); }
if (v[k]>0) { q.push(v[k]); q.show(); }
if (v[k]<0) { q.pop(); q.show(); }
}
cout << "\nSIZE: " << q.size() << endl;
cout << "EMPTY: " << boolalpha << q.empty() << endl;
cout << "FULL: " << boolalpha << q.full() << endl;
cout << "FRONT: " << q.front() << endl;
cout << "THE SAME ELEMENTS IN QUEUE: " << q.same() << endl;
cin.get();

return 0;
}

[/CPP]
пожалуйтса очень надо!
Kronoz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень-очень надо!Завтра сдавать уже=( Реализовать в виде модуля набор подпрограмм...(Pascal) Dizzy Помощь студентам 4 17.12.2010 17:10