• Domingo 6 de Octubre de 2024, 04:30

Autor Tema:  Como Pasar Parametros De Punteros Tipo Cadena  (Leído 973 veces)

LjunBerG-

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Como Pasar Parametros De Punteros Tipo Cadena
« en: Sábado 19 de Junio de 2004, 20:34 »
0
Aqui puse el codigo de una Pila utilizando caracteres y orientado a objetos, segun lo que he investigado pero no me resulta quisiera saber si me pueden ayudar a pasar bn las cadenas por parametros utilizando punteros. Los enteros si pasan normal pero con las cadenas de caracteres tengo problemas. He buscado e intentado hacerlo peor no me resulta. Su ayuda se les agradeceria.


#include <iostream.h>
#include <conio.h>
void leer(char y);
class Pilas {
 public:
  int max,cima,valid;
  char *ya[20],pila[5];
  void asignar (int maxa, int cimaa){
  max = maxa;
  cima = cimaa;
  }
  void leer(char *y){
   ya = y;
  }
  void pila_full() {
  if (cima == max) {
   valid = 1;
  }
  else
   valid = 2;
  }
 void pila_vacia() {
  if (cima == -1) {
   valid = 1;
  }
  else
   valid = 2;
 }
 void push(){
  pila_full();
   if (valid == 1)
    cout<<"Desbordamiento"<<endl;
   else {
    cima = cima + 1;
    pila[cima] = ya;
    cout<<"La posicion de la pila es: "<<cima<<", y su valor es: "<<pila[cima]<<endl;
  }
 }
 void pop(){
  pila_vacia();
   if (valid ==1)
    cout<<"Subdesbordamiento"<<endl;
   else {
    ya = pila[cima];
    cima = cima - 1;
    if (cima == -1)
     cout<<"La posicion de la pila es: "<<cima<<", y existe: Subdesbordamiento"<<endl;
    else
     cout<<"La posicion de la pila es: "<<cima<<", y su valor es: "<<pila[cima]<<endl;
   }
 }
  void ver_pila(){
  int x=30,y=20,conta=0;
  gotoxy(30,19);
  cout <<"Pila"<<endl;
  while (conta<cima+1){
   gotoxy(x,y);
   cout<<conta<<". "<<pila[conta];
   y = y+1;
   conta++;
  }
  getch();
  clrscr();
 }
};
void main(){
int x,maxa,cimaa;
char y[20];
char resp;
maxa = 4;
cimaa = -1;
Pilas obj;
textbackground(15);
textcolor(0);
obj.asignar(maxa,cimaa);
do {
clrscr();
gotoxy (27,4);
cout<<"OPERACIONES CON PILAS"<<endl;
gotoxy(20,8);
cout<<"1. AGREGAR ELEMENTOS A LA PILA"<<endl;
gotoxy(20,10);
cout<<"2. ELIMINAR ELEMENTOS DE LA PILA"<<endl;
gotoxy(20,12);
cout<<"3. SALIR"<<endl;
gotoxy(23,15);
cout<<"OPCION: ";
gotoxy(32,15);
cin>>x;
if (x == 1) {
 cout<<"INTRODUZCA UN NUMERO"<<endl;
 cin>>y;
 obj.leer(&y);
 obj.pila_full();
 obj.push();
 obj.ver_pila();
 }
else if (x == 2){
 obj.pila_vacia();
 obj.pop();
 obj.ver_pila();
 }
else if (x==3){
 gotoxy(27,17);
 cout<<"CUIDESE, QUE TENGA UN BUEN DIA!"<<endl;
 getch();
 break;
 }
else
cout<<"INTRODUZCA UNA OPCION VALIDA"<<endl;
gotoxy(1,12);
cout<<"DESEA REALIZAR OTRA OPERACION CON LA PILA S/N:"<<endl;
gotoxy(49,12);
cin>>resp;
getch();
}while ((resp == 'S') || (resp == 's'));
}

desgraciado

  • Miembro activo
  • **
  • Mensajes: 30
    • Ver Perfil
    • http://desgrasoft.esp.st/
Re: Como Pasar Parametros De Punteros Tipo Cadena
« Respuesta #1 en: Domingo 20 de Junio de 2004, 07:45 »
0
no estoy seguro de tu pregunta pero aqui te dejo un ejemplo de pila con cadena (tampoco se si es la mejor manera de hacerlo)   :scream:


Código: Text
  1.  
  2. #include &#60;iostream&#62;
  3. #include &#60;cstring&#62;
  4.  
  5. using namespace std;
  6.  
  7. class Stack
  8. {
  9. private:
  10.   char *Cad[20];
  11.   int len[20];
  12.   int indice;
  13.   char buffer[50];
  14.  
  15. public:
  16.   Stack() : indice(0) {}
  17.  
  18.   void push(char *cad)
  19.   {
  20.     if(indice &#60; 20)
  21.     {
  22.       len[indice] = static_cast&#60;int&#62;(strlen(cad));
  23.       Cad[indice] = new char[len[indice]];
  24.       memcpy(Cad[indice], cad, len[indice]);
  25.       indice++;
  26.     }
  27.   }
  28.  
  29.   const char* pop()
  30.   {
  31.     memset(buffer,'&#092;0',50);
  32.     if(indice &#62;= 0)
  33.     {
  34.       indice--;
  35.       memcpy(buffer, Cad[indice], len[indice]);
  36.       delete[] Cad[indice];
  37.     }
  38.     return buffer;
  39.   }
  40. };
  41.  
  42. int main()
  43. {
  44.   Stack obj;
  45.   obj.push(&#34;hola&#34;);
  46.   obj.push(&#34;ver&#34;);
  47.  
  48.   cout &#60;&#60; obj.pop() &#60;&#60; endl;
  49.   cout &#60;&#60; obj.pop() &#60;&#60; endl;
  50.  
  51.   obj.push(&#34;como&#34;);
  52.  
  53.   cout &#60;&#60; obj.pop() &#60;&#60; endl;
  54.  
  55.   return 0;
  56. }
  57.  
  58.