Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 03.05.2010
Сообщений: 13
1

стек чисел

05.05.2010, 09:50. Просмотров 2959. Ответов 30
Метки нет (Все метки)

напишите пожалуйста программу, которая считывает строку символов, выбирает числа из этой строки и записывает их в стек. вывести содержимое стека на экран.
если можно с пояснениями
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2010, 09:50
Ответы с готовыми решениями:

Сформировать стек из N чисел. Найти сумму нечетных чисел из стека. Результат поместить в стек
Здравствуйте. Помогите, пожалуйста, решить задачу: Сформировать стек из N чисел. Найти сумму ...

Стек чисел
Помогите пожалуйста написать программу, которая считывает текст из файла и создаёт стек чисел,...

Создать стек из 10 случайных чисел
Создать стек из 10 случайных чисел из диапазона . Вывести стек на экран. Найти сумму 4-х...

Создать стек из случайных целых чисел
Создать стек из случайных целых чисел. Перенести в другой стек все элементы ,находящиеся между...

30
4196 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
05.05.2010, 09:56 2
Стек классами делать, обычными функциями, или инлайном?
0
1 / 1 / 0
Регистрация: 03.05.2010
Сообщений: 13
05.05.2010, 10:21  [ТС] 3
могу сказать тока что тема: программы, использующие динамические структуры
0
4196 / 1789 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
05.05.2010, 10:39 4
Это понятно из слова "стек". Но его можно делать по-разному.
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
05.05.2010, 10:42 5
C++
1
2
3
4
5
6
7
string s="aaaa7aaa5aaaa3aaaa";
    for( int i=0; i < s.size(); i++)
    for( int j=48; j < 58; j++)
    if ( (int)s[i]==j ){
        //перевод в строку
        //в стэк
    }
0
1 / 1 / 0
Регистрация: 03.05.2010
Сообщений: 23
05.05.2010, 10:45 6
а как сделать чтобы программа считывала текст из файла и создавала стек чисел, содержащихся в тексте и выводила полученный стек на экран?
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
05.05.2010, 11:16 7
Цитата Сообщение от PointsEqual Посмотреть сообщение
//перевод в строку
то есть в число

Добавлено через 13 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <cstring>
#include <sstream>
#include <vector>
 
int fromString( std::string& s){
    std::istringstream iss(s);
    int res;
    iss >> res;
    return res;
}
 
 
int main()
{
    std::vector<int> stack; // выполняет роль стэка
  
    int number=0;
    std::string s="aaaa7aaa5aaaa3aaaa";
    std::string s2;
    for( int i=0; i < s.size(); i++)
    for( int j=48; j < 58; j++)
    if ( (int)s[i]==j ){
        s2=s[i];
        number=fromString(s2);
        stack.push_back(number);
    }
 
    for( int i=0; i<stack.size(); i++)  //вывод стэка
    std::cout<<stack[i];
 
    return EXIT_SUCCESS;
}
Добавлено через 7 минут
Цитата Сообщение от Stanislava Посмотреть сообщение
а как сделать чтобы программа считывала текст из файла и создавала стек чисел, содержащихся в тексте и выводила полученный стек на экран?
тот же код, только нужно считывать строки из файла
C++
1
getline();
1
1 / 1 / 0
Регистрация: 03.05.2010
Сообщений: 23
05.05.2010, 14:54 8
а куда нужно засунуть getline();?
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
05.05.2010, 15:03 9
Цитата Сообщение от Stanislava Посмотреть сообщение
а куда нужно засунуть getline();?
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main(){
        std::string current;
        std::ifstream ifs("1.txt");
        if ( !ifs.is_open() ){
                std::cerr << "Can't open input file!" << std::endl;
                return 1;
        }
        do {
                std::getline(ifs, current);
......
.....
.....
2
1 / 1 / 0
Регистрация: 03.05.2010
Сообщений: 13
05.05.2010, 15:12  [ТС] 10
ошибку выдает
E:\1\1.cpp(33) : error C2374: 'i' : redefinition; multiple initialization
E:\1\1.cpp(25) : see declaration of 'i'
Error executing cl.exe.
0
1 / 1 / 0
Регистрация: 03.05.2010
Сообщений: 23
05.05.2010, 15:16 11
То есть это должно выглядеть так?:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <sstream>
#include <vector>
 
int fromString( std::string& s)
{
    std::istringstream iss(s);
    int res;
    iss >> res;
    return res;
}
 
 
int main()
{
        std::string current;
        std::ifstream ifs("1.txt");
        if ( !ifs.is_open() )
        {
                std::cerr << "Can't open input file!" << std::endl;
                return 1;
        }
        do 
        {
                std::getline(ifs, current);
 
    std::vector<int> stack; // выполняет роль стэка
  
    int number=0;
    std::string s="aaaa7aaa5aaaa3aaaa";
    std::string s2;
    for(int i=0;i<s.size(); i++)
    for(int j=48;j<58;j++)
    if ( (int)s[i]==j )
    {
        s2=s[i];
        number=fromString(s2);
        stack.push_back(number);
    }
 
    for(int i=0;i<stack.size();i++)  //вывод стэка
    std::cout<<stack[i];
 
    return EXIT_SUCCESS;
}
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
05.05.2010, 16:07 12
Stanislava,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <cstring>
#include <sstream>
#include <vector>
#include <fstream>
 
int fromString( std::string& s)
{
    std::istringstream iss(s);
    int res;
    iss >> res;
    return res;
}
 
 
int main()
{
    std::string s;
    std::string s2;
 
        std::string current;
        std::ifstream ifs("1.txt", std::ios::in | std::ios::binary);
        if ( !ifs.is_open() )
                {
                std::cerr << "Can't open input file!" << std::endl;
                return 1;
        }
 
 
 
 
    std::vector<int> stack; // выполняет роль стэка
 
    int number=0;
 
 
    while ( getline(ifs, s) ){
        for(int i=0;i<s.size(); i++)
        for(int j=48;j<58;j++)
        if ( (int)s[i]==j ){
            s2=s[i];
            number=fromString(s2);
            stack.push_back(number);
        }
    }
 
    ifs.close();
 
    for(int i=0;i<stack.size();i++)  //вывод стэка
    std::cout<<stack[i];
 
    return EXIT_SUCCESS;
}
вроде то что вам нужно

Добавлено через 52 секунды
Клео),
наверно где-то 2 раза объявлена переменная, в какой строке ошибка?
0
1 / 1 / 0
Регистрация: 03.05.2010
Сообщений: 23
05.05.2010, 17:00 13
выдаёт ошибку в строке 37:
C:\work\8\8.cpp(42) : error C2065: 'getline' : undeclared identifier
Error executing cl.exe.
0
1 / 1 / 0
Регистрация: 03.05.2010
Сообщений: 13
05.05.2010, 17:16  [ТС] 14
ошибка в 29 строке
for( int i=0; i<stack.size(); i++) //вывод стэка
0
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
05.05.2010, 17:18 15
Цитата Сообщение от Stanislava Посмотреть сообщение
:\work\8\8.cpp(42) : error C2065: 'getline' : undeclared identifier
хм, даже незнаю, у меня ничего такого не ругается.
попробуй еще вставить
C++
1
#include <stdio.h>
Добавлено через 1 минуту
Клео), замени все i на k
C++
1
2
    for( int k=0; k<stack.size(); k++)  //вывод стэка
    std::cout<<stack[k];
1
1 / 1 / 0
Регистрация: 03.05.2010
Сообщений: 23
05.05.2010, 17:25 16
Вставила...но ошибка не пропала(((
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10855 / 6727 / 1616
Регистрация: 25.07.2009
Сообщений: 12,468
05.05.2010, 17:49 17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <fstream>
#include <string>
#include <stack>
#include <cstdlib>
 
int main(){
    const std::string digits("1234567890");
    std::ifstream ifs("input.txt");
    if ( !ifs.is_open() ){
        std::cerr << "Can't open input file!" << std::endl;
        return 1;
    }
    std::string buf;
    int num;
    size_t pos;
    std::stack<int> stk;
 
    while ( std::getline(ifs, buf) ){
        pos = 0;
        while ( ( pos = buf.find_first_of(digits, pos) ) != std::string::npos ){
            num = std::atoi(buf.substr(pos).c_str());
            stk.push(num);
            pos = buf.find_first_not_of(digits, pos);
        }
    }
    ifs.close();
 
    while ( !stk.empty() ){
        std::cout << stk.top() << std::endl;
        stk.pop();
    }
 
    return 0;
}
1
1 / 1 / 0
Регистрация: 03.05.2010
Сообщений: 23
05.05.2010, 17:52 18
одна ошибка в 22 строке: C:\work\8\8.cpp(26) : error C2039: 'atoi' : is not a member of 'std'
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10855 / 6727 / 1616
Регистрация: 25.07.2009
Сообщений: 12,468
05.05.2010, 18:01 19
Stanislava, ну значит уберите std:: оттуда
C++
1
2
3
...
num = atoi(buf.substr(pos).c_str());
...
1
1 / 1 / 0
Регистрация: 03.05.2010
Сообщений: 23
05.05.2010, 18:06 20
Спасибо большое всё работает только одно меня смущает: в текстовом файле цифры написаны в одной последовательности, а программа их выдаёт в зеркальном. Так должно быть?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2010, 18:06

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создать стек, для суммирования чисел
Столкнулся с заданием в котором нужно создать стек при этом необходимо реализовать разбор строки...

Стек для хранения целых чисел (int)
Стек для хранения целых чисел (int). В классе должны быть функции добавления элемента на вершину...

Организуйте стек для хранения целых чисел
Организуйте стек для хранения целых чисел. Для стека используйте массив unsigned short. ...

Описать класс, реализующий стек комплексных чисел
Нужна помощь в задании - необходимо описать класс, реализующий стек комплексных чисел


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.