Нужно написать программу для стеков
Нужно написать программу, которая представляет число, введенное в виде строчки символов, в виде стека и считает сумму его цифр. Я вообще не разбираюсь в этом, нужно очень написать программу. Помогите))))) Вот что я пробовал
#include<iostream>
#include <stack>
#include <Windows.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "ukr");
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
stack <int> stack;
int n = 0, i = 0;
cout << "Введіть число n: ";
cin >> n;
while (n != 0) {
stack.push(n % 10);
n /= 10;
}
return 0;
}
Ответы (1 шт):
Вы начали правильно делать, но почему то не довели до конца. Запись элементов в стек у вас уже была, я добавил нахождение длины стека. Не совсем понял что значит:
представляет число, введенное в виде строчки символов, в виде стека
Поэтому просто сделал вывод элементов стека по отдельности. Добавил вычисление суммы
#include <iostream>
#include <fstream>
#include <stack>
using namespace std;
int main()
{
setlocale(LC_ALL,"");
stack <string> stack;
unsigned long long y = 0;
int sum = 0;
string n, tmp;
cout << "Введите число n: ";
cin >> n;
for (long long i = n.length()-1; i >= 0; i--){
tmp = n[i];
sum += stoi(tmp);
stack.push(tmp);
}
cout << "Элементы из стека: ";
for (unsigned long long i = 0; i < n.length(); i++){
cout << stack.top();
if (i != y - 1){
cout << ", ";
}
stack.pop();
}
cout << endl << "Сумма элементов в стеке равна " << sum;
return 0;
}
UPD:
число n должно быть в виде строки
внутри нельзя преобразовывать
Я сделал ввод и добавление в стек в виде строки, но сумму элементов как строку найти нельзя. В c++ (как и в других языках программирования) числа складываются по правилам математики, а строки просто объединяют элементы. Например, если сложить строку "ab" + "c" получится "abc", а если "12" + "3" = "123". Так что в сложении нужно преобразовать строку в число.