IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Работа со стеком в C++, вывод лат.букв в алфавитном порядке
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 78
Пол: Женский

Репутация: -  0  +


Подскажите, пожалуйста, алгоритм, по которому можно вывести буквы из стека в алфавитном порядке.
// 2_1.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string>
#include <cstring>
#include <stdlib.h>
using namespace std;

class Stack
{private:
static const int MAX = 80;
int st[MAX];
int top;
public:
Stack( )
{top=0;}
void push (int var)
{st[++top]=var;}
int pop( )
{return st[top--];}
};
int _tmain(int argc, _TCHAR* argv[])
{Stack s1;
const int MAX=80;
char buffer[3][MAX];
int i=0;
int x,j,dlina,k;char z;
ifstream infile("input.txt");
while (!infile.eof())
{infile.getline(buffer[i],MAX);
cout << buffer[i] << endl; i++; //считали данные в массив строк
};
k=0;dlina=0;
for (i=0;i<3;i++)
{x=strlen(buffer[i]);dlina=dlina+x;
for (j=0;j<=x;j++) //данные из массива помещаем в стек
{s1.push(buffer[i][j]);k++;};
};
for (z='A';z<='Z';z++)
{for (i=0;i<=k;i++) //здесь должен быть вывод в алфавитном порядке
{if ((s1.pop()==z)||(s1.pop()==(z+32))){cout << s1.pop() << endl << "\n";};
};
};
return 0;
}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
// здесь должен быть вывод в алфавитном порядке
Можно уточнить, нужен вывод в алфавитном порядке символов строки, содержащейся в очередном элементе стека, или собственно надо отсортировать сам стек (строки должны быть упорядочены)?

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 78
Пол: Женский

Репутация: -  0  +


надо упорядочить все символы, а не строки
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Без велосипедов - вот так:

#include <fstream>
#include <string>
#include <iostream>

#include <stack>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
stack<string> s;
string buffer;

ifstream infile("input.txt");
while (!infile.eof()) {
getline(infile, buffer, '\n');
s.push(buffer);
cout << buffer << endl;
}

cout << "after:" << endl;
while(!s.empty()) {
buffer = s.top();
sort(buffer.begin(), buffer.end());
cout << buffer << endl;
s.pop();
}
return 0;
}

 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 78
Пол: Женский

Репутация: -  0  +


спасибо большое give_rose.gif
а если так радикально не менять мой код, то можно что-нибудь сделать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






А если так радикально не менять... Значит, опять придумывать по второму разу то, что уже есть готовое. Это без меня smile.gif В данном случае - попытаться написать свой (неполноценный, потому что повторить std::stack все равно не удастся) класс Stack, который будет работать только с целыми, причем программа будет рассчитана только на определенный размер файла (3 строки, насколько я вижу), да и работать посимвольно сложнее, чем с уже готовыми классами (кстати, STL - это стандартная библиотека, входит в состав С++, так что если ты все еще сомневаешься на этот счет, то это должно компилироваться и работать на любом современном компиляторе)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 78
Пол: Женский

Репутация: -  0  +


Понятно, ещё раз большое спасибо smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 31.10.2020 15:46
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name