problema de medioprincipiante usando arreglos n.nU

Iniciado por Zerus-, 18 Septiembre 2010, 18:38 PM

0 Miembros y 3 Visitantes están viendo este tema.

Zerus-

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 
programador en proceso.....=w=

Littlehorse

Zerus. bienvenido/a al foro. En esta sección no se hacen tareas, lee las reglas.
Postea lo que llevas hecho utilizando las etiquetas GeSHi asi lo vemos.

En cuanto al significado de void, 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
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Zerus-

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^^
programador en proceso.....=w=

Garfield07



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Zerus-

#4
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
#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);
}
programador en proceso.....=w=

Gerik

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

Zerus-

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 ^^
programador en proceso.....=w=

Gerik

Citara=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)           
   }


Zerus-

gracias por la ayuda xD
un compañero me mostro su programa y me desilucione ami mismo

#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
programador en proceso.....=w=