Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - maferavagar

#1
Buenas Noches.
Perdon la molestia, pero alguien que me quiera ayudar o que me explique sobre como hacer la serie de Taylor para tan (x) por lo que he investigado tiene que ver con los numeros de Bernoulli, y que a su ves haga una aproximación de 0.00001

De antemano, gracias :)
#2
Buenas Tardes, una pregunta saben que significa "expected init-declarator before Insertar_Nodo" y en esa misma linea me dice "expected ',' or ';' before Insertar_Nodo", este error me sale despues de "//Declaro las funciones que tiene el programa"

solo pongo una parte de mi codigo:
Código (cpp) [Seleccionar]
class Nodo
{
   private:
               int dato;
               Nodo *HijoIzquierdo, *HijoDerecho,*Raiz;
   public:
               Nodo* Insertar_Nodo(int valor, Nodo*subArbol);
               //void EnOrden(Nodo*);
               //void PreOrden(Nodo*);
               void PostOrden(Nodo*);
               //int Nivel_arbol(Nodo*);
               //int NumeroNodo(Nodo*);
               //int FE(Nodo*);
               int Total_hojas2(Nodo*);
               int Total_hojas(Nodo*);
               //int Suma_nodos(Nodo*);
   
};

//Declaro las funciones que tiene el programa
Nodo*::Nodo Insertar_Nodo(int valor,Nodo*subArbol)
{
  if(subArbol==NULL)
  {
     subArbol=new Nodo;
     subArbol->HijoIzquierdo=subArbol->HijoDerecho=NULL;
     subArbol->dato=valor;
  }
  else
     
     if(valor<subArbol->dato)
        subArbol->HijoIzquierdo=InsertaNodo(valor, subArbol->HijoIzquierdo);
 
     else
        subArbol->HijoDerecho=InsertaNodo(valor, subArbol->HijoDerecho);
  return(subArbol);
}



Mod: Segundo aviso, los códigos deben llevar etiquetas GeSHi (están ubicadas arriba de los emoticones a la derecha) los titulos de los temas deben ser descriptivos al problema, modificalo
#3
Programación C/C++ / Arboles Binarios c++
7 Julio 2015, 00:44 AM
Buenas Tardes alguien me podria decir que significa within this contex; me dice que HijoIzquierdo,HijoDerecho y valor son privados, estoy usando Dev c++
Pongo mi codigo. De antemano gracias.
Código (cpp) [Seleccionar]
#include <time.h>
#include <stdio.h>

#include <stdlib.h>
#include <cmath>
#include <iostream>

using namespace std;

class Nodo
{
   private:
   int dato;
   Nodo *HijoIzquierdo, *HijoDerecho,*Raiz;
   public:
       Nodo* InsertaNodo(int, Nodo*);
       void EnOrden(Nodo*);
       void PreOrden(Nodo*);
       void PostOrden(Nodo*);
       int Nivel_arbol(Nodo*);
       int NumeroNodo(Nodo*);
       int FE(Nodo*);
       int Total_hojas2(Nodo*);
       int Total_hojas(Nodo*);
       int Suma_nodos(Nodo*);
   
};



//Declaro las funciones que tiene el programa

Nodo::Nodo* InsertaNodo(int valor, Nodo*subArbol)
{
  if(subArbol==NULL)
  {
     subArbol=new Nodo;
     subArbol->HijoIzquierdo=subArbol->HijoDerecho=NULL;
     subArbol->dato=valor;
  }
  else
     
     if(valor<subArbol->dato)
        subArbol->HijoIzquierdo=InsertaNodo(valor, subArbol->HijoIzquierdo);
 
     else
        subArbol->HijoDerecho=InsertaNodo(valor, subArbol->HijoDerecho);
  return(subArbol);
}


void Nodo:: EnOrden(Nodo *subArbol)
{
  if (subArbol!=NULL)
  {
     EnOrden(subArbol->HijoIzquierdo);
     printf("%d ", subArbol->dato);
     EnOrden(subArbol->HijoDerecho);
  }  
}

void Nodo:: PreOrden(Nodo *subArbol)
{
  if (subArbol!=NULL)
  {
     printf("%d ", subArbol->dato);
     PreOrden(subArbol->HijoIzquierdo);      
     PreOrden(subArbol->HijoDerecho);
  }  
}

void Nodo:: PostOrden(Nodo *subArbol)
{
  if (subArbol!=NULL)
  {
     
     PostOrden(subArbol->HijoIzquierdo);      
     PostOrden(subArbol->HijoDerecho);
     printf("%d ", subArbol->dato);
  }  
}

int Nodo:: Nivel_arbol(Nodo *subArbol)
{
   int a=0,b=0;
  if(subArbol==NULL)
  {
     return 0;
  }
 
  else
  {
     a=Nivel_arbol(subArbol->HijoIzquierdo)+1;
     b=Nivel_arbol(subArbol->HijoDerecho)+1;
  }
  if(a>=b)
     return a; //La raiz no se suma
  else
     return b; //La raiz no se suma
 
}

