Red de conocimiento informático - Computadora portátil - Programación en c: Suma y multiplica dos números infinitos usando una única lista enlazada y mueve los dos números de menor a mayor (por ejemplo, 100 salidas 00)

Programación en c: Suma y multiplica dos números infinitos usando una única lista enlazada y mueve los dos números de menor a mayor (por ejemplo, 100 salidas 00)

//El programa consta de tres archivos principales:

//?BigInteger.h?Contiene la definición de la estructura del nodo y la definición de la clase BigInteger.

//?BigInteger.cpp?Contiene detalles de las funciones miembro de la clase BigInteger.

//?main.cpp?Función principal...

/************************ ******* **********************************/

/ /BigInteger.h

struct?Node// define la estructura del nodo

{ char?Num?*Prev, *Next; ;

class?BigInteger?//define el BigInteger?class

{ Node?*Head, *End, *TempNode; (char?Num); público: BigInteger(); BigInteger(const?BigInteger?amp; BigNum); const?BigInteger?amp; BigNum) ; ~BigInteger();

};

//BigInteger.cpp

#include?lt;iostream.hgt ;

#include lt;stdio.hgt;

#include?"BigInteger.h"

BigInteger::BigInteger()//Constructor, hace que cada nodo vacío.

{ Head=End=TempNode=NULL;

}

BigInteger::BigInteger(const?BigInteger?amp;BigNum)?//Copiar construcción

{ Nodo?*p; Head=End=TempNode=NULL; p=BigNum.Head; while(p) { AddEnd(p-gt;Num); /p>

}

BigInteger::~BigInteger()//Deconstruir

{ Nodo?*NextNode; if(Head==NULL) return; while( TempNode) { NextNode=TempNode-gt; eliminar?TempNode=NextNode; Cabeza=NULL; NULL TempNode=NULL; ?BigInteger::AddHead(char?Num)//Inserción de un nodo al principio de una tabla de cadena

{ TempNode=new?Node-gt; =NULL; if(!Cabeza) { Cabeza=Fin=TempNode-gt; Siguiente=NULL } else { TempNode-gt.Next=Cabeza-gt; >

}

void?BigInteger::AddEnd(char?Num)//Operación de insertar un nodo al final de una tabla de cadena

{

TempNode =nuevo?Nodo; TempNode-gt; TempNode-gt; Siguiente=NULL; if(!Head) { TempNode-gt; Fin; Fin-gt; Siguiente=TempNode; Fin=TempNode; }

}

tempa=tempa-gt } if(rest2)

resultado.AddHead(char(rest2)); if(temp.Head!=NULL) {

temp.End=temp.Head

temp.Head=NULL } tempb; =NULL; } return?resultado;

}

BigInteger?BigInteger::operator?=?(const?BigInteger?amp;BigNum)?// Sobrecarga = símbolo

{ if(this==amp; BigNum) return?*this; TempNode=Head=End=NULL;

Num.p> { AddEnd(p-gt; Num); p=p-gt; Siguiente; } return?*this;

}

void?BigInteger::disp( )//Lista de cadenas de salida

{ if(Head) { coutlt;lt;int(Head-gt;Num); TempNode=Head-gt;Next } else?return; coutlt;lt;int(TempNode-gt;Num); TempNode=TempNode-gt;Siguiente; } } coutlt;lt;endl;

}

// main.cpp

#include?lt;iostream.h gt;

#include?"BigInteger.h"

void?main()

{ BigNum1, BigNum3; int? c; coutlt; "Elija la operación que desea realizar:"lt; coutlt; coutlt; ;lt; "2. Multiplicación de enteros grandes"lt;lt;endl; coutlt;lt; "Seleccione una operación a realizar:"lt;lt;endl; lt; endl; int? lt; lt; cingt; gt; c; caso?

{? ; lt ;endl;

BigNum1.GetNumber();

coutlt;lt; "B:"lt;lt;endl;

BigNum2.GetNumber(

BigNum3.GetNumber();

BigNum4.GetNumber()GetNumber()

BigNum3=BigNum1 BigNum2

coutlt; lt; "El resultado de la suma es: "lt; lt;

BigNum3.disp(); p>{

coutlt;lt; "A:"lt;lt;endl;

BigNum1.GetNumber();

coutlt;lt; :"lt ;lt; endl;

BigNum2.GetNumber();

BigNum3=BigNum1*BigNum2;

coutlt;lt; "El resultado de la multiplicación es:"lt ;lt; endl;

BigNum3.disp();

}break; Valor predeterminado: break; }

}