|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
26.05.2010, 03:51 | #1 |
Регистрация: 13.05.2010
Сообщений: 7
|
Стэки и очереди
Найти ошибку помогите пожалуйста
1.Необходимо создать очередь для целых (положительных и отрицательных) чисел. 2.Создать функции push и pop для ввода и вывода элементов очереди. 3.Ввести в очередь несколько чисел. 4.Вывести на экран 2 первых отрицательных числа очереди. Последнее не получается Если не трудно помогите разобраться. Заранее благодарен Текст программы: #include <stdio.h> #include <conio.h> #include <process.h>//для очистки экрана #include <iostream.h> #include <windows.h>// для поддержки русского char* Rus(const char* text); char bufRus[255]; struct STACK { int info; STACK *Next; }; STACK *head=NULL; void push(STACK **); //Формирование стека void pop(STACK *); //Вывод содержимого стека void func(STACK *); //Выполнение задания (вывод на экран двух первых отрицательных чисел очереди) void main (void) { int n, i; while (1) { printf(Rus("\nФормирование стека - 1\n")); printf(Rus("\nПросмотр - 2\n")); printf(Rus("\nВыполнение задания - 3\n")); printf(Rus("\nВыход - 0\n")); fflush(stdin); switch(n=getchar()) { case '1': system("cls"); //Формирование стека printf(Rus("\n Введи количество элементов в стеке\n")); scanf("%d", &n); for(i=1; i<=n; i++) push(&head); system("pause"); system("cls"); break; case '2'://Вывод содержимого стека system("cls"); //Просмотр непустого стека pop(head); system("pause"); system("cls"); break; case '3': //Выполнение задания (вывод на экран двух первых отрицательных чисел очереди) system("cls"); //Просмотр непустого стека func(head); system("pause"); system("cls"); break; case '0': exit(0); default: printf(Rus("\nНет вида работы %c\n"),n); break; } } } char* Rus(const char* text) { CharToOem(text,bufRus); return bufRus; } //Формирование стека void push(STACK **head) { //head - вершина стека //t - текущий элемент //Захват памяти под первый элемент STACK* t=new STACK; //t->info=rand()%100; printf(Rus("\nВводи элемент стека\n\n")); scanf("%d", &t->info); t->Next=(*head); //Новый элемент указывает на головной (*head)=t;//Новый элемент становится гооловным } void pop(STACK *h) { system("cls"); printf("\n\n"); puts(Rus("\n***Содержимая информация***\n")); if(!h) { printf(Rus("\nСписок пуст\n\n")); exit(0);} do { printf(Rus("Текущее значение стэка =%d и находится по ардресу %p\n"),h->info,h); h=h->Next; //вывод элемента и смещение по стеку } while(h); //пока не достигнут конец стека } void func(STACK *h) { system("cls"); printf("\n\n"); if(!h) { printf(Rus("\nСписок пуст\n\n")); exit(0); } do { if ((h->info)<0) { for (int i=0; i<2; i++); { printf(Rus("Отрицательное значение очереди стэка =%d и находится по ардресу %p\n"),h->info,h); } } else h=h->Next; } while(h); } Последний раз редактировалось kwns; 26.05.2010 в 03:53. |
26.05.2010, 04:13 | #2 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,519
|
Во-первых - стек.
Во-вторых - один вопрос - 1 тема. В-третьих - название не отражает сути вопроса. таких названий сотни на форуме. В-четвертых - используйте тег [code] |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
очереди | Nostalgia | Помощь студентам | 2 | 22.03.2010 17:48 |
проблемы в написании очереди | $kyline | Общие вопросы C/C++ | 2 | 29.06.2009 15:57 |
Реализация очереди! | Lazio | Помощь студентам | 2 | 08.04.2009 17:41 |