• Viernes 8 de Noviembre de 2024, 18:41

Autor Tema:  Dudas uso de punteros  (Leído 1655 veces)

ltrigos

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Dudas uso de punteros
« en: Jueves 7 de Agosto de 2008, 17:00 »
0
Hola Amigos como estan... Pues mi duda nace de un problema en el compilado del codigo que luego les muestro. El unico problema es que al compilar me marca el error: Invalid convertion form Int* to Int en la linea de codigo 21. Este error hace referencia al argumento de la funcion IDandPSWD que luego se muestra en el codigo. De la funcion IDandPSWD busco devolver la variable NumeroCitas de la funcion NumeroID (El dato original se encuentra en esta funcion NumeroID con el nombre de NCitas) que es llamada dentro de IDandPSWD.

Miren el codigo, solo tengan en cuenta main ,y las funciones NombreID y IDandPSWD pues lo demas funciona y no tiene nada que ver con el problema.

Código: Text
  1. # include <stdio.h>
  2. # include <conio.h>
  3. # include <iostream>
  4. # include <stdlib.h>
  5. # include <string.h>
  6. using namespace std;
  7.  
  8.  
  9. bool markPBX(void);
  10. void IDandPSWD(int);
  11. void NombreID(int, int, string, string, int);
  12. int FormaAcceso(void);
  13. void FormaAccion(void);
  14.  
  15.  
  16. int main()
  17. {
  18.   markPBX();
  19.   int NumeroCitas;
  20.  
  21.   IDandPSWD(&NumeroCitas); //Miren aca
  22.   cout << "Prueba para ver si la variable es devuelta: "<<NumeroCitas;
  23.  
  24.   int Llave = FormaAcceso();
  25.   if (Llave == 1)
  26.   {
  27.     FormaAccion();    
  28.   }
  29.    
  30.   getch();    
  31. }
  32.  
  33.  
  34. //////////////////Funciones///////////////////////////
  35.  
  36. bool markPBX(void)
  37. {
  38.   int PBX;
  39.   bool TruMark = 0;
  40.   printf("Acceso al sistema por medio de la interfaz Telefonica:n");
  41.   printf("nMarque el Numero del PBX:");
  42.   scanf("%d", &PBX);
  43.  
  44.   while (PBX != 3634750)
  45.   {
  46.      printf("Error de marcacionn");
  47.      printf("nMarque el Numero del PBX:");
  48.      scanf("%d", &PBX);
  49.   }
  50.   TruMark = 1;
  51.   return TruMark;
  52. }
  53. //////////////////////////////////////////////////
  54. void NombreID(int codigo,int *IDfind, string *Nombre, string *PSWD, int *NCitas)
  55. {
  56.   bool Acceso1 = 0;                            
  57.   while(Acceso1 == 0)
  58.   {
  59.            
  60.      switch (codigo)
  61.        {
  62.            case 6354:
  63.            Acceso1 = 1;
  64.            *Nombre = "Leonardo Trigos";
  65.            *PSWD = "123456";
  66.            *NCitas = 5;
  67.            *IDfind = 1;
  68.            break;
  69.            
  70.            case 5544:
  71.            Acceso1 = 1;
  72.            *Nombre = "Ruben Velasquez";
  73.            *PSWD = "123456";
  74.            *IDfind = 1;
  75.            break;
  76.            
  77.            case 5550:
  78.            Acceso1 = 1;
  79.            *Nombre = "Jorge Viera";
  80.            *PSWD = "123456";
  81.            *IDfind = 1;
  82.            break;
  83.            
  84.            case 5728:
  85.            Acceso1 = 1;
  86.            *Nombre = "Jorge Africano";
  87.            *PSWD = "123456";
  88.            *IDfind = 1;
  89.            break;
  90.            
  91.            case 5793:
  92.            Acceso1 = 1;
  93.            *Nombre = "David Bohorquez";
  94.            *PSWD = "123456";
  95.            *IDfind = 1;
  96.            break;
  97.          
  98.                  
  99.            default:
  100.            printf("Codigo inexistente...n");
  101.            Acceso1 = 1;
  102.            *IDfind = 2;
  103.            break;
  104.        }    
  105.   }
  106.  
  107.  
  108. }
  109. /////////////////////////////////////////////////////////
  110. void IDandPSWD(int *NumeroCitas)
  111. {
  112.   long int ID=0;
  113.   string PSWD="0";//Problema:(PSWD tiene que ser numero)    
  114.   bool TrueID = 0;
  115.   int IDfind = 0;
  116.   string Nombre;
  117.   int NCitas; //Se declara la variale que sera devuelta de la funcion NombreID
  118.  
  119.   while (TrueID==0)
  120.   {  
  121.        printf("Ingrese su ID: ");
  122.        scanf("%d", &ID);
  123.        NombreID(ID, &IDfind, &Nombre, &PSWD, &NCitas);
  124.        *NumeroCitas = NCitas;//Se asigna NCitas a la variable que sera llamada en main
  125.        printf("Leonarodo %d",NCitas);//Para probar si NCitas correctamente de la funcion
  126.        if (IDfind ==1)
  127.        {
  128.           cout << "Usted esta ingresando como: n";
  129.           cout << Nombre <<endl;
  130.           bool Acceso2=0;
  131.           int Selec1;
  132.          
  133.           while(Acceso2 == 0)
  134.              {
  135.                printf("Marque:n 1: Sin 2: Non");
  136.                scanf("%d", &Selec1);
  137.              
  138.                switch (Selec1)
  139.                {
  140.                    case 1:
  141.                    Acceso2 = 1;
  142.                    TrueID = 1;
  143.                    break;
  144.                    
  145.                    case 2:
  146.                    Acceso2 = 1;
  147.                    TrueID = 0;
  148.                    break;
  149.                          
  150.                    default:
  151.                    printf("Marcacion Incorrecta...n");
  152.                    Acceso2 = 0;
  153.                    break;
  154.                }    
  155.              }
  156.          
  157.                
  158.        }
  159.        if(IDfind==2)
  160.        {
  161.          printf("No esta registrado en el sistema...n");
  162.          printf("Por favor ingrese los datos nuevamente...nn");
  163.        }
  164.        
  165.   }
  166.  
  167.   bool KeyPSWD = 0;
  168.   while(KeyPSWD == 0)
  169.   {
  170.       string PSWDUsuario;
  171.       cout << "Ingrese Contrasenha:n";
  172.       cin >> PSWDUsuario;
  173.       if(PSWD.compare(PSWDUsuario) == 0)
  174.       {
  175.         KeyPSWD = 1;                
  176.       }
  177.      
  178.   }
  179. }
  180. /////////////////////////////////////////////////////////
  181. int FormaAcceso(void)
  182. {
  183.   int KeyFormaAcceso=0;
  184.   int MarkFAcceso;
  185.  
  186.   while(KeyFormaAcceso == 0)
  187.   {
  188.     cout << "Seleccione Forma de Acceso.n";
  189.     cout << "Marque: n 1: Acceso a menun 2: Activar Reconocimiento de vozn";                    
  190.     cin >> MarkFAcceso;
  191.    
  192.     if(MarkFAcceso==1)
  193.     {
  194.       KeyFormaAcceso = 1;          
  195.     }
  196.     else
  197.     {
  198.       if(MarkFAcceso==2)
  199.       {
  200.         cout <<"nNo ta listo el Reconocimienton";      
  201.         //Aqui va funcion para reconocimiento de voz.
  202.         KeyFormaAcceso = 2;    
  203.       }
  204.       else
  205.       {
  206.         cout << "nMarcacion Incorrecta...n";    
  207.       }
  208.     }
  209.    
  210.   }
  211.   return KeyFormaAcceso;
  212. }
  213.  
  214. /////////////////////////////////////////////////////////
  215. void FormaAccion(void)
  216. {
  217.   int KeyFormaAccion=0;
  218.   int MarkFAccion;
  219.  
  220.   while(KeyFormaAccion == 0)
  221.   {
  222.     cout << "Seleccione Accion.n";
  223.     cout << "Marque: n 1: Conocer Estadon 2: Cancelar citas del dian 3: Salirn";                    
  224.     cin >> MarkFAccion;
  225.    
  226.     if(MarkFAccion==1)
  227.     {
  228.       KeyFormaAccion = 0;  
  229.       cout << "nTiene tal citas para hoyn";        
  230.     }
  231.     else
  232.     {
  233.       if(MarkFAccion==2)
  234.       {
  235.         cout <<"nHa cancelado todas las citas del dian";      
  236.         //Aqui va funcion para cancelar citas del dia
  237.         KeyFormaAccion = 0;    
  238.       }
  239.       else
  240.       {
  241.        
  242.         if(MarkFAccion==3)
  243.         {
  244.          KeyFormaAccion = 1;
  245.         }
  246.         else
  247.         {
  248.      
  249.           cout << "nMarcacion Incorrecta...n";    
  250.          
  251.         }
  252.       }
  253.     }
  254.    
  255.   }    
  256. }
  257.  
  258. ////////////////////////////////////////////////////////
  259.  
  260.  

Les agradezco de antemano cualquier ayuda...

Saludos

Ltrigos

fachamix

  • Miembro MUY activo
  • ***
  • Mensajes: 173
  • Nacionalidad: ar
    • Ver Perfil
Re: Dudas uso de punteros
« Respuesta #1 en: Jueves 7 de Agosto de 2008, 17:11 »
0
hermano, siguiendo la filosofia acordada de tu post anterior.

mira las declaraciones.

ahi esta la respuesta, de como declaras las funciones, tanto en sus prototipos, como en su desarrollo.


hechale un ojo... o 2 si es necesaario.


saludos.
La muerte vive celosa, de mi amada flor la vida. Dicen que me anda buscando, ojala si un dia me pilla. Me alle MACHAO Y CANTANDO PA QUE SE MUERA DE ENVIDIA

ltrigos

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dudas uso de punteros
« Respuesta #2 en: Jueves 7 de Agosto de 2008, 17:33 »
0
Creo que pasa lo mismo en este caso, que puede visualizarse algo mejor:


Al definir el codigo de la siguiente forma, me sale el error de invalid convertion int* to int en la linea 19

Código: Text
  1.    1. # include <iostream>
  2.    2. # include <stdio.h>
  3.    3. # include <stdlib.h>
  4.    4. # include <string.h>
  5.    5. using namespace std;
  6.    6.  
  7.    7. void funcion(string, string, int, string);
  8.    8.  
  9.    9. int main()
  10.   10. {
  11.   11.   string Nombre;
  12.   12.   string Apellido;
  13.   13.   string Estado;
  14.   14.   int codigo;
  15.   15.   printf("Introduce Nombre: ");
  16.   16.   std:cin >> Nombre;
  17.   17.   printf("Introduce Apellido: ");
  18.   18.   cin >> Apellido;
  19.   19.   funcion(Nombre, Apellido, &codigo, &Estado);
  20.   20.  
  21.   21.   printf("El codigo es: %dn",codigo);
  22.   22.   cout << Estado;
  23.   23.  
  24.   24.   system("Pause");
  25.   25.  
  26.   26.   return 0;
  27.   27.  
  28.   28. }
  29.   29.  
  30.   30. void funcion (string Nombre, string Apellido, int *codigo, string *Estado)
  31.   31. {  
  32.   32.   if( !Nombre.compare("leonardo") && !Apellido.compare("trigos") )
  33.   33.   {
  34.   34.      *codigo=200006354;
  35.   35.      *Estado="soltero";        
  36.   36.   }
  37.   37. }
  38.   38.  
  39.   39.  
  40.   40.  
  41.  


Pero con el condigo que coloco a continuacion me sale perfecto:

Código: Text
  1.    1. # include <iostream>
  2.    2. # include <stdio.h>
  3.    3. # include <stdlib.h>
  4.    4. # include <string.h>
  5.    5. using namespace std;
  6.    6.  
  7.    7. //void funcion(string, string, int, string);
  8.    8.  
  9.    9. void funcion (string Nombre, string Apellido, int *codigo, string *Estado)
  10.   10. {  
  11.   11.   if( !Nombre.compare("leonardo") && !Apellido.compare("trigos") )
  12.   12.   {
  13.   13.      *codigo=200006354;
  14.   14.      *Estado="soltero";        
  15.   15.   }
  16.   16. }
  17.   17.  
  18.   18.  
  19.   19. int main()
  20.   20. {
  21.   21.   string Nombre;
  22.   22.   string Apellido;
  23.   23.   string Estado;
  24.   24.   int codigo;
  25.   25.   printf("Introduce Nombre: ");
  26.   26.   std:cin >> Nombre;
  27.   27.   printf("Introduce Apellido: ");
  28.   28.   cin >> Apellido;
  29.   29.   funcion(Nombre, Apellido, &codigo, &Estado);
  30.   30.  
  31.   31.   printf("El codigo es: %dn",codigo);
  32.   32.   cout << Estado;
  33.   33.  
  34.   34.   system("Pause");
  35.   35.  
  36.   36.   return 0;
  37.   37.  
  38.   38. }
  39.   39.  
  40.   40.  
  41.   41.  
  42.   42.  
  43.  

La diferencia en los codigos es que en el primer caso defino la funcion prototipo primero y luego defino la funcion funcion(despues de main) y en el segundo caso defino la funcion funcion (valga la redundancia) primero y luego main. No se que dices ustedes al respecto...

ltrigos

fachamix

  • Miembro MUY activo
  • ***
  • Mensajes: 173
  • Nacionalidad: ar
    • Ver Perfil
Re: Dudas uso de punteros
« Respuesta #3 en: Jueves 7 de Agosto de 2008, 17:55 »
0
hermano mira, te lo digo porke , te estas yendo a cualkier lado.

espero que esto te  sirva para la prox.

siguiendo el primer codigo que has posteado te digo lo siguiente:

declaras como prototipo: void IDandPSWD(int);
desarrollas la funcion como : void IDandPSWD(int *NumeroCitas)

te das cuentas ?????? , que es lo que esta pasando ????? mira como declaras el prototipo , y como desarrollas las funcion.

arreglalo , te tienes que dar cuenta ya, o sino .... a leer de nuevo los apuntes.

mas no te puedo decir chango, dale, vos puedes. leelo paso a paso.

trata, y sino , bueno , te lo digo y punto.

EI: JUNTANDO MENSAJES DE NUEVO.

fijate como las declaras, y cuando las llamas, mira los parametros que les pasas
La muerte vive celosa, de mi amada flor la vida. Dicen que me anda buscando, ojala si un dia me pilla. Me alle MACHAO Y CANTANDO PA QUE SE MUERA DE ENVIDIA

ltrigos

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dudas uso de punteros
« Respuesta #4 en: Jueves 7 de Agosto de 2008, 18:04 »
0
Cita de: "fachamix"
hermano mira, te lo digo porke , te estas yendo a cualkier lado.

espero que esto te  sirva para la prox.

siguiendo el primer codigo que has posteado te digo lo siguiente:

declaras como prototipo: void IDandPSWD(int);
desarrollas la funcion como : void IDandPSWD(int *NumeroCitas)

te das cuentas ?????? , que es lo que esta pasando ????? mira como declaras el prototipo , y como desarrollas las funcion.

arreglalo , te tienes que dar cuenta ya, o sino .... a leer de nuevo los apuntes.

mas no te puedo decir chango, dale, vos puedes. leelo paso a paso.

trata, y sino , bueno , te lo digo y punto.

Hermano decis que declare como sigue:
 void IDandPSWD(int*);
void IDandPSWD(int *NumeroCitas)

Perdona mi falta de conocimiento en esto, solo llevo dos semanas aprendiendo C++

ltrigos

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dudas uso de punteros
« Respuesta #5 en: Jueves 7 de Agosto de 2008, 18:34 »
0
Listo Hermanos...Con sus instrucciones pude solucionar el problema

Muchas Gracias...

fachamix

  • Miembro MUY activo
  • ***
  • Mensajes: 173
  • Nacionalidad: ar
    • Ver Perfil
Re: Dudas uso de punteros
« Respuesta #6 en: Jueves 7 de Agosto de 2008, 22:43 »
0
bien ahi chango, bien che!!!!!!!!!!!!

eso es lo que esperamos de cualquiera aqui.

siempre tienes que tratar de entender los mensajes que arroja tu compilador.

aqui nadie es experto en nada, ..... nadie.

yo de ultima te decia que era lo que tenia el codigo, pero lo mejor, es que vos mismo te allas dado cuenta, con o sin nuestra ayuda.

los codigos se postean, en ocasiones exepcionales, en casos muy fuera de lo comun, donde con saber el conocimiento del lenguaje no alcanza para resolver un problema.

en fin, me alegro por vos.

espero que tu participacion sea tan activa como la nuestra.
La muerte vive celosa, de mi amada flor la vida. Dicen que me anda buscando, ojala si un dia me pilla. Me alle MACHAO Y CANTANDO PA QUE SE MUERA DE ENVIDIA