int Nodo:: NumeroNodo (Nodo *subArbol)
{
  if(subArbol==NULL)
     return 0;
 
  else
     return 1+NumeroNodo(subArbol->HijoIzquierdo)+NumeroNodo(subArbol->HijoDerecho);
}

int Nodo:: FE(Nodo *subArbol)
{
  if(subArbol==NULL)
     return 0;
 
  else
     return Nivel_arbol(subArbol->HijoDerecho)-Nivel_arbol(subArbol->HijoIzquierdo);
}

int Nodo:: Total_hojas(Nodo *subArbol)
{
  if(Raiz==NULL)
     return 0;
  if(Raiz->HijoDerecho==NULL && Raiz->HijoIzquierdo==NULL)
     return 0;

  return Total_hojas2(subArbol);
}

int Nodo:: Total_hojas2(Nodo *subArbol)
{
  if(subArbol==NULL)
     return 0;

  if(subArbol->HijoDerecho==NULL&&subArbol->HijoIzquierdo==NULL)
     return 1;

  return Total_hojas(subArbol->HijoDerecho) + Total_hojas(subArbol->HijoIzquierdo);


  //return 0;
}

int Nodo::Suma_nodos(Nodo *subArbol)
{
  if(subArbol==NULL)
     return 0;

  return subArbol->dato + Suma_nodos(subArbol->HijoDerecho) + Suma_nodos(subArbol->HijoIzquierdo);

}

int main()
{
   Nodo Obj;
   
  int k,num,opc=1,valor,nivel=0,nodos=0,nivel_esperado,frecu=0,hojas=0;
  Nodo *Raiz;
  Raiz=NULL;
     
  while(opc!=11)
  {
     printf("1.- Insertar Arbol\n");
     printf("2.- Recorrido en preorden\n");
     printf("3.- Recorrido  en orden\n");
     printf("4.- Recorrido en postorden\n");
     printf("5.- Nivel del arbol\n");
     printf("6.- Numero de Nodos\n");
     printf("7.- Nivel Perfecto de Nodos\n");
     printf("8.- Factor de Equilibrio\n");
     printf("9.- Numero de Hojas\n");
     printf("10.- Suma de Nodos\n");
     printf("11.- Salir\n");
     scanf("%d",&opc);
     
     switch(opc)
     {
        case 1:
           printf("Inserta Numero para el Arbol\n");
           scanf("%d",&num);
           Raiz=Obj.InsertaNodo(num, Raiz);
           //printf("Quieres seguir...");
           break;
       
        case 2:  Obj.PreOrden(Raiz);
           printf("\n");
           break;
           
        case 3:  Obj.EnOrden(Raiz);
           printf("\n");
           break;
           
        case 4:  Obj.PostOrden(Raiz);
           printf("\n");
           break;
           
        case 5:
           nivel=Obj.Nivel_arbol(Raiz);
           printf("Nivel del Arbol %d\n", nivel-1);
           break;
           
        case 6:
           nodos=Obj.NumeroNodo(Raiz);
           printf("Numero de Nodos %d\n", nodos);
           break;
           
        case 7:
           nivel_esperado = long(float(Obj.NumeroNodo(Raiz)))/log(2.0);
           printf("El Nivel Perfecto %d\n", nivel_esperado);
           break;
           
        case 8:
           frecu=Obj.FE(Raiz);
           printf("Factor de Equilibrio es %d \n", frecu);
           break;
       
        case 9:
           hojas=Obj.Total_hojas(Raiz);
           printf("La cantidad de Hojas es %d\n",hojas);
           //cout<<hojas<<endl;
           break;

        case 10:
           printf("La suma es %d\n", Obj.Suma_nodos(Raiz));
           break;


           
     }
     //system("cls");
  }
  system("PAUSE");
  return 0;    
 
}


Mod: Los còdigos deben ir en etiquetas GeSHi, los temas deben ir en sus respectivos subforos, movido
#4
Buenas Noches, alguien que me pudiera ayudar en mi código. Lo estoy haciendo en Dev, y al momento de compilar me manda Done, me aparece la ventana negra y despues me sale otra ventana diciendome , que mi proyecto.exe dejo de funcionar.
// LISTA SIMPLEMENTE ENLAZADA CON MEMORIA DINAMICA
// QUE INSERTA ORDENADO LOS DATOS
// CON FUNCION QUE DESPLIEGA LOS DATOS Y RETORNA UN PUNTERO
// CON FUNCION QUE INVIERTE EL ORDEN DE LA LISTA SIMPLE
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#define n 3
using namespace std;
struct nodo_lista {
  public:
                char nom[31];
          char bol[10];
          float cal[n];
          float prom;
          struct nodo_lista *sig;  // puntero a estructura

           
            nodo_lista(nodo_lista *S=NULL)
          {
       prom=0.0;
       strcpy(bol,S->bol);
       strcpy(nom,S->nom);
       for(int i=0;i<n;i++)
       {   cal=S->cal;
      prom=prom+cal;
      }
      prom=prom/n;
      sig=NULL;
  } //constructor que inicializa las variables del nodo

};

