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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2010, 19:09   #1
margaritachka
 
Регистрация: 10.05.2010
Сообщений: 6
Восклицание не выводит очередь

задание:
Создать очередь для символов. Максимальный размер очереди вводится с экрана. Создать функции для ввода, вывода и определения размера очереди. Вводить символы с экрана в очередь. В случае совпадения вводимого символа с последним элементом очереди выводить размер очереди

в функции out должно выводить если очередь не пуста введенную очередь, а если очередь пуста,то сообщение "ochered' pusta"
выводит и саму очередь и сообщение в любом из улучаев.
уже замучалась, не знаю как исправить
а остальные функии работают нормально
помогите пожалуйста

Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
char end,*a,beg=1;
int n,f;

void out(void);
void inp(void);
void raz(void);

void main()
{

int i;
system("color 5a");
  printf("Vvedite kol-vo elem ocheredi\n");
  scanf("%d",&n);
 
  a = new char[n];
   
  end=0;
  printf("Vvedite elem ocheredi\n");
    for(i=0;i<n;i++)
	{
		end++;
		scanf("%s",&a[end]);
	}

while (1)
{
	printf("1-  vvod ocheredy\n");
	printf("2 - vivod ocheredy\n");
	printf("0- vichod\n");
	scanf("%d",&f);

	switch (f)
	{
	case 0:exit(1); break;
	case 1:inp();break;
	case 2:out(); break;
	}
}
}
void inp(void)
{
    int t,j;

	system("cls");
	printf("Vvedite kol-vo elem\n");
	scanf("%d",&t);
	printf("vvedite elementi\n");
	 for(j=0;j<t;j++)
	 {
		 end++;
		 scanf("%s",&a[end]);
		 if(a[end]==a[end-1])
			 raz();
	 }

}
void raz(void)
{
	int k;
	if (beg==end)
printf("ochered' pusta\n");
if (beg < end) 
    k=end - beg+1;
printf("razmer %d\n",k);
printf("\n---------------------------------------------\n");
		 main();
}

void out(void)
{
int i;
	
for(i=0;i<n;i++)
{
		
		if (beg!=end) printf("%c  ",a[beg]); //beg - nachalo
		if (beg==end) { printf("%c \n",a[beg] );//vivod posl el
			            printf("ochered' pusta\n");
						end=0;// vozvr begin i end v ishodn pozicii
						beg=1;
		}
			beg++;//uvelichenie ukazatelia dlia vivoda el
		if (beg==n+1) beg=1;//zakalsovivanie ocheredi
		
	}
   printf("\n");
}

Последний раз редактировалось margaritachka; 10.05.2010 в 19:27.
margaritachka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очередь С++ phantom4eg Фриланс 1 25.04.2010 00:54
Очередь Си savra Помощь студентам 1 22.04.2010 18:48
Очередь Си svetikzo Помощь студентам 0 23.01.2010 10:03
Очередь Юлькин Общие вопросы C/C++ 4 30.05.2009 16:00
очередь odi_noki Общие вопросы Delphi 3 24.10.2008 12:09