elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa de archivos y pilas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa de archivos y pilas  (Leído 2,093 veces)
celest275

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Programa de archivos y pilas
« en: 10 Abril 2018, 05:22 am »

Hola, me pidieron una tarea que Escriba un programa que solicite al usuario la ruta de un archivo de texto que contenga instrucciones para pila y las ejecute, osea que si en el archivo esta escrita la palabra "Push" ejecute la funcion push, e igual se aparece un signo de "+,-,*,/" y numeros entre ellos haga la notacion polaca inversa, pero me tiran errores a la hora de llamar las funciones  :( :( Ayuda por favor   

Código:
#include<conio.h>
#include<iostream.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<fstream.h>


class Pila; //Clase prototipo
class nodo
{
double dato;
nodo *sig;  // ESTADOS

//-------------CREAR CONSTRUCTOR---------

nodo();
friend Pila ;
};
//--------------------------------------
class Pila
{
nodo *tope;
int nnodos;

public:
//---------CONSTRUCTOR PILA-----------
Pila();
void Push(double);
double Top();
void Drop ();
double Pop ();
void Show();
void Clear();
~Pila();
void swap();  //Cambiar los dos nodos en el topo de la pila los dos primeros.
void Dup(); //Duplica el nodo  que esta en el tope de la pila.
void Depth();
void Pick(); //Trabaja con PUSH
void DupN(); //Trabaja con PUSH
void DropN();
void Roll();
void RollD();
void Add();
void Sub();
void Mult();
void Divi();
void Pot();
};

//------------CONSTRUCTOR DE PILA---------------
 Pila::Pila()
{
tope=NULL;
nnodos=0;
}
//------------CONSTRUCTOR DEL NODO---------

nodo::nodo ()
{
dato=0;
sig=NULL;
}

void main()
{
   FILE *Archivo=NULL;
   char letra;
char arc[50];
int num=0;
char cadena[50];

   cout<<"Ingrese la ruta y nombre del archivo: "<<endl;
   cin >> "%s" >> arc;

   Archivo = fopen(arc,"r");
   if(Archivo == NULL)
{
    cout<<"No se ha encontrado el archivo";
   }
   else
   {
    while(feof(Archivo)==0)
      {
      fscanf(Archivo,"%s",&cadena);
         num = atof(cadena);
if(num != 0)
{
         Push(num);
         }
         if(strcmp(cadena,"top") == 0 ){
Top();
            }


if( strcmp(cadena,"drop") == 0 )
Drop();


if( strcmp(cadena,"pop") == 0 )
Pop();


if( strcmp(cadena,"show") == 0 )
Show();


if( strcmp(cadena,"clear") == 0 )
Clear();

if( strcmp(cadena,"swap") == 0 )
Swap();


if( strcmp(cadena,"depth") == 0 )
Depth();


if( strcmp(cadena,"dup") == 0 )
Dup();

if( strcmp(cadena,"pick") == 0 )
Pick();


if( strcmp(cadena,"dupn") == 0 )
DupN();


if( strcmp(cadena,"dropn") == 0 )
DropN();

if( strcmp(cadena,"roll") == 0 )
Roll();


if( strcmp(cadena,"rolld") == 0 )
RollD();


if( strcmp(cadena,"+") == 0 )
Add(Lista);


if( strcmp(cadena,"-") == 0 )
Sub();


if( strcmp(cadena,"*") == 0 )
Mult();

//Division
if( strcmp(cadena,"/") == 0 )
Div();

//Exponente
if( strcmp(cadena,"^x") == 0 )
Pot();
}
}
fclose(Archivo);
cout<<"\nPila:\n"<<endl;
//show();
clear2();
system("PAUSE");
}



//--------------CONSTRUCTOR DE PUSH --------------- (lifo)
void Pila::Push(double d)
{
nodo *nuevo=new nodo;
nuevo->dato=d;
nuevo->sig=tope;
tope=nuevo;
nnodos ++;
}

//---------------CONSTRUCTOR DE TOP-------------
double Pila::Top()
{
return ((tope)?tope->dato:NULL);
//operador condicional (cond)?rv:rf
}

//--------------CONSTRUCTOR DE DROP-----------
void Pila::Drop()
{
if (tope)
   {
  nodo *tmp=tope;
  tope=tope->sig;
  delete tmp;
  nnodos --;
  }
}
//----------CONSTRUCTOR DE POP----------------
double Pila::Pop ()
{
double dtmp=Top();
Drop();
return dtmp;
}
//------------------------------------------------


void Pila::Show()
{
nodo *tmp=tope;
while(tmp)
{
    cout<<tmp->dato<<",";
tmp=tmp->sig;
}
   cout<<endl;
}

void Pila::Clear()
{
while(nnodos>0)
Drop();
}

Pila::~Pila()
{
Clear() ;
}

void Pila::swap()
{
if(nnodos>=2)
{
    nodo *tmp=tope;
tope=tope->sig;
tmp->sig=tope->sig;
tope->sig=tmp;
}
}

void Pila::Dup()
{
if(tope)
Push(Top());
}

void Pila::Depth()
{
Push(nnodos);
}

void Pila::Pick()
{
if(tope)
{
    double n=Pop(); //Borra el dato y lo retorna n guarda el numero del nodo que quiero copiar
if((n<=nnodos) &&(n>=1))
{
          nodo *tmp=tope;
for(int x=1;x<n;x++)
tmp=tmp->sig;
Push(tmp->dato);
      }
   }
}

void Pila::DupN()
{
if(tope)
{ double N=Pop();
    if(N>=1)
      {
        N=(N<nnodos)?N:nnodos;
         for(int x=1; x<=N; x++)
         { Push(N);
          Pick();
         }
      }
   }
}

void Pila::DropN()
{
if(tope)
{ double N=Pop();
    if(N>=1)
      {
        N=(N<nnodos)?N:nnodos;
         for(int x=1; x<=N; x++)
         Drop();
      }
   }
}

void Pila::Add()
{
if(nnodos>=2)
    {
      Push(Pop()+Pop());
      }
}

void Pila::Sub()
{
if(nnodos>=2)
    {
      swap();
         Push(Pop()-Pop());
      }
}

void Pila::Mult()
{
if(nnodos>=2)
    {
      Push(Pop()*Pop());
      }
}

void Pila::Divi()
{
if(nnodos>=2)
    {
      swap();
         Push(Pop()/Pop());
      }
}

void Pila::Pot()
{
if(nnodos>=2)
    {
      Push(pow(Pop(),Pop()));
      }
}

void Pila::Roll()
{
    if (tope)
   {
      double N=Pop();

       nodo *tmp = tope;

             for(double x=1 ; x<N ; x++)
         {
             tmp = tmp->sig;
         }

         Push(tmp->dato);
   }
}

void Pila::RollD()
{
if(tope)
{
double n = Pop();
Depth();
if(n <= Pop())
{
nodo *tmp = tope;
for(double x=1; (x<n-1) && (tmp->sig) ;x++)
tmp = tmp -> sig;
Push(Pop());
}
}
}


En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Programa de archivos y pilas
« Respuesta #1 en: 10 Abril 2018, 22:44 pm »

edita tu post y pon tu código entre etiquetas GeSHi
también pon los errores que te marca el compilador
para que pueda ayudarte


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pilas en c++
Programación C/C++
GABETORAP 3 2,954 Último mensaje 2 Diciembre 2011, 01:56 am
por .:UND3R:.
Aplicacion de Consola C# - Programa Pilas « 1 2 »
.NET (C#, VB.NET, ASP)
Castiel 10 16,645 Último mensaje 3 Agosto 2016, 05:58 am
por El Benjo
[Error] ld returned 1 exit status en mi programa de pilas y colas
Programación C/C++
creiko 0 4,280 Último mensaje 19 Octubre 2016, 07:38 am
por creiko
Duda con programa de Pilas
Programación C/C++
Emily 2 3,378 Último mensaje 3 Febrero 2019, 08:25 am
por Emily
Ayuda con programa en C de Pilas
Programación C/C++
Emily 3 3,092 Último mensaje 3 Febrero 2019, 09:08 am
por Emily
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines