|
Mostrar Temas
|
Páginas: [1]
|
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); }
|
|
|
4
|
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
|
|
|
5
|
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
|
|
|
6
|
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");}
|
|
|
7
|
Programación / Programación C/C++ / Enum
|
en: 20 Agosto 2017, 19:10 pm
|
Como puedo definir una constante de enumeración, que asocie el nombre del mes con el numero de mes correspondiente a cada semestre escolar.
EJEMPLO: Enero es el primero mes del primer ciclo y julio es el ultimo mes del ciclo . Agosto es el primer mes del segundo ciclo y diciembre es el ultimo mes del ciclo.
AYUDA!!.
|
|
|
8
|
Programación / Programación C/C++ / Arreglos
|
en: 20 Agosto 2017, 02:16 am
|
Tengo una duda con un arreglo, porque el iterador me da 4, a que se debe, AYUDA? //Arreglo/error.cpp/ #include <iostream>
using std::cout; using std::endl;
int main(void){
int i=0; int arreglo[3]={3,3,3}; arreglo[i++]=1; arreglo[i++]=2; arreglo[++i]=4; cout<<"arreglo[0]= "<<arreglo[0]<<endl; cout<<"arreglo[1]= "<<arreglo[1]<<endl; cout<<"arreglo[2]= "<<arreglo[2]<<endl; cout<<"iterador i= "<<i<<endl; return 0; }
|
|
|
9
|
Programación / Programación C/C++ / buscar en struct
|
en: 29 Abril 2017, 22:55 pm
|
q tal me dejaron hacer una agenda de pacientes mi error es como buscar en una estructura adjunto mi proyecto struct paciente{char nombre_p[20],app_p[10],apm_p[10],gen_p[15],ed_p[5],tel_p[15],tipos_p[10];}p[5];
gotoxy(35,3);printf("Captura del paciente %d.",i+1);fflush(stdin); gotoxy(35,5);printf("Nombre: ");gets(p[i].nombre_p);fflush(stdin); gotoxy(35,6);printf("apellido paterno: ");gets(p[i].app_p);fflush(stdin); gotoxy(35,7);printf("apellido materno: ");gets(p[i].apm_p);fflush(stdin); gotoxy(35,8);printf("Genero: ");gets(p[i].gen_p);fflush(stdin); gotoxy(35,9);printf("Edad: ");gets(p[i].ed_p);fflush(stdin); gotoxy(35,10);printf("Telefono: "); gets(p[i].tel_p);fflush(stdin); gotoxy(35,11);printf("Tipo Sangre: ");gets(p[i].tipos_p);fflush(stdin); gotoxy(38,13);printf("Captura terminada\n\n");
int j; for (j=0; j<=i; j++){ gotoxy(40,2);printf("Mostrar Pacientes."); gotoxy(42,4);printf("Paciente %d.\n",j+1); gotoxy(38,6);printf("Nombre: %s",p[j].nombre_p); gotoxy(38,7);printf("Apellido paterno: %s",p[j].app_p); gotoxy(38,8);printf("Apellido materno: %s",p[j].apm_p); gotoxy(38,9);printf("Genero: %s",p[j].gen_p); gotoxy(38,10);printf("Edad: %s",p[j].ed_p); gotoxy(38,11);printf("Telefono: %s",p[j].tel_p); gotoxy(38,12);printf("Tipo de sangre: %s",p[j].tipos_p); getch(); system("cls");
int j; char n[20]; printf("Buscador de Pacientes."); printf("\t\t\nDigite el Nombre: "); scanf("%s",&n); for(j=0; j<=i; j++){ if(strcmp(n,p[j].nombre_p)){ printf("\t\t\nPACIENTE ENCONTRADO.\n\n"); printf("\nNombre completo del paciente: %s %s %s\n",p[i].nombre_p,p[i].app_p, p[i].apm_p); printf("Genero del paciente: %s\n",p[i].gen_p); printf("Edad del paciente: %s\n",p[i].ed_p); printf("Telefono del paciente %s\n",p[i].tel_p); printf("Tipo de sangre del paciente: %s\n",p[i].tipos_p); return 0; } else{ printf("No encontrado."); }
quiero saber cual es mi error o porque no me busca el paciente q yo quiero ayudaaaaaaaaaaa
|
|
|
|
|
|
|