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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: estructura doblemente encadenada en: 15 Mayo 2011, 18:04 pm
Ostia muchas gracias!!! sabia que se me escapaban cosas pero no sabia que eran ya que era la primera vez que intentaba hacer una lista doblemente encadenada.

lo que no se que es el swap(); para que sirve?

Gracias!!
2  Programación / Programación C/C++ / estructura doblemente encadenada en: 14 Mayo 2011, 00:00 am
Buenas estoy haciendo una lista doblemente encadenada; entiendo su funcionamiento pero no acabo de poder plasmarlo en el codigo. Haber si me podeis aconsegar de como hacerlo.

Gracias!!.

ESTRUCTURA:
Código
  1. struct Node {
  2.            int dada;
  3.            Node *seguent;
  4.            Node *anterior;
  5.  
  6.        };
  7.        Node *a_inici;
  8.  

METODOS:
Código
  1. EstDinDE::EstDinDE()
  2. {
  3.    a_inici=NULL;
  4. }
  5.  
  6. void EstDinDE::afegirInici(int e)
  7. {
  8.    Node *p;
  9.    p=new Node();
  10.    p->dada=e;
  11.    p->seguent=a_inici;
  12.    p->anterior=NULL;
  13.    //a_inici->anterior=p;
  14.    a_inici=p;
  15. }
  16.  
  17. void EstDinDE::afegirFinal(int e)
  18. {
  19.    Node *p,*aux;
  20.    p=new Node();
  21.    aux=new Node();
  22.    bool inserit=false;
  23.  
  24.    if(a_inici==NULL){
  25.        p->dada=e;
  26.        p->seguent=a_inici;
  27.        p->anterior=NULL;
  28.        a_inici=p;
  29.    }
  30.    else {
  31.        p=a_inici;
  32.        p=p->seguent;
  33.        aux=a_inici;
  34.        while(!inserit){
  35.            if(p!=NULL){
  36.                p=p->seguent;
  37.                aux=aux->seguent;
  38.            }
  39.            else{
  40.                Node *nou;
  41.                nou=new Node();
  42.  
  43.                nou->dada=e;
  44.                nou->seguent=NULL;
  45.                nou->anterior=aux->seguent;
  46.                p->seguent=nou;
  47.  
  48.                inserit=true;
  49.            }
  50.        }
  51.    }
  52. }
  53.  
  54. void EstDinDE::esborrar(int e)
  55. {
  56.    Node *p;
  57.    p=new Node();
  58.  
  59.    bool trobat=false;
  60.  
  61.    trobat=existeix(e);
  62.  
  63.    if((p!=NULL)&&trobat)
  64.    {
  65.        if(p==a_inici)
  66.        {
  67.            a_inici=p->seguent;
  68.            if(p->seguent != NULL)
  69.                p->seguent->anterior =NULL;
  70.        }
  71.        else if  (p->seguent!= NULL)
  72.        {
  73.            p->anterior->seguent=p->seguent;
  74.            p->seguent->anterior=p->anterior;
  75.        }
  76.        else {
  77.            p->anterior->seguent=NULL;
  78.        }
  79.        delete p;
  80.    }
  81. }
  82.  
  83. bool EstDinDE::existeix(int e)
  84. {
  85.    Node *p;
  86.    bool trobat=false;
  87.    p=a_inici;
  88.  
  89.    while((p!=NULL)&&(!trobat))
  90.    {
  91.        if (p->dada==e) trobat=true;
  92.        p=p->seguent;
  93.    }
  94.    return(trobat);
  95. }
  96.  
  97. void EstDinDE::llistar()
  98. {
  99.    Node *p;
  100.    p=a_inici;
  101.  
  102.    while(p->anterior) p=p->anterior;
  103.    while(p) {
  104.         cout << p->dada <<endl;
  105.         p=p->seguent;
  106.    }
  107. }
  108.  
3  Programación / Programación C/C++ / Re: Array dinamicas! Resuelto!!! en: 25 Febrero 2011, 22:46 pm
Ya lo he conseguido: dejo la solución por si a alguien le interesa en un futuro:

Código
  1. bool histograma(TaulaParaula t,int n,int pllarga)
  2. {
  3.    int *hist=NULL;
  4.    bool decreixent=true;
  5.  
  6.    hist = new int[pllarga];
  7.  
  8.    for(int i=0; i<pllarga; i++)
  9.    {
  10.        hist[i]=0;
  11.    }
  12.    for(int i=0; i<n; i++)
  13.    {
  14.        hist[t[i].llarg-1]=hist[t[i].llarg-1]+t[i].rep;
  15.    }
  16.    for(int i=0; i<pllarga; i++)
  17.    {
  18.        cout <<"["<<i+1<<"]"<<" - "<< hist[i] << endl;
  19.    }
  20. }
4  Programación / Programación C/C++ / Array dinamicas Ayuda plis! en: 25 Febrero 2011, 17:24 pm
Hola y gracias de antemano; mi problema es el siguiente.

Tengo la funcion:
Código
  1. void histograma(TaulaParaula t,int n,int pllarga)
  2. {
  3.    int *hist = NULL;
  4.    int pos;
  5.  
  6.    hist = new int[pllarga];
  7.  
  8.    for(int i=0; i<pllarga; i++)
  9.    {
  10.        hist[i]=0;
  11.    }
  12.    for(int i=0; i<n; i++)
  13.    {
  14.        hist[t[i].llarg]++;
  15.    }
  16.    for(int i=0; i<n; i++)
  17.    {
  18.        cout << hist[i] << endl;
  19.    }
  20.  
  21.    delete [] hist;
  22.    hist=NULL;
  23. }
  24.  

pllarga es la grandaria de la array.

Primer pongo en la array todos los valores a cero.
En el siguiente for t.llarg es un struc donde se guarda la largada de una palabra ejemplo: hola ->4. struc tiene n componentes.
Y lo que quiero es incrementar 1 a la array correspondiente.

ejemplo:
t.llarg=4
pues en hist[4] incrementar 1.

Por eso he hecho hist[t.llarg]=hist[t.llarg]+1;

pero no me va siempre me muestra 0.

Sabeis xk? Gracias!
5  Programación / Programación C/C++ / Re: Ayuda con ordenación plis! resuelto en: 22 Febrero 2011, 13:25 pm
Al final lo he conseguido el código es el siguiente por si a alguien le interesa:

Código
  1. while(c != M_FI)
  2.    {
  3.        ordenado = false;
  4.        i = 0;
  5.        while ((!ordenado) && (i<n))
  6.        {
  7.            if(c.compare(t[i].paraula)<=0)
  8.            {
  9.                for (j = n-1; j>=i; j--)
  10.                {
  11.                    t[j+1] = t[j];
  12.                }
  13.  
  14.                t[i].paraula=c;
  15.                t[i].llarg=c.length();
  16.                t[i].rep=1;
  17.  
  18.                ordenado = true;
  19.             }
  20.             i++;
  21.        }
  22.        if (!ordenado)
  23.        {
  24.            t[n].paraula=c;
  25.            t[n].llarg=c.length();
  26.            t[n].rep=1;
  27.        }
  28.        n++;
  29.        cin>>c;
  30.    }
  31.  
  32.  
6  Programación / Programación C/C++ / Ayuda con ordenación plis! en: 22 Febrero 2011, 00:51 am
Hola y de antemano gracias!

Mi duda es la siguiente: Tengo que ordenar alfabeticamente una lista, el problema que tengo es que la tengo que ir ordenando mientra va leyendo las palabras. No puedo guardarlas todas en una lista y posteriormente ordenarlas. Se deben de ir ordenando segun se va leyendo.

Lo maximo que podio hacer es que me ordene una pequeña parte pero luego la mitad de las palabras no me las ordena y en pantalla solo salen 0.

Aqui os dejo el código:
Código
  1.  
  2. #include <iostream>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. const int MAX_PARAULES=2500;
  8. const string M_FI="#";
  9.  
  10. struct Paraula
  11. {
  12. string paraula;
  13. int llarg;
  14. int rep;
  15. };
  16.  
  17. typedef Paraula TaulaParaula[MAX_PARAULES];
  18.  
  19. void mostrarParaules(TaulaParaula t, int n)
  20. {
  21. for(int i=0; i<n; i++)
  22. {
  23. cout<<t[i].paraula<<" "<<t[i].llarg<<" "<<t[i].rep<<endl;
  24. }
  25. }
  26.  
  27. void introduirParaules(TaulaParaula t, int&n)
  28. {
  29. string c;
  30. cin>>c;
  31. Paraula temp;
  32. int rep;
  33.  
  34. while(c != M_FI)
  35. {
  36. rep=0;
  37. if(n>0){
  38. for (int i=0; i<n; i++){
  39. if(c.compare(t[i].paraula)<0){
  40. temp=t[i];
  41. t[i].paraula=c;
  42. t[i].llarg=c.length();
  43. t[i].rep=1;
  44.  
  45. for(int x=n; x>i; x--){
  46. t[x+1]=t[x];
  47. }
  48. t[i+1]=temp;
  49. rep=1;
  50. }
  51. }
  52. if(rep==0) {
  53. t[n].paraula=c;
  54. t[n].llarg=c.length();
  55. t[n].rep=1;
  56. }
  57.  
  58. } else {
  59. t[n].paraula=c;
  60. t[n].llarg=c.length();
  61. t[n].rep=1;
  62. }
  63. n++;
  64. cin>>c;
  65. }
  66. }
  67.  
  68. int main()
  69. {
  70. TaulaParaula paraules;
  71. int n=0;
  72.  
  73. cout << "ENTRA EL TEXT A ANALITZAR" << endl;
  74. introduirParaules(paraules,n);
  75.  
  76. cout << "PARAULES LLEGIDES PER ORDRE ALFABETIC" << endl;
  77. mostrarParaules(paraules,n);
  78.  
  79. return 0;
  80. }
  81.  

Perdonen si es un fallo tonto pero llevo ya tantas horas mirando haber como lo hago que ya no se como hacerlo. Gracias
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines