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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / Programación C/C++ / cabecera ethernet en: 27 Enero 2018, 00:35 am
Ayuden, denme una idea de como implementar un codigo que tenga archivos y que en el archivo me denote una cabecera Ethernet.
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
Código:
#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
Código:
#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

Código:
#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++ / Re: Redefinition in listas en: 21 Septiembre 2017, 03:32 am
eso ya solo falta lo de redefinition
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:
Código:
#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:
Código:
#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

Código:
//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 &dividendo,float &divisor);};
#endif // complejo_H

Código:
//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 &dividendo,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
Código:
//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

Código:
//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.

Código
  1. //clases/complejo.h
  2. /*Interfaz de la clase complejo*/
  3.  
  4. #ifndef complejo_H
  5. #define complejo_H
  6.  
  7. class complejo
  8. private:
  9.    float real;
  10.    float imaginario;
  11. public:
  12.    complejo(float real,float imaginario);
  13.    float obtenerReal(void);
  14.    float obtenerImaginario(void);
  15.    void suma(sumando1 complejo, sumando2 complejo);
  16.    void resta(minuendo complejo, sustraendo complejo);
  17.    void multiplicacion(multiplicando complejo, multiplicador complejo);
  18.    void division(dividendo complejo, divisor complejo);
  19. #endif // complejo_H
  20.  

Implementación de la clase complejo.

Código
  1. //clases/complejo.cpp
  2. /*
  3. **Implementación de la clase complejo.*/
  4.  
  5. #include <iostream>
  6. #include "complejo.h"
  7. using std::cout;
  8. using std::endl:
  9.  
  10. complejo::complejo(float real,float imaginario){
  11.    this->real=real;
  12.    this->imaginario=imaginario;}
  13. float complejo::obtenerReal(void){
  14.    real=1;}
  15. float complejo::obtenerImaginario(void){
  16.    imaginario=1;}
  17. void complejo::suma(sum1 real, sum2 imaginario){
  18.    suma(sum1+sum2);}
  19. void complejo::resta(minuendo real, sustraendo imaginario){
  20.    resta(real-imaginario);}
  21. void complejo::multiplicacion(multiplicando real, multiplicador imaginario){
  22.    multiplicacion(real*imaginario);}
  23. void complejo::division(dividendo real, divisor imaginario){
  24.    division(real/imaginario);}
  25.  
  26. int main(void){
  27.    complejo c;
  28.    c.suma();
  29.    c.resta();
  30.    c.multiplicacion();
  31.    c.division();
  32.    return 0;
  33. }
  34.  

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
9  Programación / Programación C/C++ / Re: Arreglos en: 23 Agosto 2017, 07:10 am
listo

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

Código:
#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");}

Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines