3 / 3 / 1
Регистрация: 12.01.2013
Сообщений: 47

Инвертировать строки

13.01.2013, 19:44. Показов 1915. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Смотрел несколько похожих задач, но там все делалось с помощью библиотек algorithm и vector. Тут же нужно сделать все как линейный список. Может кто-то помочь решить это задание?

Инвертировать каждую строку текстового файла с помощью стека (записать символы в обратном порядке).
Результат записать в новый файл.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.01.2013, 19:44
Ответы с готовыми решениями:

Инвертировать две строки
Помогите, пожалуйста, доработать. Нужно написать функцию инвертирования строки символов. Инвертировать две строки. Для одной строки...

Нужно инвертировать вторую половину строки.
1) нужно инвертировать вторую половину строки. помогите пожалуйста.

Сформировать квадратную матрицу; транспонировать матрицу и инвертировать порядок элементов каждой ее строки
Заданы два одномерных массива одинаковой длины: R и S.Сформировать квадратную матрицу A, каждый элемент которой, что находится в i-той...

12
Неэпический
 Аватар для Croessmah
18131 / 10715 / 2064
Регистрация: 27.09.2012
Сообщений: 27,009
Записей в блоге: 1
13.01.2013, 19:48
Считываем всю строку(или даже весь фаил)

Считываем символ строки, Пихаем его в стек.
И так со всеми символами в строке.

Потом достаем из стека и выводим на экран.
0
3 / 3 / 1
Регистрация: 12.01.2013
Сообщений: 47
13.01.2013, 19:56  [ТС]
Как именно затолкнуть и вытащить со стека, какими командами? Повторюсь, нужно сделать как линейный список, и записать в другой файл.
0
Неэпический
 Аватар для Croessmah
18131 / 10715 / 2064
Регистрация: 27.09.2012
Сообщений: 27,009
Записей в блоге: 1
13.01.2013, 20:18
STL можно использовать?
0
3 / 3 / 1
Регистрация: 12.01.2013
Сообщений: 47
13.01.2013, 20:21  [ТС]
Нет.. STL нельзя использовать.
0
Неэпический
 Аватар для Croessmah
18131 / 10715 / 2064
Регистрация: 27.09.2012
Сообщений: 27,009
Записей в блоге: 1
13.01.2013, 20:22
Цитата Сообщение от ZYL Посмотреть сообщение
Нет.. STL нельзя использовать.
тогда сначала нужно написать сам стек.
0
 Аватар для JlightenDev_C++
64 / 64 / 33
Регистрация: 12.08.2012
Сообщений: 151
13.01.2013, 20:37
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
#include <iostream>
#include <conio.h>
#include <fstream>
#include <stack>
 
int main()
{
    setlocale(LC_ALL, "RUS");
    std::stack<char> strStack;
    char c = ' ';
    std::fstream file;
    std::fstream fileOut;
    file.open("text.txt", std::ios::in);
    fileOut.open("textOut.txt", std::ios::out);
    if(!file.is_open())
    {
         std::cout << "File is not found.";
         getch();
         return 1;
    }
    int len(0);
    while(!file.eof())
    {
         file.get(c);
         strStack.push(c);
         len++;
    }
    file.close();
    strStack.pop(); // Для избавления от лишнего символа
    for(int i = 0; i < len - 1; i++)
    {
         fileOut << strStack.top();
         strStack.pop();
    }
    fileOut.close();
    return EXIT_SUCCESS;
}
1
3 / 3 / 1
Регистрация: 12.01.2013
Сообщений: 47
13.01.2013, 20:50  [ТС]
Спасибо, но это тоже не то..(
У меня в конспекте есть формирование стека, но там ошибки есть..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct stack
{
    int x;
    stack *prev;
}; typedef stack*pstack;
 
int Pop (pstack&top)
{ pstack p;
  int a;
  p=top;
  a=top->x;
  top=p->prev;
  delete p;
  return a;
}
Нужно сделать как линейный список...

Добавлено через 8 минут
Да, еще этот код меняет и сами строки местами, первую с последней, вторую с предпоследней.
0
73 / 73 / 13
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
13.01.2013, 21:14
Цитата Сообщение от ZYL Посмотреть сообщение
У меня в конспекте есть формирование стека
это и есть однонаправленный список
к тому же этот стек сделан для работы со значениями типа int, если Вы перепишете его для char то он сгодится для задания
0
Неэпический
 Аватар для Croessmah
18131 / 10715 / 2064
Регистрация: 27.09.2012
Сообщений: 27,009
Записей в блоге: 1
13.01.2013, 21:23
Оно? Только не мешало бы доработать
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <fstream>
class Stack{
private:
    struct Node{
        char symbol;
        Node *next;
    };
    Node * top;
    size_t size;
public:
    Stack();
    ~Stack();
    char Top();
    size_t Size();
    Stack & Push(char);
    bool IsEmpty();
    char Pop();
};
 
Stack::Stack(){
    this->top=NULL;
    this->size=0;
}
 
Stack::~Stack(){
    if (!this->top) return;
        Node * temp=this->top;
        while (this->top){
            temp=this->top;
            this->top=this->top->next;
            delete temp;
        }
}
 
bool Stack::IsEmpty(){
    return (this->size==0);
}
char Stack::Top(){
    if (this->top)
        return this->top->symbol;
    return 0;
}
char Stack::Pop(){
    if (!this->top) return 0;
    Node * temp;
    char rez=this->top->symbol;
    temp=this->top;
    this->top=this->top->next;
    delete temp;
    --(this->size);
    return rez;
}
Stack & Stack::Push(char ch){
    Node * temp=new Node;
    temp->symbol=ch;
    temp->next=this->top;
    this->top=temp;
    ++(this->size);
    return *this;
}
size_t Stack::Size(){
    return this->size;
}
 
int main(){
    Stack st;
    char * buffer=NULL;
    std::ifstream ifile("input.txt",std::ios::binary);
    std::ofstream ofile("output.txt",std::ios::binary);
 
    std::cout<<"Wait..."<<std::endl;
    ifile.seekg(0,std::ios::end);
    fpos_t size=ifile.tellg();  
    buffer=new char [size];
    ifile.seekg(0,std::ios::beg);
    ifile.read(buffer,size);
    for(char *p=buffer,*pend=buffer+size;p<pend;++p){
        if(*p==10)//Эти условия в Linux и MAC надо убрать оставить только st.Push(*p);
            *p=13;
        else
            if(*p==13)
                *p=10;
        st.Push(*p);
    }
    for(char *p=buffer;!st.IsEmpty();++p){
        *p=st.Pop();
    }
    ofile.write(buffer,size);
    delete [] buffer;
    std::cout<<"Operation has been complited"<<std::endl;
    return 0;
}
Название: Безымянный.jpg
Просмотров: 149

Размер: 9.9 Кб
1
3 / 3 / 1
Регистрация: 12.01.2013
Сообщений: 47
13.01.2013, 22:16  [ТС]
Работает, но этот код тоже меняет строки местами.. И мне не знакомы операторы private и public. Их можно убрать? И классы тоже не изучал..
Не пойму для чего нужен этот фрагмент кода
C++
1
2
3
4
5
6
7
8
for(char *p=buffer,*pend=buffer+size;p<pend;++p){
        if(*p==10)//Эти условия в Linux и MAC надо убрать оставить только st.Push(*p);
            *p=13;
        else
            if(*p==13)
                *p=10;
        st.Push(*p);
    }
Эх..пичальбеда. Но за старания спасибо =)
0
Неэпический
 Аватар для Croessmah
18131 / 10715 / 2064
Регистрация: 27.09.2012
Сообщений: 27,009
Записей в блоге: 1
13.01.2013, 22:22
Цитата Сообщение от ZYL Посмотреть сообщение
Работает, но этот код тоже меняет строки местами..
Это можно переделать.
Цитата Сообщение от ZYL Посмотреть сообщение
И мне не знакомы операторы private и public. Их можно убрать? И классы тоже не изучал..
Классы со структурами не изучали, а задача со стеком?
Цитата Сообщение от ZYL Посмотреть сообщение
Не пойму для чего нужен этот фрагмент кода
Проходит по буферу и заносит в стек каждый символ.
0
3 / 3 / 1
Регистрация: 12.01.2013
Сообщений: 47
14.01.2013, 20:34  [ТС]
Вот, вдруг кому пригодится ( код не мой ).
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*  Вариант 14.
    Инвертировать каждую строку текстового файла с помощью стека (записать символы в обратном порядке).
    Результат записать в новый файл.
*/
 
#include <iostream>
#include<fstream>
 
using namespace std;
 
struct stack
{
    char x;
    stack*prew; 
};
typedef stack*pstack;
 
void Out_file(fstream&f,char*namef)
{
    f.open(namef,ios::out);
    if(!f.is_open())
    {
        cout<<"Error!";
        exit(1);
    }
    else
    {
        if (f.eof())
        {
            f.clear();
            f.seekg(0);
        }
    }
 
    char*a=new char[40];
    cout<<"Введите строку :"<<endl;
    cin.get();
    cin.getline(a,40);
    while(a[0]!='*')
    {
        f<<a<<endl;
        cin.getline(a,40);
    }
    f.close();
    delete a;
    a=NULL;
}
 
void push(pstack&top,char a)
{
    pstack p;
    p=new stack;
    p->x=a;
    p->prew=top;
    top=p;
}
 
bool empty(pstack top)
{
    return(top==NULL);
}
 
char pop(pstack&top)
{
    pstack p;
    char a;
    p=top;
    a=top->x;
    top=p->prew;
    delete p;
    return a;   
}
 
void Read_file(fstream&f,char*namef)
{
    f.open(namef,ios::in);
    if(!f.is_open())
    {
        cout<<"Error!";
        exit(1);
    }
    else
    {
        if(f.eof())
        {
            f.clear();
            f.seekg(0);
        }
    }
    char *x=new char[40];
    while(!f.eof())
    {
        f.getline(x,40);
        cout<<x<<endl;
    }
    f.close();
    delete[] x;
    x=NULL;
}
 
void New_file(fstream&f1,char*namef,fstream&g,char*nameg)
{
    char x1;
    pstack top=NULL;
    f1.open(namef,ios::in);
    {
        if(f1.eof())
        {
            f1.clear();
            f1.seekg(0);
        }
    }
    g.open(nameg,ios::out); 
    char *x=new char[40];
    int i=0;
    while(!f1.eof())
    {
        f1.getline(x,40);
        i=-1;
        do
        {
            i++;
        if (x[i]!='\0')push(top,x[i]);
        }while(x[i]!='\0');
        while(!empty(top))
        {
            x1=pop(top);
            g.put(x1);
    }
            if (i>0)g.put('\n');
    }
    g.close();
    f1.close();
    delete[] x;
    x=NULL;
}
 
void main()
{
    setlocale (LC_ALL,"Russian");
 
    fstream fout,fin;
    char namef[10],nameg[10];
 
    cout<<"\n namef = ";
    cin>>namef;
 
    cout<<"\n nameg = ";
    cin>>nameg;
 
    Out_file(fout,namef);
    Read_file(fin,namef);
    New_file(fin,namef,fout,nameg);
    Read_file(fin,nameg);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.01.2013, 20:34
Помогаю со студенческими работами здесь

инвертировать
инвертировать 3-ий и 5-ый бит в слове. как это сделать? какие команды использовать?

Инвертировать массив
Доброе время суток! Начал делать задачу, но сказал преподаватель, что не все тут, что необходимо!!! Подскажите пожалуйста, что...

Инвертировать строку
Разбираюсь со строками. Почему на выводе получается &quot;sace&quot;?(должно быть &quot;aces&quot;, т.е. переворот строки) Перепроверил уже несколько раз....

Инвертировать массив
/*5.Есть массив(1, 2, 3, 4......).Вывернуть массив, т.е.значение, которое раньше было в последнем элементе, должно записаться в нулевой; ...

Инвертировать столбцы
Помогите,пожалуйста переписать частично код программы...Преподаватель говорит что столбы инвертирую неправильно. #include &lt;clx.h&gt; ...


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

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

Новые блоги и статьи
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru