Question:--
Write a program that read a line of text, changes each uppercase letter to lowercase and places each letter both in a queue and onto a stack.
The program should then verify whether the line of text is a palindrome


Output:

Please enter a line of text
I am A.I


i AM a.i

This is a palindrome

---------------------------------------------------------------------

How do i change the capital letter to smaller letter as above output example??? wat function i should add??
i using fstream function..now..wat should i do to change which i can enter text by my own??

thanks 4 helping..


My answers below:-

#include<iostream>
#include <cstdlib> // For EXIT_FAILURE and EXIT_SUCCESS
#include <fstream>
#include<string>
using namespace std;
const int MAX=50;    // initialize max string size of 50 characters
typedef char StackElement;  // define StackElement
typedef char QueueElement;  // define QueueElement
class Stack
{
public:
	Stack(){top=-1;arr[MAX]=0;}   // default stack constructor
		void push(StackElement & ch);  // push function
		StackElement topNpop();         // top and pop functions combined
		bool empty() const;            // empty function
private:
		StackElement arr[MAX];    // define char array
		int	top;                  // define int top
	
};
/*******************************************
FUNCTION: push()
DESCRIPTION: Pushes an element onto the stack
PRECONDITION: Waiting for function call
POSTCONTION: New element character on top of stack
*******************************************/
inline void Stack::push(StackElement & ch)
{
	if(top<MAX)
	{
		top++;          // increment top
		arr[top]=ch;  // push onto stack
	}
	else
	{
		cout<<"Stack is full.\n";  // display stack is full
	}


}
/*******************************************
FUNCTION: topNpop()
DESCRIPTION: Reads and pops top element off the stack
PRECONDIION: Waiting for function call
POSTCONDITION:  One element read and removed fromt he stack
RETURN: Top element from stack
********************************************/

inline StackElement Stack::topNpop()
{
	if(top>-1)
	{
		return(arr[top]);  // returns top element
		top--;				// remove froms stack
	}
	else
	{
		cout<<"Stack is empty.\n";  // display stack is empty
		return(0);

	}

}
/*******************************************
FUNCTION: empty()
DESCRIPTION: returns result value if stack is empty
PRECONDITION: result=false
POSTCONDITION: result may be true or remain false
RETURN: result if true or false
********************************************/			
inline bool Stack::empty() const
{
	bool result=false;   // initialize bool as false
	if (top==-1)         
	{
		result=true;        // if top is -1 return result true
		return(result);
	}
	else
	{
		return(result);     // else return false
	}
}
class Queue                           // Queue class
{
public:
		Queue(){front=0, back=0;arr[MAX]=0;}   // Queue default constructor
		void addq(QueueElement & ch);          // define addq 
		QueueElement frontNremoveq();         // define frontNremove
private:
		QueueElement arr[MAX];            // initialize QueueElement array
		int front, back;                  // initialize int front and back
	
};
/*******************************************
FUNCTION: addq()
DESCRIPTION: adds an element onto the queue
PRECONDITION: Waiting for element to add
POSTCONDITION: New element now on the queue
********************************************/
inline void Queue::addq(QueueElement &ch)
{
	if(front!=(back+1)%MAX)
	{
		arr[back]=ch;     // add element to back of queue
		back=(back+1)%MAX;
	}
	else
	{
		cerr<<"Error Queue is full\n";  // display queue is full
	}
}
/*******************************************
FUNCTION: frontNremoveq()
DESCRIPTION: reads and removes front element from queue
PRECONDITION: front pointing to front of queue
POSTCONDITION: front element is returned and then incremented
********************************************/
inline QueueElement Queue::frontNremoveq()
{
	if(front!=back)
	{
		return(arr[front]);    // return front element
		front++;				// remove front element
	}
	else
	{
		cout<<"Queue is empty.\n";  // display queue is empty
		return(0);
	}
}

