Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2021, 11:39   #1
NECURU
Новичок
Джуниор
 
Регистрация: 04.10.2021
Сообщений: 1
По умолчанию Изменить динамический массив на статический

/*Используя стек, решить следующую задачу.
Напечатать каждое слово текстового файла T в обратном порядке.
Для реализации АТД Стек использовать массив
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;

const int MS=101;
char stack[MS]={0};
int t=0;

void PUSH(char y)
{
if(t==MS-1) {cout<<endl<<"The stack write operation is not possible. The stack is overfow"<<endl; system("PAUSE"); exit(0);}
else{
t=t+1;
stack[t]=y;}
}

char POP()
{
if(t==0) {cout<<"The stack write operation is not possible. The stack is empty"<<endl; system("PAUSE"); exit(0);}
else{
t=t-1;
return stack[t+1];}
}

struct Stack//Создаем структуру
{
char info;
struct Stack *next;
} *st=NULL;

void _PUSH(char y)//добавляем элемент в стек
{
struct Stack *Tmp = new Stack;
Tmp->info=y;
Tmp->next=st;
st=Tmp;
}

char _POP()//удаляем элемент из стека
{
char y;
if(st==NULL)
{
cout<<"The stack write operation is not possible. The stack is empty"<<endl;
system("PAUSE");
exit(0);
}
else {
struct Stack *Tmp=st;
st=Tmp->next;
y=Tmp->info;
delete Tmp;
return y;}
}
int main()
{
FILE *fps;
fps=fopen("T.txt", "r");

char *str;
str=new char [MS];
int i;
while(!feof(fps))
{
cout<<"Input: \n";
fgets(str, MS, fps);
for(i=0; str[i]!='\0'&& str[i]!='\n'; i++)
{
cout<<str[i];
}
if(str[i]=='\n') cout<<endl;
}
delete (str);
cout<<endl<<endl;
cout<<"Output: \n";
rewind(fps);//перемещает указатель положения в файле на начало указанного потока

//Реализация стека на массиве
char c;
while(!feof(fps))
{
c=fgetc(fps);
if(feof(fps)){while(t!=0) cout<<POP(); cout<<"\n";}
if(c!=' ' && c!='\n') PUSH(c);
if(t==0 & c!='\n') POP();
if(c=='\n'){while(t!=0) cout<<POP(); cout<<"\n";}
if(c==' '){while(t!=0) cout<<POP(); cout<<" ";}
}
system("PAUSE");
fclose(fps);
}
Вложения
Тип файла: txt T.txt (37 байт, 1 просмотров)
NECURU вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать 2 массива вместе. Динамический и Статический lalka123 Общие вопросы Delphi 0 11.12.2014 15:37
Статический массив Си Newb1e Помощь студентам 3 18.06.2012 01:24
статический массив IrinaSS Общие вопросы C/C++ 2 08.12.2010 19:31
статический ----> динамический . Помогите nexUS1 Помощь студентам 2 29.12.2009 20:13
Как изменить статический приватный член класса?? 3dgraph Помощь студентам 2 07.05.2009 20:06