Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Очередь в С++)) помогите исправить

49K
22 июня 2009 года
Trash1985
5 / / 22.06.2009
у меня задание:
реализовать список в виде очереди. Элементы списка - предмет, оценка, полученная студентом по этому предмету, его фамилия.

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

пишу в Microsoft Visual Studio 2008

Цитата:
#include "stdafx.h"
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<stdlib.h>
using namespace std;

struct data
{[INDENT]char name[10];
char predmet[10];
int ocenka;[/INDENT]

};

class ochered
{ [INDENT]data *ocher;
public:
int ini ( void )
{ [INDENT]int size;
cout<<"Vvedite razmer novoi ocheredi\n ";
cin>>size;
ocher = new data [size];
return size;[/INDENT] }

//Проверка заполнения очереди
void prov ( int top, int size )
{ [INDENT]if( top == size-1 )
{ [INDENT]cout<<"Ostalsa odin element do zapolneniya ocheredi \n";
getch ();[/INDENT] }[/INDENT] }

//Добавление элемента в конец очереди
int add ( int top, int size )
{ [INDENT]prov ( top, size ) ;
cout<<"Imya stedenta - ";
cin>>ocher[top].name;
cout<<"Predmet - ";
cin>>ocher[top].predmet;
cout<<"Ocenka studenta - ";
cin>>ocher[top].ocenka;
top++;
return top; [/INDENT] }

//Удаление элемента в начале очереди
int dellete (int top)
{ [INDENT]top--;
return top;[/INDENT] }


//Вывод очереди на экран
void out ( int top )
{ [INDENT]int i;
for( i=0; i<=top-1; i++ )
{
[INDENT]cout<<ocher.name<<"\t";
cout<<ocher.predmet<<"\t";
cout<<ocher.ocenka<<"\n";[/INDENT] }[/INDENT] }[/INDENT]};

int main()
{ [INDENT]system("cls");
ochered a;
int n, size, top;
top=0;
n = 0;
size=a.ini();
while(n!=4)
{[INDENT]system("cls");
cout<<"Menu\n";
cout<<"1- Dobavit elementi v ochered\n";
cout<<"2- Udalit 1 element iz ocheredi\n";
cout<<"3- Vivod ocheredi na ekran\n";
cout<<"4- Vihod\n";
cout<<"Vvedite 1, 2, 3, ili 4 ?\n";
cin>>n;
switch (n)
{ [INDENT]case 1:
top=a.add ( top, size );
cout<<"Element dobavlen\n";
getch();
break;

case 2:
top=a.dellete(top);
cout<<"Element udalen\n";
getch();
break;

case 3:
a.out( top );
cout<<"Vse elementi vivedeni\n";
getch ();
break;[/INDENT] }[/INDENT] }[/INDENT] getch();
return 0;
}

307
22 июня 2009 года
Artem_3A
863 / / 11.04.2008
Цитата: Trash1985
у меня задание:
реализовать список в виде очереди. Элементы списка - предмет, оценка, полученная студентом по этому предмету, его фамилия.

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

пишу в Microsoft Visual Studio 2008



читать невозможно, привиди код в божеский вид!=\=) и как то определись что тебе надо, реализовать список в виде очереди(для меня это нонсенс), или очередь через список! и в твоем коде, на сколько мне позволил разобрать твой "стиль" я стека вообще ни где не увидел, ни стека, ни списка, вот динамический массив увидел который как бы имитирует стек, но вот список, боже упаси!=))))))

294
22 июня 2009 года
Plisteron
982 / / 29.08.2003
Этот код и не должен работать. методы add(), delete() и пр. в описании класса отсутствуют, и реализованы они не в виде методов класса, а в виде отдельных функций. Тем не менее, вызываются они почему-то как методы класса.

Почитай хотя бы вот это.
Или http://thalion.kiev.ua/attachment.php?id=16
И советую не изобретать велосипед (если, конечно, изобретение этого велосипеда не является целью, скажем, контрольной по программированию), а разобраться с std::list или std::queue (что больше подойдёт -- решай сам).
спэшл фор ю (почитаешь про очереди).

Добавлено:
Извиняюсь, код не разобрал (отступов нету, трудно закрывающие скобки ловить), посему весь мой вышеприведённый наезд про методы класса. А они просто в описании класса сразу и реализованы. Вывод: приведи в порядок код!
9.3K
22 июня 2009 года
iridum
175 / / 26.08.2007
Можно и так организовать.

Код:
#include <deque>;

struct data
{
    char name[10];
    char predmet[10];
    int ocenka;
};
deque<data> ddata;
//....
data data1;
for(int i = 0;i<5;i++)
{
    data1.ocenka = i;
    ddata.push_back(data1);
}
//...
for(int=0;i<ddata.size();i++)
{
    cout << ddata.ocenka << endl;
}
294
22 июня 2009 года
Plisteron
982 / / 29.08.2003
Цитата: iridum
ОФФ: Можно и так организовать.