/***************************MAIN******************************/
int main()
{
	Stack S;	// initialize stack
	Queue Q;	// initialize queue
string s;
	int i=0;	// initialze int 'i'
	char string[MAX];  // initialize char string
	bool RESULT=false;  // initilize bool RESULT to false
	

  
ifstream inside ("palindromeinput.txt");
  if (! inside.is_open())
  { cout << "Error opening file"; exit (1); }

  while (! inside.eof() )
  {
    inside.getline (string,100);
    cout << string << endl;
  }

while(string[i]!=NULL)
	{
		S.push(string[i]);  // push chars individually from string to
		Q.addq(string[i]);		// stack and queue
		i++;      // next char
	}
	while(i>0)
	{
		if(S.topNpop()==Q.frontNremoveq())  // compare each element from
		{										// stack and queue
			RESULT=true;  // if same for all chars return true
		}
		else
		{
			RESULT=false;  // if not same for any char break and return false
			break;
		}
		i--;
	}	


if(RESULT==true)
	{
		cout<<string<<" is a palindrome\n";  // display if true
	}
	else
	{
		cout<<string<<" is not a palindrome\n"; // display if false
	}
	


ofstream outside ("palindromeoutput.txt");
  if (outside.is_open())
  {
  
	 outside << string;
    outside<< string;
    outside.close();
  }
  return 0;
}

Dani AI

Generated

A few key fixes will get this working and make it easier to maintain.

  1. Clarify the requirement. Your sample output toggles case (I am A.I -> i AM a.i), but the assignment says to convert uppercase to lowercase. Pick one behavior. For palindrome checking you normally normalize the input to all lowercase and ignore non-alphanumeric characters.

  2. Your palindrome bug comes from returning before updating indices. In both ADT methods you return first and never move the cursor, so every comparison uses the same characters and many non-palindromes look valid. Update the index, then return.

StackElement Stack::topNpop() {
    if (top < 0) { /* handle empty */ return 0; }
    return arr[top--];           // decrement AFTER reading
}

QueueElement Queue::frontNremoveq() {
    if (front == back) { /* handle empty */ return 0; }
    QueueElement ch = arr[front];
    front = (front + 1) % MAX;   // advance BEFORE returning
    return ch;
}

Also fix bounds and termination:

  • push: if (top < MAX - 1) { arr[++top] = ch; } else { / full / }
  • loop: while (string[i] != '\0') ...
  • do not read 100 chars into a 50-char buffer.
  1. Case conversion. @Ancient Dragon’s suggestion is right; the error @Dave Sinkula hit comes from transform choosing the locale overload. Use a lambda that casts to unsigned char to avoid UB and overload issues:
std::string line;
std::getline(std::cin, line);

// normalize: keep only [A-Za-z0-9], lowercase
std::string norm;
norm.reserve(line.size());
for (unsigned char c : line) {
    if (std::isalnum(c)) norm.push_back(std::tolower(c));
}

Push the characters of norm into both the stack and the queue, then compare pops vs. dequeues.

  1. Headers and globals. Do not duplicate MAX in multiple headers. Put capacity in one header or as a static constexpr inside each class. If a header uses streams, include <iostream> there and qualify names (std::cout, std::cerr) instead of relying on using namespace std in headers.

If you prefer not to maintain custom ADTs, std::stack<char> and std::queue<char> work out of the box.

Recommended Answers

All 19 Replies

How do i change the capital letter to smaller letter as above output example

use tolower() to convert a character to lower-case. It only works on one character, so if you want to convert a whole string to lower case you have to create a loop to iterate each character. Here is a c++ example.

#include <string>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cctype>
using namespace std;

int main()
{ 
	string str = "UPPER-CASE";
	transform(str.begin(),str.end(),str.begin(),tolower);
	cout << str << endl;
	return 0;
}

I'm not terribly STL-savvy, what is this error telling me?

//Error E2285 testpp.cpp 11: Could not find a match for 'transform<InputIterator1,InputIterator2,OutputIterator,BinaryOperation>(char *,char *,char *,charT (*)(charT,const locale &))' in function main()

...while I continue searching for an answer on my own...

[edit]Found :

transform

template<class InIt, class OutIt, class Fn1>
    OutIt [B]transform[/B](InIt first, InIt last, OutIt dest,
        Fn1 func);
template<class InIt1, class InIt2, class OutIt,
    class Fn2>
    OutIt [B]transform[/B](InIt1 first1, InIt1 last1,
        InIt2 first2, OutIt dest, Fn2 func);

The first template function evaluates *(dest + N) = func(*(first + N)) once for each N in the range [0, last - first). It then returns dest + (last - first). The call func(*(first + N)) must not alter *(first + N).

The second template function evaluates *(dest + N) = func(*(first1 + N), *(first2 + N)) once for each N in the range [0, last1 - first1). It then returns dest + (last1 - first1). The call func(*(first1 + N), *(first2 + N)) must not alter either *(first1 + N) or *(first2 + N).

[Dani - Here I really miss the fixed fonts! Follow the dinkumware link and note my previous replies as to why. Oh, and font sizes would have been beneficial as well.]

[edit=2] Ahh .

I'm not terribly STL-savvy, what is this error telling me?

//Error E2285 testpp.cpp 11: Could not find a match for 'transform<InputIterator1,InputIterator2,OutputIterator,BinaryOperation>(char *,char *,char *,charT (*)(charT,const locale &))' in function main()

...while I continue searching for an answer on my own...

Dev-C++ (gcc) has a compiler bug

Dev-C++ (gcc) has a compiler bug

Borland must have the same bug then.

use tolower() to convert a character to lower-case. It only works on one character, so if you want to convert a whole string to lower case you have to create a loop to iterate each character. Here is a c++ example.

#include <string>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cctype>
using namespace std;

int main()
{ 
	string str = "UPPER-CASE";
	transform(str.begin(),str.end(),str.begin(),tolower);
	cout << str << endl;
	return 0;
}

this what i have done...
still hv some problems...

1.my output:-
Please enter a line of text:
i am not a.i
i am not a.i
This is a palindrome <-----it must be this is not a palindrome(uncorrect answers)
Press any key to continue

2. how to use the touppercase() n tolowercase()combine as below???

I am A.I

i AM a.i

#include<iostream>
#include <cstdlib> // For EXIT_FAILURE and EXIT_SUCCESS
#include <fstream>
#include<string>

#include <algorithm>
#include <iomanip>
#include <cctype>

using namespace std;

const int MAX=50;    // initialize max string size of 50 characters
typedef char StackElement;  // define StackElement
typedef char QueueElement;  // define QueueElement
class Stack
{
public:
	Stack(){top=-1;arr[MAX]=0;}   // default stack constructor
		void push(StackElement & ch);  // push function
		StackElement topNpop();         // top and pop functions combined
		bool empty() const;            // empty function
private:
		StackElement arr[MAX];    // define char array
		int	top;                  // define int top
	
};
/*******************************************
FUNCTION: push()
DESCRIPTION: Pushes an element onto the stack
PRECONDITION: Waiting for function call
POSTCONTION: New element character on top of stack
*******************************************/
inline void Stack::push(StackElement & ch)
{
	if(top<MAX)
	{
		top++;          // increment top
		arr[top]=ch;  // push onto stack
	}
	else
	{
		cout<<"Stack is full.\n";  // display stack is full
	}


}
/*******************************************
FUNCTION: topNpop()
DESCRIPTION: Reads and pops top element off the stack
PRECONDIION: Waiting for function call
POSTCONDITION:  One element read and removed fromt he stack
RETURN: Top element from stack
********************************************/

inline StackElement Stack::topNpop()
{
	if(top>-1)
	{
		return(arr[top]);  // returns top element
		top--;				// remove froms stack
	}
	else
	{
		cout<<"Stack is empty.\n";  // display stack is empty
		return(0);

	}

}
/*******************************************
FUNCTION: empty()
DESCRIPTION: returns result value if stack is empty
PRECONDITION: result=false
POSTCONDITION: result may be true or remain false
RETURN: result if true or false
********************************************/			
inline bool Stack::empty() const
{
	bool result=false;   // initialize bool as false
	if (top==-1)         
	{
		result=true;        // if top is -1 return result true
		return(result);
	}
	else
	{
		return(result);     // else return false
	}
}
class Queue                           // Queue class
{
public:
		Queue(){front=0, back=0;arr[MAX]=0;}   // Queue default constructor
		void addq(QueueElement & ch);          // define addq 
		QueueElement frontNremoveq();         // define frontNremove
private:
		QueueElement arr[MAX];            // initialize QueueElement array
		int front, back;                  // initialize int front and back
	
};
/*******************************************
FUNCTION: addq()
DESCRIPTION: adds an element onto the queue
PRECONDITION: Waiting for element to add
POSTCONDITION: New element now on the queue
********************************************/
inline void Queue::addq(QueueElement &ch)
{
	if(front!=(back+1)%MAX)
	{
		arr[back]=ch;     // add element to back of queue
		back=(back+1)%MAX;
	}
	else
	{
		cerr<<"Error Queue is full\n";  // display queue is full
	}
}
/*******************************************
FUNCTION: frontNremoveq()
DESCRIPTION: reads and removes front element from queue
PRECONDITION: front pointing to front of queue
POSTCONDITION: front element is returned and then incremented
********************************************/
inline QueueElement Queue::frontNremoveq()
{
	if(front!=back)
	{
		return(arr[front]);    // return front element
		front++;				// remove front element
	}
	else
	{
		cout<<"Queue is empty.\n";  // display queue is empty
		return(0);
	}
}

/***************************MAIN******************************/
int main()
{
	Stack S;	// initialize stack
	Queue Q;	// initialize queue
	string s ;
	int i=0;	// initialze int 'i'
	char string[MAX];  // initialize char string
	bool RESULT=false;  // initilize bool RESULT to false
	
  
strcpy(string," ");
//transform(s.begin(),s.end(),s.begin(),toupper);

cout << "Please enter a line of text: " << endl; 

cin.getline (string,100);

while(string[i]!=NULL)
	{
		S.push(string[i]);  // push chars individually from string to
		Q.addq(string[i]);		// stack and queue
		i++;      // next char
	}
	while(i>0)
	{
		if(S.topNpop()==Q.frontNremoveq())  // compare each element from
		{										// stack and queue
			RESULT=true;  // if same for all chars return true
		}
		else
		{
			RESULT=false;  // if not same for any char break and return false
			break;
		}
		i--;
	}	


if(RESULT==true)
	{
		cout<<string<<" \nThis is a palindrome\n";  // display if true
	}
	else
	{
		cout<<string<<" \nThis is not a palindrome\n"; // display if false
	}
	
		cout<<s<<s<<endl;

	return 0;
}

1. start out by replacing that C-style character array named "string" with a c++ string class and name it something else, such as line. You are writing a c++ program, so use c++ classes whenever possible. Not that it can't be done with C, just that it's more consistent.

2. replace cin.getline() with getline(cin,line)

3. paste that transform line after the getline() in #2 above


After making the above changes your program seems to work ok for the strings I entered.

1. start out by replacing that C-style character array named "string" with a c++ string class and name it something else, such as line. You are writing a c++ program, so use c++ classes whenever possible. Not that it can't be done with C, just that it's more consistent.

2. replace cin.getline() with getline(cin,line)

3. paste that transform line after the getline() in #2 above


After making the above changes your program seems to work ok for the strings I entered.

my program is C++ rite???
mind show me where should i add the transform function??

my program is C++ rite???

Yes, it is.

mind show me where should i add the transform function??

I already told you. You can do your own copy/paste, my fingers can't ready your keyboard :eek:

Yes, it is.

I already told you. You can do your own copy/paste, my fingers can't ready your keyboard :eek:

show me at least example..then i can only can do it
how to make stack.h,queue.h,palindrome.cpp seperate files....??

show me at least example..then i can only can do it

Haven't you read your own thread :cry: Or maybe you didn't comprehend what you read. The example is in post #2. I'm not about to rewrite it.

how to make stack.h,queue.h,palindrome.cpp seperate files....??

With those filename, they are already separate files, so I don't understand your question.

Haven't you read your own thread :cry: Or maybe you didn't comprehend what you read. The example is in post #2. I'm not about to rewrite it.

With those filename, they are already separate files, so I don't understand your question.

now i combine stack,queue together...i wanna seperate stack to stack.h and queue.h and another for .cpp

can show me how?? from my program...
i hv seperate it..hv many errors

now i combine stack,queue together...i wanna seperate stack to stack.h and queue.h and another for .cpp

can show me how?? from my program...
i hv seperate it..hv many errors

What are the errors? Post the code or attach the files.

What are the errors? Post the code or attach the files.

Below are my program i hv done..i still cant solve the problems..
pls help me...with errors i hv below for ur reference..

thanks in advance.....

Main.cpp

#include <iostream>
#include <cstdlib> // For EXIT_FAILURE and EXIT_SUCCESS
#include <fstream>
#include <string>
#include <algorithm>
#include <iomanip>
#include <cctype>
#include "Queue.h"
#include "Stack.h"

using namespace std;

/***************************MAIN******************************/
int main()
{
	Stack S;	// initialize stack
	Queue Q;	// initialize queue
	string s;
	int i=0;	// initialze int 'i'
	char string[MAX];  // initialize char string
	bool RESULT=false;  // initilize bool RESULT to false

	
	strcpy(string," ");
	cout << "Please enter a line of text: " << endl; 
	cin.getline (string,100);

for( int j = 0; j < s.size(); ++j)
	  {
	    if(s[j] >= 'A' && s[j] <= 'Z')
	      s += (s[j] | 32);
	    else
	      if(s[j] >= 'a' && s[j] <= 'z')
		s += (s[j] & (~32));
	      else
		s += s[j];
	  }

while(string[i]!=NULL)
	{
		S.push(string[i]);  // push chars individually from string to
		Q.addq(string[i]);		// stack and queue
		i++;      // next char
	}
	while(i>0)
	{
		if(S.topNpop()==Q.frontNremoveq())  // compare each element from
		{										// stack and queue
			RESULT=true;  // if same for all chars return true
		}
		else
		{
			RESULT=false;  // if not same for any char break and return false
			break;
		}
		i--;
	}	


if(RESULT==true)
	{
		cout<<string<<" \nThis is a palindrome\n";  // display if true
	}
	else
	{
		cout<<string<<" \nThis is not a palindrome\n"; // display if false
	}
	
	cout<<s<<s<<endl;

	return 0;
}

Stack.h

#ifndef _Stack_h
#define _Stack_h

const int MAX=50;    // initialize max string size of 50 characters
typedef char StackElement;  // define StackElement

class Stack
{
public:
	Stack(){top=-1;arr[MAX]=0;}   // default stack constructor
		void push(StackElement & ch);  // push function
		StackElement topNpop();         // top and pop functions combined
		bool empty() const;            // empty function
private:
		StackElement arr[MAX];    // define char array
		int	top;                  // define int top
	
};
/*******************************************
FUNCTION: push()
DESCRIPTION: Pushes an element onto the stack
PRECONDITION: Waiting for function call
POSTCONTION: New element character on top of stack
*******************************************/
inline void Stack::push(StackElement & ch)
{
	if(top<MAX)
	{
		top++;          // increment top
		arr[top]=ch;  // push onto stack
	}
	else
	{
		cout<<"Stack is full.\n";  // display stack is full
	}


}
/*******************************************
FUNCTION: topNpop()
DESCRIPTION: Reads and pops top element off the stack
PRECONDIION: Waiting for function call
POSTCONDITION:  One element read and removed fromt he stack
RETURN: Top element from stack
********************************************/

