|
Mostrar Mensajes
|
Páginas: [1] 2
|
2
|
Programación / Programación C/C++ / Lista Ligada
|
en: 14 Octubre 2017, 21:53 pm
|
Implementar los siguientes métodos: - T posición(unsigned int p); - T operator[ ](unsigned int p) // sobrecargar del operador de acceso El método anterior y la sobrecarga retornan el elemento "T" que almacena el Nodo en su campo "dato" de acuerdo a la posición que ocupa el nodo dentro de la lista ligada. Si una posición hace referencia a un nodo que no existe, lanzar excepción. tengo este código que puedo hacer. .h #ifndef LISTASIMPLE_H #define LISTASIMPLE_H #include <iostream>
using namespace std;
template<class T> class Nodo{ public: Nodo(T dato, Nodo *s = nullptr){ this->dato = dato; this->siguiente = s; }
private: T dato; Nodo *siguiente;
template <class> friend class ListaSimple; };
template<class T> class ListaSimple { public: ListaSimple(); bool vacio(); void insertar(const T &dato); void insertar_ultimo(const T &dato); void borrar(); void borrar_final(); private: Nodo<T> *raiz; };
template<class T> ListaSimple<T>::ListaSimple(){ raiz = nullptr; }
template<class T> bool ListaSimple<T>::vacio(){ return raiz == nullptr; }
template<class T> void ListaSimple<T>::insertar_ultimo(const T &dato){ Nodo<T> *nuevo = new Nodo<T>(dato); if(vacio()){ raiz = nuevo; } else{ Nodo<T> *temp = raiz; while (temp->siguiente != nullptr) { temp = temp->siguiente; } temp->siguiente = nuevo; } }
template<class T> void ListaSimple<T>::insertar(const T &dato){ Nodo<T> *nuevo = new Nodo<T>(dato); if(vacio()){ raiz= nuevo; } else{ nuevo->siguiente = raiz; raiz = nuevo; } }
template<class T> void ListaSimple<T>::borrar(){ if(!vacio()){ Nodo<T> *temp = raiz; raiz = raiz->siguiente; delete temp; } else { throw out_of_range("Imposible eliminar: lista vacia"); } }
template<class T> void ListaSimple<T>::borrar_final(){ if(!vacio()){ Nodo<T>*temp=raiz; if(temp->siguiente==nullptr){ borrar();} else{ // 2 o mas elementos. while (temp->siguiente->siguiente != nullptr) { temp = temp->siguiente;} delete temp->siguiente; temp->siguiente = nullptr; } } else{ throw out_of_range("Imposible eliminar: lista vacia"); } }
#endif // LISTASIMPLE_H
|
|
|
3
|
Programación / Programación C/C++ / Listas Estaticas
|
en: 30 Septiembre 2017, 01:49 am
|
Ayuda, como puedo mostrar en listas estaticas adjunto codigo: lista.h #ifndef TLISTA_H #define TLISTA_H
using namespace std;
template <class T> class Lista{ public: Lista(void); ~Lista(void); bool vacio(); bool lleno(); void insertar(); int cantidad(); void mostrar();
private: T arreglo[3]; char contador; };
template <class T> Lista<T>::Lista(void){ contador = 0; }
template <class T> Lista<T>::~Lista(void){ delete []arreglo; }
template<class T> bool Lista<T>::vacio(){ return contador==0; }
template<class T> bool Lista<T>::lleno(){ return contador==3; }
template<class T> void Lista<T>::insertar(){ char item; if(!lleno()){ cout<<"Ingrese el valor: "; cin>>arreglo[item]; cout<<"Ingrese el valor: "; cin>>item; arreglo[contador]=item;}}
template<class T> int Lista<T>::cantidad(){ return contador; }
template<class T> void Lista<T>::mostrar(){ for(int i=0;i>3;i++){ cout<<"Ola"; cout<<arreglo[i]; contador++;} }
#endif // LISTA_H
.cpp #include <iostream> #include "lista.h"
using namespace std;
void menu();
int main() { menu(); return 0; }
void menu(){ Lista<char> List; bool bandera=false; do{ char tecla; cout << "Menu principal" << endl; cout << "-----------" << endl << endl; cout << "\t1 .- Ingresar" << endl; cout << "\t2 .- Mostrar" << endl; cout << "\t3 .- Borrar" << endl; cout << "\t4 .- Salir" << endl; cout << "elige una opcion: ";
cin >> tecla;
switch(tecla) { case '1': if(List.vacio()){ cout<<"Lista vacia"<<endl<<endl;} cout<<"Cantidad: "<<List.cantidad()<<endl; List.insertar(); break;
case '2':
List.mostrar(); break;
case '3': break;
case '4': bandera=true; break; } }while(bandera!=true); }
|
|
|
5
|
Programación / Programación C/C++ / Redefinition in listas
|
en: 20 Septiembre 2017, 01:30 am
|
Que tal tengo un error al compilar una lista me da error de redefinition error: no 'E ListaEstatica<E>::Eliminar()' member function declared in class 'ListaEstatica<E>' E ListaEstatica<E>::Eliminar(void){ ^ Adjunto codigo Implementacion: #ifndef LISTA_H #define LISTA_H
template <typename E> class Lista{ private: void operator=(const Lista&){}; Lista(const Lista&){}; public: Lista(void){}; virtual ~Lista(void){}; virtual void Vaciar(void)=0; virtual void Insertar(const E&)=0; virtual void PonAlFinal(const E&)=0; virtual E eliminar(void)=0; virtual void IrAlInicio(void)=0; virtual void Anterior(void)=0; virtual void Siguiente(void)=0; virtual int Tamanio(void)const=0; virtual int PosicionActual(void)const=0; virtual void IrAPosicion(void)=0; virtual const Lista &ObtenerElemento(void)const=0; };
#endif // LISTA_H Implementacion estatica: #include "lista.h"
template <typename E> class ListaEstatica: public Lista<E>{ private: int TamanioMaximo; int TamanioActual; int PosActual; E *Arreglo; public: ListaEstatica(int){}; ~ListaEstatica(void){}; void Vaciar(void); void Insertar(const E&); void PonAlFinal(const E&); E eliminar(void); void IrAlInicio(void); void Anterior(void); void Siguiente(void); int Tamanio(void)const; int PosicionActual(void)const; void IrAPosicion(void); const E &ObtenerElemento(void)const;};
//Constructor template <typename E> ListaEstatica<E>::ListaEstatica(int Tamanio){ TamanioMaximo=Tamanio; TamanioActual=PosActual=0; Arreglo=new E[Tamanio];}
//Destructor template <typename E> ListaEstatica<E>::~ListaEstatica(void){ delete[]Arreglo;}
template<typename E> void ListaEstatica<E>::Vaciar(void){ delete[]Arreglo; TamanioActual=PosActual=0; Arreglo=new E[TamanioMaximo];}
template<typename E> void ListaEstatica<E>::Insertar(const E& A){ for(int i=TamanioMaximo;i>PosActual;i--){ Arreglo[i]=Arreglo[i-1];} Arreglo[PosActual]=A; TamanioMaximo++;}
template<typename E> void ListaEstatica<E>::PonAlFinal(const E& A){ Arreglo[TamanioActual++]=A;}
template<typename E> E ListaEstatica<E>::Eliminar(void){ E A=Arreglo[PosActual]; for(int i=PosActual;i<TamanioActual;i++){ Arreglo[i]=Arreglo[i+1];} TamanioActual--; return A; }
template<typename E> void ListaEstatica<E>::IrAlInicio(void){ for(int i=PosActual;i<TamanioActual;i--){ Arreglo[PosActual];}} AYUDA QUE PUEDO HACER
|
|
|
6
|
Programación / Programación C/C++ / Re: clase Complejo para definir un numero complejo y realizar las operaciones
|
en: 1 Septiembre 2017, 04:21 am
|
Ya quedo, lo comparto //clases/complejo.h /*Interfaz de la clase complejo*/
#ifndef complejo_H #define complejo_H
class Complejo{ private: float real; float imaginario; public: Complejo(float _real,float _imaginario);//Constructor. float obtenerReal(void); float obtenerImaginario(void); void suma(float &real,float &imaginario); void resta(float &minuendo,float &sustraendo); void multiplicacion(float &multiplicando,float &multiplicador); void division(float ÷ndo,float &divisor);}; #endif // complejo_H
//clases/complejo.cpp /* **Implementación de la clase complejo.*/
#include <iostream> #include "complejo.h" using std::cout; using std::endl;
//Constructor. Complejo::Complejo(float _real,float _imaginario){ this->real=_real; this->imaginario=_imaginario;}
float Complejo::obtenerReal(void){ cout<<"Numero real: "<<real<<endl; cout<<endl; return real;}
float Complejo::obtenerImaginario(void){ cout<<"Numero imaginario: "<<imaginario<<endl; cout<<endl; return imaginario;}
void Complejo::suma(float &sum1,float &sum2){ cout<<"La suma es: "<<real+imaginario<<endl;}
void Complejo::resta(float &minuendo,float &sustraendo){ cout<<"La resta es: "<<real-imaginario<<endl;}
void Complejo::multiplicacion(float &multiplicando,float &multiplicador){ cout<<"La multiplicacion es: "<<real*imaginario<<endl;}
void Complejo::division(float ÷ndo,float &divisor){ cout<<"La division es: "<<real/imaginario<<endl;}
int main(void){ float x,y; Complejo h= Complejo(5,1); h.obtenerReal(); h.obtenerImaginario(); h.suma(x,y); h.resta(x,y); h.multiplicacion(x,y); h.division(x,y); return 0; }
|
|
|
7
|
Programación / Programación C/C++ / Re: clase Complejo para definir un numero complejo y realizar las operaciones
|
en: 31 Agosto 2017, 06:23 am
|
Me dejaron hacer este programa: 1) Codifique la interfaze implementación de la clase Complejo para definir un numero complejo y realizar las operaciones aritmeticas sobre numeros complejos, siga el diseño de la clase. 2) cree un objeto complejo y compruebe el funcionamiento del mismo. Complejo. -real:Float -imaginario:float +Complejo(real: flotante,imaginario: flotante) +obtenerReal(void): float +obtenerImaginario(void): float +suma(sumando1: complejo,sumando2: complejo): void +resta(minuendo: complejo,sustraendo: complejo): void +multiplicacion(multiplicando: complejo,multiplicador: complejo): void +division(dividendo: complejo,divisor: complejo): void lo que llevo de codigo interfaz de la clase //clases/complejo.h /*Interfaz de la clase complejo*/
#ifndef complejo_H #define complejo_H
class Complejo{ private: float real; float imaginario; public: complejo(float real,float imaginario); float obtenerReal(void); float obtenerImaginario(void); void suma(float sum1,float sum2); void resta(float minuendo,float sustraendo); void multiplicacion(float multiplicando,float multiplicador); void division(float dividendo,float divisor);}; #endif // complejo_H implementacion de la clase //clases/complejo.cpp /* **Implementación de la clase complejo.*/
#include <iostream> #include "complejo.h" using std::cout; using std::endl;
Complejo::complejo(float real,float imaginario){ this->real=real; this->imaginario=imaginario;} float Complejo::obtenerReal(void){ return 1;} float Complejo::obtenerImaginario(void){ return imaginario;} void Complejo::suma(float sum1,float sum2){ real=sum1; imaginario=sum2;; cout<<"La suma es: "<<sum1+sum2<<endl;} void Complejo::resta(float minuendo,float sustraendo){ real=minuendo; imaginario=sustraendo; minuendo-sustraendo;} void Complejo::multiplicacion(float multiplicando,float multiplicador){ real=multiplicando; imaginario=multiplicador; multiplicador*multiplicador;} void Complejo::division(float dividendo,float divisor){ real=dividendo; imaginario=divisor; dividendo/divisor;}
int main(void){ Complejo h; h.obtenerReal(); cout<<h.obtenerReal()<<endl; h.obtenerImaginario(); return 0; }
ayuda a terminarlo
|
|
|
8
|
Programación / Programación C/C++ / clase Complejo para definir un numero complejo y realizar las operaciones
|
en: 30 Agosto 2017, 06:22 am
|
!ayuda! 1) Codifique la interfaze implementación de la clase Complejo para definir un numero complejo y realizar las operaciones aritmeticas sobre numeros complejos, siga el diseño de la clase. 2) cree un objeto complejo y compruebe el funcionamiento del mismo. Interfaz de la clase complejo. //clases/complejo.h /*Interfaz de la clase complejo*/ #ifndef complejo_H #define complejo_H class complejo private: float real; float imaginario; public: complejo(float real,float imaginario); float obtenerReal(void); float obtenerImaginario(void); void suma(sumando1 complejo, sumando2 complejo); void resta(minuendo complejo, sustraendo complejo); void multiplicacion(multiplicando complejo, multiplicador complejo); void division(dividendo complejo, divisor complejo); #endif // complejo_H
Implementación de la clase complejo. //clases/complejo.cpp /* **Implementación de la clase complejo.*/ #include <iostream> #include "complejo.h" using std::cout; using std::endl: complejo::complejo(float real,float imaginario){ this->real=real; this->imaginario=imaginario;} float complejo::obtenerReal(void){ real=1;} float complejo::obtenerImaginario(void){ imaginario=1;} void complejo::suma(sum1 real, sum2 imaginario){ suma(sum1+sum2);} void complejo::resta(minuendo real, sustraendo imaginario){ resta(real-imaginario);} void complejo::multiplicacion(multiplicando real, multiplicador imaginario){ multiplicacion(real*imaginario);} void complejo::division(dividendo real, divisor imaginario){ division(real/imaginario);} int main(void){ complejo c; c.suma(); c.resta(); c.multiplicacion(); c.division(); return 0; }
me da error o no se en que estoy mal adjunte el codigo que llevo no se que me falte. AYUDA!! · Los titulos deben ser descriptivos >aquí las reglas del foro -Engel Lex
|
|
|
10
|
Programación / Programación C/C++ / Arreglos
|
en: 23 Agosto 2017, 04:43 am
|
Tengo una duda probeniente de mi estructura, al compilarlo no me da los ressultados que requiero como en "AM" y el "PM" ni el horario ya cheque pero no feo cual sea el error #include <stdio.h>
struct Hora{ int hora; int minuto; int segundo;};
struct Hora inicializa(void); void estableceHora(struct Hora *var, int hor, int min,int seg); void imprimeMilitar(struct Hora *var); void imprimeEstandar(struct Hora *var);
int main(void){ struct Hora h=inicializa(); imprimeMilitar(&h); imprimeEstandar(&h); estableceHora(&h,13,27,6); imprimeEstandar(&h); imprimeEstandar(&h); estableceHora(&h,66,66,66); imprimeMilitar(&h); imprimeEstandar(&h); return 0;}
struct Hora inicializa(void){ struct Hora horacero={0,0,0}; return horacero;}
void estableceHora(struct Hora *var, int hor,int min,int seg){ var->hora=(hor>=0&&hor<24)?hor:0; var->hora=(min>=0&&min<60)?hor:0; var->hora=(seg>=0&&seg<60)?hor:0;}
void imprimeMilitar(struct Hora *var){ printf("%s%i:%s%i\n",(*var).hora<10?"0":"",(*var).hora,(*var).minuto<10?"0":"",(*var).minuto);}
void imprimeEstandar(struct Hora *var){ printf("%i:%s%i:%s%i\n",((*var).hora==0||(*var).hora==12)?12:(*var).hora%12,(*var).minuto<10?"0":"",(*var).segundo<10?"0":"",(*var).segundo,(*var).hora<12?"AM":"PM");}
|
|
|
|
|
|
|