Приветствую, друзья.
Нужна помощь с программой.
Есть прога на C++, в ней нужно протестировать Top() и Pop(), Push() уже протестирован, но как протестировать Top и Pop я не знаю. Спасибо заранее.
// Стэк. cpp: главный файл проекта.
//Пример реализации стэка на различных структурах
#include "stdafx.h"
#include
#include
//using namespace System;
using namespace std;
const int MAX_STACK = 2;//эти константы лучше занести в класс, смотри StackA
const int EMPTY_STACK = -1;
class Stack{
private:
int stack[MAX_STACK];
int top;
inline bool IsOverflow(){return top == MAX_STACK-1;}
public:
Stack():top(EMPTY_STACK){}
void Push(int pValue);
int Pop();
int Top();
inline bool IsEmpty(){return top == EMPTY_STACK;}
};
void Stack::Push(int pValue){
if (IsOverflow()) throw "Stack::Push overflow";
stack[++top] = pValue;
}
int Stack::Pop(){
if (IsEmpty()) throw "Stack::Pop empty";
return stack[top--];
}
int Stack::Top(){
if (IsEmpty()) throw "Stack::Top empty";
return stack[top];
}
void TestStackConstructor(){
Stack s;
if (!s.IsEmpty()) throw "TestStackConstructor() is not empty";
}
void TestStackPush(){
{Stack s;
s.Push(1);
if (s.IsEmpty()) throw "TestStackPush() is empty";
}//1
{Stack s1;
try{//нет ошибок до предельного значение
for (int i = 1; i<=MAX_STACK; i++) s1.Push(i);
}
catch (...) {
throw "TestStackPush() error befor MAX_STACK";
}
try{//проверка сообщения при переполнении
s1.Push(999);
throw "TestStackPush() no error message";
}
catch (const char* mess) {
if (!strcmp(mess,"Stack::Push overflow")==0)
throw "TestStackPush() bad error message";
}
}//2
}//void TestStackPush()
void TestStackTop()
{
{Stack s;
try{
int result = s.Top();
throw "TestStackPush() no error message";
}
catch(const int = 1
{
}
}
//if (s.IsEmpty()) throw "TestStackPush() is empty";
////return reference top();
//}
//{Stack s1;
//try{
//s1.Top();
//throw "TestStackPush() no error message";
//}
//catch(const int = 1) {
//throw "Error: ==1";
//}
////int Top(3);
//}
}
void TestStack(void){
cout<< "TestStack(void)\n" <<endl;
TestStackConstructor();
TestStackPush();
TestStackTop();
//TestStackPop();
//Stack s;
//if (!s.IsEmpty())
//int result = s.Top();
}
int main()
{
setlocale(LC_CTYPE, "Russian");
try {
TestStack();
cout << "*** Тестирование TestStack ОК ***" << endl;
}
catch (const char* S) {
cout << "*** Тестирование TestStack завершилось с ошибкой " << S << endl;
}
catch (...) {
cout << "*** Тестирование TestStack завершилось с неизвестной ошибкой ***" << endl;
}
system("pause");
//int *arr = new int[1000000];
_CrtDumpMemoryLeaks();
return 0;
}
C/C++
Тестирование метода Stack
#include <iostream>
#include <string>
#include <deque>
#include <list>
using namespace std;
template<typename Type, class Container = deque<Type>>
class Stack {
public:
using container_type = Container;
using size_type = size_t;
using value_type = Type;
using reference = Type&;
using const_reference = const Type&;
Stack() = default;
explicit Stack(const container_type& right) : stack_(right) {}
bool empty()const {
return stack_.size() == 0;
}
void pop() {
stack_.pop_back();
}
void push(const Type& value) {
stack_.push_back(value);
}
size_type size()const {
return stack_.size();
}
reference top() {
return stack_.back();
}
const_reference top()const {
return stack_.back();
}
private:
container_type stack_;
friend bool operator<(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ < b.stack_;
}
friend bool operator<=(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ <= b.stack_;
}
friend bool operator==(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ == b.stack_;
}
friend bool operator!=(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ != b.stack_;
}
friend bool operator>=(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ >= b.stack_;
}
friend bool operator>(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ > b.stack_;
}
};
int main() {
Stack<long> a;
Stack<int, list<int>> b;
// Тестируйте!
system("pause");
}
#include <string>
#include <deque>
#include <list>
using namespace std;
template<typename Type, class Container = deque<Type>>
class Stack {
public:
using container_type = Container;
using size_type = size_t;
using value_type = Type;
using reference = Type&;
using const_reference = const Type&;
Stack() = default;
explicit Stack(const container_type& right) : stack_(right) {}
bool empty()const {
return stack_.size() == 0;
}
void pop() {
stack_.pop_back();
}
void push(const Type& value) {
stack_.push_back(value);
}
size_type size()const {
return stack_.size();
}
reference top() {
return stack_.back();
}
const_reference top()const {
return stack_.back();
}
private:
container_type stack_;
friend bool operator<(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ < b.stack_;
}
friend bool operator<=(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ <= b.stack_;
}
friend bool operator==(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ == b.stack_;
}
friend bool operator!=(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ != b.stack_;
}
friend bool operator>=(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ >= b.stack_;
}
friend bool operator>(const Stack<Type, Container>& a, const Stack<Type, Container>& b) {
return a.stack_ > b.stack_;
}
};
int main() {
Stack<long> a;
Stack<int, list<int>> b;
// Тестируйте!
system("pause");
}
Михаил Зимин
Спасибо большое.
Похожие вопросы
- Cи, модульное тестирование
- Описать независимые классы и определить их методы.
- Передача в метод класса указателя на функцию C++
- Найти решение уравнения(arccos(x-1)+x^3-4=0) на указанном диапазоне ([0.5;1.9]). используя численный метод-Метод Ньютона
- Интеграл C++ метод Симпсона
- Проблемы с сортировкой массива методом пузырька.
- Нужно сделать метод, в который я могу передать строку, а она должна вернуть мне длину последнего слова в этой строке
- C++ тестирование сириус задача8
- Сортировка элементов массива методом Шелла
- Выполните сортировку массивов ТРЕМЯ СПОСОБАМИ: методом пузырька, прямого поиска и быстрой сортировкой. С++