10.05.2010, 21:04 | #1 (permalink) |
Новичок
Регистрация: 10.05.2010
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 51
|
Не выводит очередь
Создать очередь для символов. Максимальный размер очереди вводится с экрана. Создать функции для ввода, вывода и определения размера очереди. Вводить символы с экрана в очередь. В случае совпадения вводимого символа с последним элементом очереди выводить размер очереди в функции 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"); } |
10.05.2010, 21:04 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Не проходите мимо похожих тем, они помогут вам в решении проблемы Не выводит массив Delphi7 Программа выводит результат бесконечное число раз. Не ясна причина Написать программу, которая считывает текст из файла и выводит на экран предложения Очередь, реализованная с помощью массива |
11.05.2010, 17:05 | #2 (permalink) | |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
Цитата:
Код:
#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]); //здесь вы записываете символ за границу массива. У вас есть элементы с индексами 0..(n-1), но нет элемента с индексом n. } 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"); } |
|
11.05.2010, 22:08 | #3 (permalink) |
Новичок
Регистрация: 10.05.2010
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 51
|
спасибо за совет!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Метки |
очередь |
|
|