class lista1{
private:
    class nodo_lista *primero, * final, *nvo, *recorre;

public :
   lista1(){primero=final=recorre=nvo=NULL; }
   void inserta_nodo_ord(nodo_lista *D);
   nodo_lista *ver_nodos();
   void invertir(nodo_lista *lista);
   void eliminar_dato(char boleta[10]);
};

//funcion que inserta ordenado en la lista
void lista1::inserta_nodo_ord(nodo_lista *D) {
nvo= new nodo_lista(D);
if(nvo==NULL){cout<<"error en asignacion de memoria\n";getch();exit(1);}
if(primero == NULL) primero=final=nvo ;
// INICIALIZA LA PRIMERA DIRECCION Y LA FINAL
else
  {
    if(strcmpi(nvo->bol,primero->bol)<=0)
    {  //el dato a insertar es menor al primero
      nvo->sig=primero;  // enlaza el nuevo nodo al inicio
      primero = nvo;   // inicio apunta al nodo nuevo
    }
    else
    {   // de otra forma se busca su lugar
      recorre= primero;                 // condicion de ubicacion
      while( (recorre->sig != NULL) && (strcmpi(nvo->bol,recorre->sig->bol)>0) )
         {
          recorre = recorre->sig;
         }
      nvo->sig = recorre->sig; //inserta y/o enlaza el nuevo nodo al nodo siguiente
      recorre->sig= nvo;   // inserta y/o enlaza al nuevo nodo al nodo anterior
    }
  }
}
void lista1::invertir(nodo_lista *lista)
{
  recorre=lista;
  nodo_lista *nva_lista=NULL;
  while(lista!=NULL)
  {
    recorre=lista->sig;
    lista->sig=nva_lista;
    nva_lista=lista;
    lista=recorre;
  }
  primero=nva_lista;
}
   // Elimina un numero de la lista
void lista1::eliminar_dato(char boleta[10]) {
   nvo=recorre=primero;
   if(strcmpi(nvo->bol,boleta) == 0){
      primero=nvo->sig;
      delete(nvo);
   }
   while((nvo->sig != NULL) && (primero!=NULL)){
       nvo=recorre;
       recorre=recorre->sig;
      if(strcmpi(recorre->bol,boleta) == 0){
         nvo->sig = recorre->sig;
         delete(recorre);
      }
   }
}
// MUESTRA EL CONTENIDO DE LA LISTA Y RETORNA UN PUNTERO DE LA LISTA SIMPLE
nodo_lista *lista1::ver_nodos() {
   recorre=primero;
   cout<<"entra a ver"<<endl;
   while((recorre != NULL) && (primero != NULL))
   {
     cout<<"\nBOLETA : "<<  recorre->bol<<endl;
     cout<<"NOMBRE : "<<  recorre->nom<<endl;
     for(int i=0;i<n;i++)
       cout<<"CALIFICACION["<<i<<"] = "<<  recorre->cal<<endl;
     cout<<"PROMEDIO = "<<  recorre->prom<<endl;

    recorre=recorre->sig;
   }
   return(primero);
}

int main()
{
int i=0;char m,borra[10];
int opc;
lista1 Obj1C;     // objeto de la clase
nodo_lista *Obj2E,*Obj3E;  // objeto de la estructura
Obj2E=new nodo_lista;
if(Obj2E==NULL)exit(1);
clrscr();
do
{
     cout<<"\n\nBOLETA : ";     cin>>Obj2E->bol;
     cout<<"\nNOMBRE : ";     gets(Obj2E->nom);
     for(i=0;i<n;i++)
      {
       cout<<"\nCALIFICACION["<<i<<"] = ";
       cin>>Obj2E->cal;
      }

   Obj1C.inserta_nodo_ord(Obj2E); // inserta dato
   cout<<"  Salir de Insertar s/n ? ";
   m=getch();i++;
  }
   while(toupper(m) != 'S');
clrscr();
  //visualiza la lista y entrega la direccion inicial de la lista simple
Obj3E=Obj1C.ver_nodos();
cout<<"\n\nDesea ver invertida la lista? s(1),n(0) ";cin>>opc;
  if(opc)
{
  //invierte la lista simple
  Obj1C.invertir(Obj3E);
  //visualiza la lista y pierde la direccion inicial de la lista simple
  Obj1C.ver_nodos();
   }
  cout<<"\n\nDesea borrar un registro de la lista? s(1),n(0) ";cin>>opc;
  if(opc)
{
  cout<<"\nBoleta a borrar? : ";cin>>borra;
    Obj1C.eliminar_dato(borra);
    Obj1C.ver_nodos();
   }
getch();
}