inline StackElement Stack::topNpop()
{
	if(top>-1)
	{
		return(arr[top]);  // returns top element
		top--;				// remove froms stack
	}
	else
	{
		cout<<"Stack is empty.\n";  // display stack is empty
		return (0);

	}

}
/*******************************************
FUNCTION: empty()
DESCRIPTION: returns result value if stack is empty
PRECONDITION: result=false
POSTCONDITION: result may be true or remain false
RETURN: result if true or false
********************************************/			
inline bool Stack::empty() const
{
	bool result=false;   // initialize bool as false
	if (top==-1)         
	{
		result=true;        // if top is -1 return result true
		return(result);
	}
	else
	{
		return(result);     // else return false
	}
}

#endif

Queue.h

#ifndef _Queue_h
#define _Queue_h

const int MAX=50;    // initialize max string size of 50 characters
typedef char QueueElement;  // define QueueElement

class Queue                           // Queue class
{
public:
		Queue(){front=0, back=0;arr[MAX]=0;}   // Queue default constructor
		void addq(QueueElement & ch);          // define addq 
		QueueElement frontNremoveq();         // define frontNremove
private:
		QueueElement arr[MAX];            // initialize QueueElement array
		int front, back;                  // initialize int front and back
	
};
/*******************************************
FUNCTION: addq()
DESCRIPTION: adds an element onto the queue
PRECONDITION: Waiting for element to add
POSTCONDITION: New element now on the queue
********************************************/
inline void Queue::addq(QueueElement &ch)
{
	if(front!=(back+1)%MAX)
	{
		arr[back]=ch;     // add element to back of queue
		back=(back+1)%MAX;
	}
	else
	{
		cerr<<"Error Queue is full\n";  // display queue is full
	}
}
/*******************************************
FUNCTION: frontNremoveq()
DESCRIPTION: reads and removes front element from queue
PRECONDITION: front pointing to front of queue
POSTCONDITION: front element is returned and then incremented
********************************************/
inline QueueElement Queue::frontNremoveq()
{
	if(front!=back)
	{
		return(arr[front]);    // return front element
		front++;				// remove front element
	}
	else
	{
		cout<<"Queue is empty.\n";  // display queue is empty
		return(0);
	}
}

#endif

Errors:

--------------------Configuration: Palindrome - Win32 Debug--------------------
Compiling...
Main.cpp
c:\documents and settings\jason23\desktop\palindrome\queue.h(33) : error C2065: 'cerr' : undeclared identifier
c:\documents and settings\jason23\desktop\palindrome\queue.h(33) : error C2297: '<<' : illegal, right operand has type 'char [21]'
c:\documents and settings\jason23\desktop\palindrome\queue.h(51) : error C2065: 'cout' : undeclared identifier
c:\documents and settings\jason23\desktop\palindrome\queue.h(51) : error C2297: '<<' : illegal, right operand has type 'char [17]'
c:\documents and settings\jason23\desktop\palindrome\stack.h(4) : error C2370: 'MAX' : redefinition; different storage class
        c:\documents and settings\jason23\desktop\palindrome\queue.h(4) : see declaration of 'MAX'
c:\documents and settings\jason23\desktop\palindrome\stack.h(34) : error C2297: '<<' : illegal, right operand has type 'char [16]'
c:\documents and settings\jason23\desktop\palindrome\stack.h(56) : error C2297: '<<' : illegal, right operand has type 'char [17]'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(25) : error C2872: 'cout' : ambiguous symbol
c:\documents and settings\jason23\desktop\palindrome\main.cpp(25) : error C2297: '<<' : illegal, right operand has type 'char [30]'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(62) : error C2872: 'cout' : ambiguous symbol
c:\documents and settings\jason23\desktop\palindrome\main.cpp(62) : error C2297: '<<' : illegal, right operand has type 'char [50]'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(66) : error C2872: 'cout' : ambiguous symbol
c:\documents and settings\jason23\desktop\palindrome\main.cpp(66) : error C2297: '<<' : illegal, right operand has type 'char [50]'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2872: 'cout' : ambiguous symbol
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const struct std::_Smanip<_Tm> &)' : could not deduce template argument f
or 'class std::basic_ostream<_E,_Tr> &' from 'int'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const struct std::_Fillobj<_E> &)' : could not deduce template argument f
or 'class std::basic_ostream<_E,_Tr> &' from 'int'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const class std::basic_string<_E,_Tr,_A> &)' : could not deduce template 
argument for 'class std::basic_ostream<_E,_Tr> &' from 'int'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const short *)' : could not deduce template argument for 'class std::basi
c_ostream<_E,_Tr> &' from 'int'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const unsigned char)' : could not deduce template argument for 'class std
::basic_ostream<_E,_Tr> &' from 'int'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const unsigned char *)' : could not deduce template argument for 'class s
td::basic_ostream<_E,_Tr> &' from 'int'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const signed char)' : could not deduce template argument for 'class std::
basic_ostream<_E,_Tr> &' from 'int'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const signed char *)' : could not deduce template argument for 'class std
::basic_ostream<_E,_Tr> &' from 'int'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,_E)' : could not deduce template argument for 'class std::basic_ostream<_
E,_Tr> &' from 'int'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const _E *)' : could not deduce template argument for 'class std::basic_o
stream<_E,_Tr> &' from 'int'
c:\documents and settings\jason23\desktop\palindrome\main.cpp(69) : error C2677: binary '<<' : no global operator defined which takes type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acce
ptable conversion)
Error executing cl.exe.

Main.obj - 25 error(s), 0 warning(s)

The problem is that the header file doesn't know about namespace std. You can solve this in one of at least three ways:
1. move the line "using names std" before the line "incude queue.h" in the main *.cpp file

2. at the top of queue.h declare classes cout and cerr

using std::cout;
using std::cerr;
// and any others that the header file uses

3. in the queue.h header file expeclitly specify the namespace

std::cerr<<"Error Queue is full\n";

The problem is that the header file doesn't know about namespace std. You can solve this in one of at least three ways:
1. move the line "using names std" before the line "incude queue.h" in the main *.cpp file

2. at the top of queue.h declare classes cout and cerr

using std::cout;
using std::cerr;
// and any others that the header file uses

3. in the queue.h header file expeclitly specify the namespace

std::cerr<<"Error Queue is full\n";

1. thanks..i just realize...that the "using names std" before the line "include queue.h" and "include stack.h" in the main *.cpp file

2. using std::cout;
using std::cerr;
// and any others that the header file uses

the above...using std::cout and using std::cerr and std::cerr<<"Error Queue is full\n" there was not function....
i didnt put as u told also no error..
wat is it use?? when will is Error Queue is full will display...
help..again...

3. about const int MAX=50; // initialize max string size of 50 characters i put in main.cpp only...can??? is before #include 'Stack.h'
and #include 'Queue.h' rite??


thanks...4 ur help so far... :cheesy:

2. using std::cout;
using std::cerr;
// and any others that the header file uses

the above...using std::cout and using std::cerr and std::cerr<<"Error Queue is full\n" there was not function....
i didnt put as u told also no error..
wat is it use?? when will is Error Queue is full will display...
help..again...

you don't need both "using namespace std:" and "using std::cout" at the same time. one one or the other. Both are ok, but not really needed. A lot of programmers don't like to use "using namespace std;" so they use the other forms illustrated.

3. about const int MAX=50; // initialize max string size of 50 characters i put in main.cpp only...can??? is before #include 'Stack.h'
and #include 'Queue.h' rite??

I think it would be better to put that declaration in the *.h that uses it. Current c++ standards allow const like that inside the class itself, but not all compilers support it.

i have been given an assignment about palindromes but i don't no how to do the coding in c++ and using queue adt and stact adt to check if a string ia a palindrome

mmamoratwa..

i just want to know that if have already the codes of palindrome using c++..

please help me if have nay idea of that.

thnk you

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.