Ну вот! Мы тут так весело над новичком стебались, как вдруг пришёл iridum и всё испортил!

9.3K
22 июня 2009 года
iridum
175 / / 26.08.2007
оффтопик

Цитата: Plisteron
Ну вот! Мы тут так весело над новичком стебались, как вдруг пришёл iridum и всё испортил!



Я тож люблю постебаться :) в данном случает на д вами :p, и вообще я показал как правильно код оформлять

294
22 июня 2009 года
Plisteron
982 / / 29.08.2003
Цитата: iridum
Я тож люблю постебаться :) в данном случает на д вами :p

ОФФ: Мстишь за http://forum.codenet.ru/showthread.php?t=55355 ? :D

307
22 июня 2009 года
Artem_3A
863 / / 11.04.2008
Цитата: Plisteron
Ну вот! Мы тут так весело над новичком стебались, как вдруг пришёл iridum и всё испортил!



Цитата: iridum
оффтопик
Я тож люблю постебаться :) в данном случает над вами :p, и вообще я показал как правильно код оформлять



над бедным новичком постебется препод, когда он принесет ему лабу с STL'ой очередью!!!=)))) iridum - красавчег!=)))

9.3K
22 июня 2009 года
iridum
175 / / 26.08.2007
Цитата: Artem_3A
над бедным новичком постебется препод, когда он принесет ему лабу с STL'ой очередью!!!=)))) iridum - красавчег!=)))



Если препод прошарит в чём подвох :D, я в вузе когда учился, и принёс преподу лабу на плюсах, он у меня спрашивал что какой оператор значит:), это при том что у нас был хороший вуз с преподами совковой закалки, щас такое образование много в каких вузах что капец....
ps. Знаю етсь вузы где Haskell учат, вот зайдёт такой, над ним не постебаешься(( Надо Haskell учить :))

307
22 июня 2009 года
Artem_3A
863 / / 11.04.2008
Цитата: iridum
Если препод прошарит в чём подвох :D, я в вузе когда учился, и принёс преподу лабу на плюсах, он у меня спрашивал что какой оператор значит:), это при том что у нас был хороший вуз с преподами совковой закалки, щас такое образование много в каких вузах что капец....
ps. Знаю етсь вузы где Haskell учат, вот зайдёт такой, над ним не постебаешься(( Надо Haskell учить :))



всякое бывает, я девченке лабу писал, сдавала, выходит ржет, я спрашиваю "чего стряслось", она - "не поверишь, препод сказал, что принимает, но что бы в следующий раз так сложно не писала, типа он въехать не может"!=) лаба при чем была, что то типа структура + сортировки + чтение\запись в файл!=)

49K
22 июня 2009 года
Trash1985
5 / / 22.06.2009
Цитата:
//Удаление элемента в начале очереди
int dellete (int top)
{[INDENT]top--;
return top;[/INDENT]}



эта часть кода удаляет последний элемент, что характерно для стека, а мне надо, что бы он удалял первый и смещал вверх..... если я не сдам завтра эту и еще с двусвязным списком лабы, мне будет ОООПААА(((

9
22 июня 2009 года
Lerkin
3.0K / / 25.03.2003
Просто интересно, а чисто [FONT="Courier New"]top--[/FONT] сделать не судьба? без вызова этой... кхе... функции.

Цитата: Trash1985
... если я не сдам завтра эту и еще с двусвязным списком лабы, мне будет ОООПААА(((


Большая работа. Вы предлагаете за вас её сделать, да ещё и в оперативном порядке? Хоть бы приз какой-нить посулили...

49K
22 июня 2009 года
Trash1985
5 / / 22.06.2009
а чем посулить смогу??
49K
23 июня 2009 года
Trash1985
5 / / 22.06.2009
если кому интересно решил проблему вот таким путем
Цитата:
int dellete (int top)
{
[INDENT]for (int i=0; i<top; i++)
[INDENT]ocher=ocher[i+1];[/INDENT]
[/INDENT] top--;
return top;
}



всем спасибо!!

9.3K
23 июня 2009 года
iridum
175 / / 26.08.2007
Цитата: Trash1985
если кому интересно решил проблему вот таким путем


всем спасибо!!



Ну вот видишь и сам зделал, большой нигерский respect!!!, учи STL ато смотреть как хватают звёзды с неба профы програмя на С++ в манере обычного С не особо приятно, хотя каждому своё

49K
23 июня 2009 года
Trash1985
5 / / 22.06.2009
всему свое время))) и до него дойдем))
9.5K
25 июня 2009 года
ROLpogo
80 / / 22.08.2006
Для работы с массивами эта прога может и прокатит. Но "очередь" и "стек" подразумевают работу с указателями на объекты.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог