Sei sulla pagina 1di 6

#include <iostream>

#include <stdio.h>

#include <cstring>

using namespace std;

struct Nodo {

char numero;

Nodo* sig;

};

void leerNumero(FILE*,Nodo*&);

void push(Nodo*&,char);

char pop(Nodo*&);

void agregar(Nodo*&,Nodo*&,char);

char desencolar (Nodo*&,Nodo*&);

void mostrarPila(Nodo*&);

Nodo* SumarPilas(Nodo*&,Nodo*&,Nodo*&,Nodo*&);

Nodo* SumarColaPila(Nodo*&,Nodo*&,Nodo*&);

void mostrarCola(Nodo*&,Nodo*&);

int main()

FILE*archivo;

archivo=fopen("C:\\puebra\\ArchNumero.txt","rt");

Nodo*Pila1=NULL;

Nodo*Pila2=NULL;

Nodo*fte=NULL;

Nodo*fin=NULL;

leerNumero(archivo,Pila1);

mostrarPila(Pila1);
leerNumero(archivo,Pila2);

mostrarPila(Pila2);

SumarPilas(Pila1,Pila2,fte,fin);

leerNumero(archivo, Pila1);

mostrarPila(Pila1);

SumarColaPila(Pila1,fte,fin);

mostrarCola(fte,fin);

fclose(archivo);

return 0;

void push(Nodo*&Pila,char valor)

Nodo*p=new Nodo();

p->numero=valor;

p->sig=Pila;

Pila=p;

void leerNumero (FILE*f, Nodo*&Pila)

char n;

fread(&n,sizeof(char),1,f);

while(!feof(f) && n !='\n'){

push(Pila,n);

fread(&n,sizeof(char),1,f);

Nodo* SumarPilas(Nodo*&Pila1,Nodo*&Pila2,Nodo*&fte,Nodo*&fin){

int dig = 0;
int suma = 0;

int resto = 0;

char ca1;

while (Pila1 != NULL && Pila2 != NULL){

dig = pop(Pila1) + pop(Pila2);

suma = dig+resto;

resto = 0;

if (dig>10){

suma = suma%10;

ca1=suma;

resto++;

agregar(fte,fin,ca1);

suma=0;

return fte;

Nodo* SumarColaPila(Nodo*&Pila,Nodo*&fte,Nodo*&fin){

int dig = 0;

int suma = 0;

int resto = 0;

char ca;

while(Pila!=NULL && fte!=NULL){

dig = pop(Pila) + desencolar(fte, fin);

suma = dig + resto;

resto = 0;

if (dig>10){

suma = suma%10;
ca = suma;

resto++;

agregar(fte,fin,ca);

suma = 0;

return fte;

char pop(Nodo*&Pila){

char valor = Pila->numero;

Nodo* aux_elim = Pila;

Pila = Pila->sig;

delete aux_elim;

return valor;

void agregar(Nodo *&fte,Nodo *&fin,char n){

Nodo *p = new Nodo();

p->numero = n;

p->sig = NULL;

if (fte==NULL)

fte = p;

else{

fin->sig = p;

fin = p;

return;
}

char desencolar (Nodo*&fte,Nodo*&fin)

char v;

v = fte->numero;

Nodo*q = fte;

if (fte == fin){

fte = NULL;

fin = NULL;

}else{

fte = fte->sig;

delete q;

return v;

void mostrarPila(Nodo*&Pila){

cout<<"\nEl numero al reves: \n";

while (Pila != NULL){

cout<<Pila->numero;

Pila = Pila->sig;

/*void mostrarCola(Nodo*&fte,Nodo*&fin){

if(fin==NULL){

cout<<"\nLa cola esta vacia.\n"<<endl;

while (fte!=NULL){

cout<<fte->numero;
cout<<fin->numero;

fte=fte->sig;

*/

void mostrarCola(Nodo*&fte, Nodo*&fin){

while(fte!=NULL){

cout<<"Numero : "<<desencolar(fte,fin);

Potrebbero piacerti anche