КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Все операции со стеком
Структура данных стека. Принципы выборки и записи в стек описаны выше. // Работа со стеком. Проверка, пуст ли стек. // Добавить в стек. Выбрать из стека. // Стек полон #include <stdio.h> #include <dos.h> #include <iostream.h> #include <Process.H> #include <Stdlib.H> #include <conio.H> #define max_size 200 char s[max_size]; //компоненты стека int next=0; // позиция стека int Empty() { return next==0; } int Full() { return next==max_size; } void Push() { if (next==max_size) { cout<<"Ошибка: стек полон"<<endl;} else { next++;cout<<"Добавлен"<<endl; cout<<"Что поместить в стек?"<<endl; cin >> s[next-1]; } } void OUTst() { int i=0; if (next==0) { cout<<"Cтек пуст"<endl; } else { for(i=0;i<next;i++) cout<<s[i]<<" "<<endl; } } void Clear() { next=0; } Poz() { return next; } void Del() { int a; if (next==0) cout<<"Ошибка: стек пуст"<<endl; else { next--;cout<<"Удален "<<endl; } } void menu() { cout<<"0: распечатать стек"<<endl; cout<<"1: добавить в стек"<<endl; cout<<"2: удалить из стека"<<endl; cout<<"3: узнать номер позиции в стеке"<<endl; cout<<"4: узнать, пуст ли стек"<<endl; cout<<"5: узнать, полон ли стек"<<endl; cout<<"6: очистить стек"<<endl; cout<<"7: выход"<<endl; } main() { char c; clrscr(); textcolor(15); do { menu(); cin >> c; clrscr(); switch (c) { case '0':OUTst();getch();break; case '1':Push();break; case '2':Del();getch();break; case '3':cout<< "Hомер "<<Poz()<<endl;getch();break; case '4':if (Empty()==1) cout<<"Пуст"<<endl; else cout<<"Hе пуст"<<endl;getch();break; case '5':if (Full()==1)cout<<"Полн"<<endl; else cout<<"Hе полн"<<endl;getch();break; case '6':Clear();cout<< "Стек очищен"<<endl;getch();break; case '7':exit(1); } delay(200); } while (c!=7); return 0; } Подведем итог Следует обратить внимание на самый существенный момент: программы нужно проектировать, а не создавать их методом проб и ошибок. Мы должны внимательно подумать о форме и содержании ввода и вывода для программы. Необходимо разделить программу на хорошо определенные задачи, затем раздельно запрограммировать, принимая во внимание их взаимодействие друг с другом. Идея заключается в достижении модульности. Если необходимо, разбивайте модули на еще более мелкие модули. Используйте функции для повышения степени модульности и простоты программы. При проектировании программы попытайтесь предвидеть, что может идти неправильно, и программируйте, исходя из этого. Используйте локализацию ошибок, чтобы контролировать действия в местах потенциальных затруднений, или, по крайней мере, предупреждать пользователя, что может возникнуть осложнение. Гораздо лучше дать пользователю еще одну возможность ввести данные, чем продолжать выполнять программу и прийти к аварийной ситуации. Если создается функция, сначала определите, как она будет взаимодействовать с вызывающей программой. Решите также, какая информация будет входить в нее, а какая - выходить. Какими должны быть аргументы? Если вы примете во внимание все эти параметры, то можете обратить внимание на работу самой функции. Используйте эти идеи, и ваша программа будет более надежной и менее подверженной аварийным ситуациям. Вы получите тело функции, которое сможете применять в других программах. Программирование в таком случае потребует меньше времени. Не забывайте о классах памяти. Переменные можно определять вне функции. В этом случае их называют внешними или глобальными и они доступны более чем для одной функции. Переменные, определенные внутри функции, являются локальными для нее, и не известны другим функциям. Если можно, используйте автоматическую разновидность локальных переменных. Они охраняют переменные одной функции от взаимодействия других функций.
Дата добавления: 2014-01-05; Просмотров: 692; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |