Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Zerus- en 18 Septiembre 2010, 18:38 pm



Título: problema de medioprincipiante usando arreglos n.nU
Publicado por: Zerus- en 18 Septiembre 2010, 18:38 pm
soy nuevo en el foro antes de todo  saludos
*******
mi problema es el siguiente
usando pilas en el arreglo esta compuesto por 5 pocisiones pero he ahi el problema
si solo quiero meter 3 y los demas dejarloas asi  y que me imprima nomas los 3 que meti como imprimirlos en pantalla un profe nos dijo asi sin codigo y sin detalles que seria bueno que usaramos un buscador O.o
y despues pense que tendria logica que me busara las casillas que no tuvieran nig valor
y no me las imprimiera pero no se como hacerlo ya lo e intentado lo que necesito es un ejemplo ( un codigo el cual me explique esa parte porfas)
**
si me podrian apoyar en esa parte les estaria agradecido ^^
 :laugh: :laugh:
 a por cierto no e usado el void vi un programa que usaba void pero no le entendi 


Título: Re: problema de medioprincipiante usando arreglos n.nU
Publicado por: Littlehorse en 18 Septiembre 2010, 18:47 pm
Zerus. bienvenido/a al foro. En esta sección no se hacen tareas, lee las reglas (http://foro.elhacker.net/programacion_cc/reglas_del_subforo-t251603.0.html).
Postea lo que llevas hecho utilizando las etiquetas GeSHi asi lo vemos.

En cuanto al significado de void (http://es.wikipedia.org/wiki/C%2B%2B#La_palabra_clave_.22void.22), es un concepto básico, así que te recomiendo que busques un buen libro para empezar, y también que revises los apuntes de la clase.

Saludos


Título: Re: problema de medioprincipiante usando arreglos n.nU
Publicado por: Zerus- en 18 Septiembre 2010, 19:05 pm
lo tomare en cuenta ,perdon esque nomas mi duda era ese pedaso de codigo xD
pues de los apuntes sinceramente no salimos de arreglos no hemos visto ni apuntadores nada, solo estamos manipulando arreglos y la materia es estrucctura de datos vamos de mal en peor con el profesor,
buscare un libro aver que tal me va gracias^^


Título: Re: problema de medioprincipiante usando arreglos n.nU
Publicado por: Garfield07 en 18 Septiembre 2010, 22:14 pm
Escribe el code que lo veamos..


Título: Re: problema de medioprincipiante usando arreglos n.nU
Publicado por: Zerus- en 19 Septiembre 2010, 03:00 am
mi programa tiene que leer 5 o menos numeros de hecho el arrglo es de [5] pero si le pongo 3 numero ala hora de imprimir me sale los  3 numeros y basura aleatorea no se como definir asta que pocision esta ocupado para poder imprimir ya le intente de todo lo que le se y nada aver si alguien me da una idea ^^
//tenia pensado  poner solo la parte que me daba lata pero lo puse todo para que si pudieran lo compilaran y se dieran mas o menos una idea
Código:
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
int main() {
int op,ar[5],i,dd,aa,c;
reinicio:
do{
cout<<"\t\t\t\t\t\n menu \n";
cout<<"\ninseccion de numeros....1 ";
cout<<"\nmuestra de datos........2 ";
cout<<"\nextraccion de numeros...3 ";
cout<<"\nsalir...................4 ";
cout<<"\n-----> ";
cin>>op;
switch(op){
case 1:
//he aqui el problema necesito un tipo contador de las casillas
//que ya han sido utilizadas para guardar las que quedan vacias
system("cls");
cout<<"\ninserte un numero \n";
cin>>ar[i];
i=i++;
do{
cout<<"\nquiere meter un numero?\n si-1 2-no \n";
cin>>dd;
cout<<"\n";
switch(dd)
{
case 1:
cout<<"\n Introduzca un numero "<<"\n";
cin>>ar[i];
i=i++;
if (i==6) {
cout<<"este valor no se guarda\npila llena \n";
// si lo se, es una manera sucia de programar pero no me da mas remedio
//la profesora
goto reinicio;
}
break;
case 2:
cout<<"\ncapturacion terminada\n";
getch();
goto reinicio;
break;
default:cout<<"\n Esa opcion no es una opcion valida \n";
break;
}
}while (op!=2);
case 2:
if (ar[i]==ar[0]){
cout<<" no hay datos en el arreglo por favor insertelos";
}
else {
cout<<"\n numeros guardados en el arreglo \n";
 for(i=0;i<5;i++)
 {
 cout<<ar[i];
 cout<<"\n";
 cout<<"\n";
 }
 }
break;
case 3:
// si llegana compilar mi programa xD aqui sucede algo gracioso
//borra el primer elemento y despues borra del ultimo hacia atras
if (ar[i]==ar[0]){
cout<<" no hay datos en el arreglo por favor insertelos";
}
else{
cout<<"\nextraccion de numeros\n";
cout<<"numeros en el arreglo\n";
for(i=0;i<5;i++)
{
cout<<ar[i];
cout<<"\t";
cout<<"\t";
}
i=4;
do{
cout<<"\nquiere extraer un numero?\n si-1 2-no \n";
cin>>aa;

switch(aa)
{
case 1:
cout<<"\nnumeros en el arreglo\n";
for(c=i;c>=1;c--){
cout<<ar[c];
cout<<"\t";
}
i=i-1;


if (i==0) {
cout<<"\npila vacia \n";
goto reinicio;
}
break;
case 2:
cout<<"\ntermina la extraccion\n";
getch();
goto reinicio;
break;
default: cout<<"\nesa no es una opcion\n";
break;
}
}while(aa!=2);
}
break;
case 4:
cout<<"\ntermina el programa\n";
getch();
break;
default:cout<<"\nesta no es una opcion\n";
break;
}
} while(op!=4);
}


Título: Re: problema de medioprincipiante usando arreglos n.nU
Publicado por: Gerik en 19 Septiembre 2010, 05:32 am
Yo tambien veo estructuras, soy nuevo en esto pero creo que algunos de tus errores son:

1. TDA Pila (LastIn-FirstOut) Cuando extraes no validas eso e imprimes tu arreglo al revés
2. dd y aa lo usas para lo mismo, por lo tanto usa solo una
3. te imprime basura por que no inicializas tu vector, podrias inicializar tu vector en 0 y cuando vayas a imprimir validas que solo imprima si es diferente de 0

Te dejo un link donde te explican mejor el funcionamiento de una pila
http://8556080156135426046-a-1802744773732722657-s-sites.googlegroups.com/site/rcalderonmoreno/PILAS.pdf?attachauth=ANoY7cp0m1D2qP_BeLxSUB7i1euyIzRrSAh71g99KmR-KpLLzpOAI6AW-QbRRwuWO4GQ9rYt8LXn51XWIgna7YUdMpxDiFMZ074fi5GQFp45pFtIZReYW9O_Yoox9gFEwP2Yj_Q-yV9Sg95Rryn37rIx4trQ_xJJFEcHIInvvjeFTKRtY7p0tFxtNDeEmJR4kQxd2EjDEYkP&attredirects=0 (http://8556080156135426046-a-1802744773732722657-s-sites.googlegroups.com/site/rcalderonmoreno/PILAS.pdf?attachauth=ANoY7cp0m1D2qP_BeLxSUB7i1euyIzRrSAh71g99KmR-KpLLzpOAI6AW-QbRRwuWO4GQ9rYt8LXn51XWIgna7YUdMpxDiFMZ074fi5GQFp45pFtIZReYW9O_Yoox9gFEwP2Yj_Q-yV9Sg95Rryn37rIx4trQ_xJJFEcHIInvvjeFTKRtY7p0tFxtNDeEmJR4kQxd2EjDEYkP&attredirects=0)


Título: Re: problema de medioprincipiante usando arreglos n.nU
Publicado por: Zerus- en 19 Septiembre 2010, 18:00 pm
gracias voya componer mi programa

3. te imprime basura por que no inicializas tu vector, podrias inicializar tu vector en 0 y cuando vayas a imprimir validas que solo imprima si es diferente de 0
eso si es diferente de cero intente hacerlo de la siguiente manera anteriormente
a=i
for(i=a;i>=O;i++){
imprime datos
}
pero no me funciono ,ya me estas dando una idea voy  a ver si se me prende al foco ^^


Título: Re: problema de medioprincipiante usando arreglos n.nU
Publicado por: Gerik en 19 Septiembre 2010, 21:29 pm
Citar
a=i
for(i=a;i>=O;i++){
imprime datos
}

creo que deberias hacer esto
 mostrar()
   {empiezas a recorre el vector
        si vector en pos x!=0 
              imprimes
        si no
               nada xD(vuelve al for)           
   }



Título: Re: problema de medioprincipiante usando arreglos n.nU
Publicado por: Zerus- en 21 Septiembre 2010, 03:24 am
gracias por la ayuda xD
un compañero me mostro su programa y me desilucione ami mismo
Código:
#include <iostream>
#include <stdlib>
int i,num[5],op,t;
 void insertar ()
  {
   if (i==5)
    {
     cout<<"\n Pila llena "<<"\n";
    }
   else
    {
     cout<<"\n Introduzca un numero "<<"\n--";
     cin>>num[i];
     i=i+1;
    }
  }
 void eliminar ()
  {

   if (i<=0)
    {
     cout<<"\n Pila vacia "<<"\n";
    }
   else
   {
   i=i-1;
   cout<<"\nNumero eliminado:";
   cout<<"\n-- ";
   cout<<num[i]<<" --";
   cout<<"\n\n";
   }
  }
 void imprimir ()
  {
   if (i==0)
    {
     cout<<"\n Pila vacia \n";
    }
   else
   {
    int a,t=i-1;
    cout<<"\n La pila en orden es:\n\n";
    for (a=0;a<=t;a++)
     {
      cout<<num[a]<<"\n";
     }
    cout<<"\n La pila en al reves es:\n\n";
    for (a=t;a>=0;a--)
     {
      cout<<num[a]<<"\n";
     }
   }
  }
 void main ()
  {
  do
  {
   cout<<"\n";
   cout<<"1.- Insertar...."<<"\n";
   cout<<"2.- Eliminar...."<<"\n";
   cout<<"3.- Imprimir...."<<"\n";
   cout<<"4.- Salir......."<<"\n\n--";
   cin>>op;

     switch(op)
     {
      case 1: insertar();
       break;
      case 2: eliminar();
       break;
      case 3: imprimir();
       break;
      case 4:
       cout<<"\n Al fin!!!!!!!!!! \n\n";
       break;
      default:cout<<"\n Esa opcion no esta en el menu!!! \n";
      break;
     }
    }
     while (op!=4);
  }
:P  parace que necesito esforzarme  mas , estudiare mas a fondo ese void
**
pero gracias por la ayuda