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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2013, 22:00   #1
Demetriusss
Новичок
Джуниор
 
Регистрация: 19.12.2013
Сообщений: 1
По умолчанию Простая программа с очереддю и стеками

Задача состояло всё сделать в классах, кое как я умудрился это сделать со стеками однако с очередями оказалось труднее ,ошибок нет однако программка не работает подозреваю что всё дело в:
while(cur)
{
pr=cur;cur=cur->uk;
} if(pr)
pr->uk=now;
else*q=now;}


Но как мне всё связать?


Вот сама программа:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <conio.h>
//FILE *frz;
#define Stack class stack
//Stack{int inf;Stack*uk;};
FILE *f;
#define Queue class queue

//Queue {int info;Queue*uk;};

/*Stack
{
public:
int inf;
Stack*uk;
void dops(Stack **s,int dat)
{
Stack *now;
now=(Stack*)malloc(sizeof(Stack));
now->inf=dat;
now->uk=*s;
*s=now;
}
int uds(Stack **s,int*err)
{
Stack *old=*s;
int old_inf=0;
if(*s)
{
old_inf=old->inf;*s=(*s)->uk;
free(old);
*err=0;
}
else*err=1;
return(old_inf);
}
int chts(Stack *s,int*err)
{if(s)
{*err=0;
return s->inf;
}
else
{fprintf(frz," free ");
*err=1;
return 0;
}}
};
*/

Queue
{
public:
int info;
Queue*uk;
void dop(Queue**q,int dat)
{
Queue*cur=*q; //точка на 1 элемент
Queue*pr=0; //точка на ранний элемент
Queue*now; //точка на новый элемент
now=(Queue*)malloc(sizeof(Queue)); //готовка ОрМ
now->info=dat; //данные в элементе
now->uk=0; //последний элемент очереди
while(cur) //поиск конца очереди на новый элемент
{
pr=cur;cur=cur->uk;
} //работа в очереди
if(pr)
pr->uk=now; //на новый элемент
else*q=now; //новый элемент явл. первым
}

int ud(Queue**q,int*err)
{
int val=0;
Queue*old=*q; //старая точка на удаление элемента
if(*q)
{
val=old->info;
*q=(*q)->uk;
free(old);
*err=0;
}
else*err=1;
return val;
}
int cht(Queue*q,int*err)
{
if(q)
{
*err=0;
return q->info;
}
else
{
*err=1;
printf(" free ");
return 0;
}
}
};

//Stack*s1,*s2;
//Queue*q1,*q2;


void main()
{
setlocale(LC_ALL,"Russian");
int err,er,i;

// stack S,s;
queue Q,q;
//stack *s1,*s2;
queue *q1,*q2;
//s1=&S; s2=&s;
q1=&Q; q2=&q;


/*frz=fopen("con","w");
printf("Stack free?:\n");
printf("stack 1;inf=%d\n",S.chts(s1,&err));
printf("stack 2;inf=%d\n",s.chts(s2,&err));
printf("Stack s1: добавление, чтение\n");
for(i=12;i<16;i++)
S.dops(&s1,i);
printf("%15d%12d\n",i,S.chts(s1,&er r));
printf("Заполнение стека s2 элементами, удаленными из стека s1,\n"
"и чтение их из стека s2:");
for(i=0;i<4;i++)
s.dops(&s2,S.uds(&s1,&err));
printf("%5d",s.chts(s2,&err));
printf("\nСтек s2: считано удален\n");
for(i=0;i<4;i++)
{
printf("%15d",s.chts(s2,&err));
printf("%12d\n",s.uds(&s2,&err));
}
printf("Проверка пустоты стеков:\n");
printf("стек 1;inf=%d\n",S.chts(s1,&err));
printf("стек 2;inf=%d\n",s.chts(s2,&err));
*/


f=fopen("con","w");
printf("queue free?:\n");
printf("queue 1;info=%d\n",Q.cht(q1,&er));
printf("queue 2;info=%d\n",q.cht(q2,&er));
printf("queue q1:заполнение элементами:\n");
for(i=12;i<16;i++)
{
fprintf(f,"%d ",i);
Q.dop(&q1,i);
}
printf("\n чтение 1-го элемента 1-й очереди:\n"
"q1->info=%4d\n",Q.cht(q1,&er));
printf("заполнение 2-й очереди элементами, удаленными из 1-й:\n");
for(i=0;i<4;i++)
{
printf("%4d",Q.cht(q1,&er));
q.dop(&q2,Q.ud(&q1,&er));
}
printf("\n чтение первого элемента очереди 2:",
"q2->info=%d\n",q.cht(q2,&er));
printf("\n удаление и вывод значений, удаленных из 2-й очереди:\n");
for(i=0;i<4;i++)
printf("%4d",q.ud(&q2,&er));
printf("\n проверка пустоты очередей:\n");
printf("\n очередь 1;info=%d\n",Q.cht(q1,&er));
printf("\n очередь 2;inf=%d\n",q.cht(q2,&er));



getch();
}

Последний раз редактировалось Demetriusss; 19.12.2013 в 22:03.
Demetriusss вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простая Программа govno Фриланс 8 06.02.2012 16:29
простая программа на Си serrggeee Общие вопросы C/C++ 4 21.05.2011 22:59
Простая программа russian-stalker Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 27.11.2010 22:52
Простая программа с очереддю(Queue,STL,C++) Olya90 Помощь студентам 4 06.05.2009 23:30
Простая программа Distr Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 15.11.2007 08:27