У меня иногда возникают проблемы с программированием, но я вообще в порядке и всегда имею проблему понимания концепции отлично, но я ударяю кирпичную стену, когда я пытаюсь для реализации реальной программы для выполнения операции.Проблема с появлением символов стека и сохранение их в строке
У меня есть задание для работы, в котором я должен взять строку ввода, прочитать ее символ по символу в стек (используя связанный список), а затем вытащить этот результат из стека, сохранить его в новый и затем сравнить строки, чтобы определить, является ли эта конкретная входная строка или не является палиндром.
Единственная проблема, с которой я, похоже, столкнулся (надеюсь) в самом конце программы. Когда я пытаюсь вытащить каждый символ из стека и сохранить их в строке отдельно, я получаю проблему, когда Visual Studio говорит мне: «ошибка C2664:« Stack :: pop »: невозможно преобразовать параметр 1 из« unsigned int »в «символ &» "
void Stack::pop(char &input_string) {
StackNode* temp;
if (isEmpty()) {
cout << "The stack is empty." << endl;
}
else {
input_string = top->value;
temp = top->next;
delete top;
top = temp;
}
}
int main() {
Stack stringStack;
string input_string;
string reverse_input;
cout << "Input the desired string to determine if it is a palindrome or not. No spaces please." << endl;
cin >> input_string;
for (unsigned int i=0; i < input_string.length(); i++) {
stringStack.push(input_string[i]);
}
while (!stringStack.isEmpty()) {
for (unsigned int j=0; j < input_string.length(); j++) {
stringStack.pop(j) = reverse_input[j];
}
}
if (reverse_input == input_string) {
cout << "Your input is a palindrome!" << endl;
}
else {
cout << "Your input was not a palindrome, try again!" << endl;
}
system ("PAUSE");
}
Я понимаю, что это говорит мне, что я не могу передать J в функцию поп выскочить значения, так как функция поп Я предрек ожидает символьное значение.
Может ли это быть устранено путем изменения ввода функции pop на целое число, а затем с помощью функции pop, чтобы вернуть значение char?
Я исключаю все другие функции файла cpp, кроме функции pop и основной функции выполнения, сообщите мне, если вам по какой-то причине нужно увидеть другую часть.
Заранее благодарим за помощь. Это очень ценится.
является 'в то время как (stringStack.esEmpty (!))' Необходимо? как я вижу, вам нужно только повторить цикл 'for' один раз, чтобы заполнить список' reverse_input', предполагая, что 'for' работает правильно, на самом деле вы можете использовать' while' вместо 'for' – Ediac
Это,' ' char & input_string', вводит в заблуждение, потому что вы объявляете ссылку на ** один символ **, а не на строку. Используйте 'std :: string' для 1 * или более * символов. –
Вы не перестали читать сообщение об ошибке И посмотрите на код, генерирующий его. Вы передаете индекс цикла j, где ожидается символ. Если вы посмотрите на строку с ошибкой, ответ будет там. – kfsone