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 - nevfuck

#1
Programación C/C++ / duda pilas
17 Octubre 2010, 22:22 PM
hola foro tengo una duda:

Código (cpp) [Seleccionar]
#include <iostream.h>
#include <windows.h>
#include <conio.h>

struct Nodo
{
int Dato;
Nodo *sig;
};

class Pila
{
private:
Nodo *inicio;
public:
//constructor
Pila()
{
inicio=NULL;
}
   void Sacar()
{
Nodo *r, *ant;
r = inicio;

if(r!=NULL)
{

do
{
ant=r;
if (r->sig!=NULL)
{
r = r->sig;
}
}while(r->sig!=NULL);
if(ant == r)
{
inicio=NULL;
}
delete r;
ant->sig=NULL;
}
}


-------------------------------------------------------

void suma

para sumar la pila insertada, en este caso tengo insertado
el 7,9,5 el resultado es 21, tengo que recorrer de nuevo la pila (como en el caso void mostrar)
el problema viene cuando tengo que sumar, ya le busque solo y nole encuentro...



--------------------------------------------------------



Código (cpp) [Seleccionar]
void Mostrar()
{
Nodo *recorrer;
recorrer = inicio;

if (recorrer!=NULL)
{
do
{
cout << recorrer->Dato << endl;
recorrer = recorrer->sig;
}while(recorrer->sig!=NULL);
cout << recorrer->Dato << endl;
}
else
{
cout << "Pila vacia" << endl;
}
}
   
    void Insertar(int num)
{

Nodo *nuevo;
nuevo = new Nodo;
nuevo->Dato=num;
nuevo->sig=NULL;

if(inicio==NULL)
{
inicio=nuevo;
}
else
{
if (inicio->sig==NULL)
{
inicio->sig = nuevo;
}
else
{
Nodo *aux;
aux=inicio;

while(aux->sig!=NULL)
{
aux=aux->sig;
}
aux->sig=nuevo;
}
}

}
};







  void main (void)
  {
int op;
Pila numeros;




do
{
system("cls");
cout << "<------(((MENU)))----->" << endl;
cout << "1.- Insertar pila" << endl;
cout << "2.- Sacar numero de la pila" << endl;
cout << "3.- Mostrar pila" << endl;
cout<<"4.- suma la pila"<<endl;
cout << "elige una opcion: ";
cin >> op;

system("cls");
switch(op)
{
case 1:
cout<<"numeros insertados"<<endl;
numeros.Insertar(7);
        numeros.Insertar(9);
       numeros.Insertar(5);

break;
case 2:
   cout << "Numero eliminado" << endl;
numeros.Sacar();
break;
case 3:
numeros.Mostrar();
break;

       case 4:
   numeros.Sumar();
   
break;

default:
cout << "Adios!!!"<< endl;
}

getch();

}while(op>=1 && op<=3);

}
#2
ayuda con pilas, necesito un programa simple que me permita insertar un numero ala cola, extraer un numero de la cola una vez llena,  eliminar un numero, salir.
ya busque en los buscadores y los ejemplos son muy complejos, esto tendria que ir con un menu como:


void menu

cout<<"1.- inserta un numero"<<endl;
cout<<"2.- extrae un numero"<<endl;
cout<<"3.-elimina un elemento"<<endl;
cout<<"4.-salir"<<endl;

switch (resolucion)

{
   case 1: .......................................
   case 2: .......................................



asi es la estructura: estuve leyendo que debo usar   punteros tambien, no se como, agradeceria me ayuden

   

#3
Programación C/C++ / colas simples
1 Octubre 2010, 15:07 PM
¿algun ejemplo de colas en c++? simple y entendible asi como este:

#include "stdio.h"
#include "iostream.h"
#include  MAX_COLA 50

typedef int tipodato;

typedef  struct
{ int elems;
int final, frente;
tipodato elementos[MAX_COLA];
} colacir;

/*  inicializa la cola */
void crearcola(colacir &cola);

/* retorna el indice del siguiente elemento */
int siguiente(int i);

/* retorna 1 si la cola esta vacia */
int vacia(colacir cola);

/*retorna 1 si la cola esta llena*/
int llena(colacir cola);

/* inserta un elemento al final de la cola*/
void encolar(colacir &cola,tipodato elem);

/* retira el elemento del inicio de la col*/
tipodato desencolar(colacir &cola);

/* obtiene el elmento del inicio de la cola */
tipodato frente(colacir cola);

/* reporta todos los elementos de la cola */
void visualizar(colacir cola);


/** DESARROLLO DE FUNCIONES  **/

void crearcola(colacir &cola)
{
cola.elems = cola.frente = 0;
cola.final =MAX_COLA-1;
}

int siguiente(int i)
{
   return ((i+1) % MAX_COLA);
}

int vacia(colacir cola)
{
   return (cola.elems == 0);
}

int llena(colacir cola)
{
return (cola.elems == MAX_COLA);
}

void encolar(colacir &cola, tipodato elem)
{
cola.elems++;
cola.final=siguiente( cola.final);
cola.elementos[cola.final] = elem;
}

tipodato desencolar(colacir &cola)
{
int elem;
cola.elems--;
elem = cola.elementos[cola.frente];
cola.frente=siguiente(cola.frente);
return elem;
}

tipodato frente(colacir cola)
{
   return cola.elementos[cola.frente];
}

void visualizar(colacir cola)
{
if(!vacia(cola))
   {
       cout<<desencolar(cola);cout<<"  ";
       visualizar(cola);
   }
} :D
#4
Programación C/C++ / ayuda codigo de arreglo
1 Octubre 2010, 02:26 AM
buenas tardes a todo el foro, tengo tiempo entrando ala web, anteriormente tenia una cuenta, aunque deje de utilizarla, tengo un problema, agradeceria me ayudaran con este codigo, tengo este arreglo que, hace llenar el arreglo, suma el arreglo, promedia el arreglo, solo quiero saber como sacar el numero mayor del arreglo, el codigo es el siguiente:





#include <iostream.h>
#include <windows.h>
#include <conio.h>

void main (void)
{
   int op;
   int *a, e;
   int c;
   int s=0;
   int p=0;
   int mayor;

   
   
   
   do
   {
      system("cls");
      cout << "M    E    N    U" << endl;
      cout << endl << "1.- para introdusir el tamaño del arreglo" << endl;
      cout << "2.- para llenar el arreglo" << endl;
      cout << "3.- para sumar arreglo" << endl;
      cout << "4.- para promedia arreglo" << endl;
      cout << "5.- para encontrar el numero mas grande del arreglo" << endl << endl;
      cout << "6.- salir"<< endl << endl;
      cin >> op;
      system("cls");
      switch(op)
      {
      case 1:
         cout << "introduce el tamano del arreglo" <<endl;
         cin>>e;
         a= new int[e];
         getch();
           break;
      case 2:
         cout << "introduce los numeros del arreglo" << endl;
         for(c=0;c<e;c++)
         {
           cin >>a[c];
         }
         getch();
         break;
      case 3:
         cout << "la suma del arreglo es " << endl;
         for(c=0;c<e;c++)
         {
          s=s+a[c];
         }
         cout<< " la suma es "<<s<< endl;
         getch();
         break;
      case 4:
         cout << "el promedio del arreglo es " << endl;
         p = s/e;
         cout<< p << endl;
         getch();
         break;
      case 5:

-----------------------------------------------------------------------------------
    aqui tendria que ir como saber el numero mayor del arreglo...no se que poner o como hacerlo
------------------------------------------------------------------------------------------



   }while(op>=1 && op<=5);
}



el codigo va dentro del case.....
gracias :-\