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

> Внимание!

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

 
 Ответить  Открыть новую тему 
> Работа со стеком в C++, вывод лат.букв в алфавитном порядке
Triplet
сообщение 17.11.2007 17:12
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.11.2007 17:35
Сообщение #2


Гость






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

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


Пионер
**

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

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


надо упорядочить все символы, а не строки
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.11.2007 18:07
Сообщение #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;
}

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


Пионер
**

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

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


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


Гость






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


Пионер
**

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

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


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

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

 

- Текстовая версия 18.07.2025 10:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"