• Domingo 19 de Mayo de 2024, 07:36

Autor Tema:  Dudas con C++ en Cadena de caracteres  (Leído 4397 veces)

ltrigos

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Dudas con C++ en Cadena de caracteres
« en: Viernes 1 de Agosto de 2008, 19:10 »
0
Hola como estan. Quisiera que me ayudaran con el siguiente codigo. Mi problema principal es la comparacion de las cadenas en la estructura IF, pues no se porque no puedo comparar caracteres. Sera mejor utilizaar strings para declarar las variables Nombre Y Apellido?.

//////////////////////////////////////////////////////////////////////////
# include <iostream>
# include <stdio.h>
# include <stdlib.h>
# include <string>
using namespace std;

void funcion (char Nombre, char Apellido, int *codigo)
{  
  if((Nombre== "leonardo")&&(Apellido== "trigos"))
  {
     *codigo=12345;        
  }
}

int main()
{
  char Nombre[20];
  char Apellido[20];
  printf("Introduce Nombre: ");
  scanf("%s",&Nombre);
  printf("Introduce Apellido: ");
  scanf("%s",&Apellido);
  funcion(Nombre, Apellido, &codigo);
  printf("La edad es: %dn",codigo);
 
  system("Pause");

  return 0;
 
}

Iganguli

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: mx
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #1 en: Viernes 1 de Agosto de 2008, 19:39 »
0
las cadenas no se comparan con == se usa strcmp

if( !strcmp(nombre, "leonardo") && !strcmp(Apellido,"trigos") )

strcmp regresa 0 si son iguales, -1 si es meno y 1 si es mayor

ltrigos

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #2 en: Viernes 1 de Agosto de 2008, 20:09 »
0
Intente con este codigo pero aun sin resultado. Podrian revisarlo...
Perdonen ser tan poco trucho en esto, apenas estoy comenzando...

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

Iganguli

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: mx
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #3 en: Viernes 1 de Agosto de 2008, 20:15 »
0
Citar
srtd:cin >> Nombre;
esto no es asi debe ser
Citar
std:cin >> Nombre
y falta declarar la variable codigo y como vas a trabajar en c++ utiliza la funcion compare de la clase string el cual su uso es asi

Código: Text
  1. if( !Nombre.compare("leonardo") && !Apellido.compare("trigo") )
  2.  

ltrigos

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #4 en: Viernes 1 de Agosto de 2008, 20:46 »
0
Una pregunta mas...

Puedo leer caracteres string y escribirlos mediante los comandos: scanf y printf?...
Si, si se puede, como puedo hacerlo??

Iganguli

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: mx
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #5 en: Viernes 1 de Agosto de 2008, 21:52 »
0
no al menos no declarendo la variable como string si lo quieres hacer usa un arreglo de caracteres

fachamix

  • Miembro MUY activo
  • ***
  • Mensajes: 173
  • Nacionalidad: ar
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #6 en: Miércoles 6 de Agosto de 2008, 15:57 »
0
todo lindo, hermoso che.... pero .... la variables codigo .... a donde la declaras antes de enviarla como parametro de una funcion ????

es decir, vos tienes esto:

int main()
{
  string Nombre;
  string Apellido;
  printf("Introduce Nombre: ");
  srtd:cin >> Nombre;
  printf("Introduce Apellido: ");
  srtd:cin >> Apellido;
  funcion(Nombre, Apellido, &codigo); <---------------------------- DONDE ESTA DECLARADA CODIGO!!!!!!!!!!!!
  printf("La codigo es: %dn",codigo);
 
  system("Pause");
 
  return 0;
 
}

no existe la variable *codigo en el contexto de la funcion main()

entiendes ??? , necesitas .... o declarar int *codigo en main()  o declarar int *codigo en el contexto global del programa
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 con C++ en Cadena de caracteres
« Respuesta #7 en: Jueves 7 de Agosto de 2008, 16:45 »
0
Gracias a todos por su ayuda... ;)

fachamix

  • Miembro MUY activo
  • ***
  • Mensajes: 173
  • Nacionalidad: ar
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #8 en: Jueves 7 de Agosto de 2008, 16:49 »
0
al final ............ has solucionado o no ????? que era ?
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 con C++ en Cadena de caracteres
« Respuesta #9 en: Jueves 7 de Agosto de 2008, 17:20 »
0
No aun no, me pasa algo raro. 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. # include <iostream>
  2. # include <stdio.h>
  3. # include <stdlib.h>
  4. # include <string.h>
  5. using namespace std;
  6.  
  7. void funcion(string, string, int, string);
  8.  
  9. int main()
  10. {
  11.   string Nombre;
  12.   string Apellido;
  13.   string Estado;
  14.   int codigo;
  15.   printf("Introduce Nombre: ");
  16.   std:cin >> Nombre;
  17.   printf("Introduce Apellido: ");
  18.   cin >> Apellido;
  19.   funcion(Nombre, Apellido, &codigo, &Estado);
  20.  
  21.   printf("El codigo es: %dn",codigo);
  22.   cout << Estado;
  23.  
  24.   system("Pause");
  25.  
  26.   return 0;
  27.  
  28. }
  29.  
  30. void funcion (string Nombre, string Apellido, int *codigo, string *Estado)
  31. {  
  32.   if( !Nombre.compare("leonardo") && !Apellido.compare("trigos") )
  33.   {
  34.      *codigo=200006354;
  35.      *Estado="soltero";        
  36.   }
  37. }
  38.  
  39.  
  40.  
  41.  

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

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

Iganguli

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: mx
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #10 en: Jueves 7 de Agosto de 2008, 17:50 »
0
Código: Text
  1. void funcion(string, string, int, string);
  2. void funcion (string Nombre, string Apellido, int *codigo, string *Estado)
  3.  

fijate en esta declaraciones, veras lo que te falta son los * cuando le pongas esto no deberia tener ningun problema

ltrigos

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #11 en: Jueves 7 de Agosto de 2008, 17:58 »
0
dices que le coloque * a todas las variables?

asi

void funcion (string *Nombre, string *Apellido, Int *codigo, string *Estado)  ?

fachamix

  • Miembro MUY activo
  • ***
  • Mensajes: 173
  • Nacionalidad: ar
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #12 en: Jueves 7 de Agosto de 2008, 18:03 »
0
en una declaracion de prototipo del tipo:

void funcion1 (int); //estas diciendo que existe una funcion de nombre funcion1 , que retorna void, y toma como unico  
                              //argumento, un parametro del tipo int

se la llamaria asi:
....
int var1;
var1 = 123;
funcion1(var1);

---------------------------------
void funcion2(int *); //estas diciendo que existe una funcion de nombre funcion2 , que retorna void, y toma como unico  
                              //argumento, un parametro del tipo int *, es decir, un PUNTERO A UN ENTERO

se la llamaria asi:
....
int var1;
var1 = 123;
funcion2(&var1);

entiendes ahora ????

la primera llama por valor absoluto, la segunda llama por referencia.


espero te ayude
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

Iganguli

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: mx
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #13 en: Jueves 7 de Agosto de 2008, 18:12 »
0
Citar
dices que le coloque * a todas las variables?
asi
void funcion (string *Nombre, string *Apellido, Int *codigo, string *Estado) ?

no solo a las 2 ultimas

Código: Text
  1. void funcion (string Nombre, string Apellido, Int *codigo, string *Estado)
  2.  
por que tal como lo dice fachamix cuanco invocas la funcion no le estas pasando una copia del valor sino una referencia que seria en el caso de codigo y estado

ltrigos

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #14 en: Jueves 7 de Agosto de 2008, 18:32 »
0
Listo amigos... ya pude corregir el problema

Muchas gracias...

Ltrigos

fachamix

  • Miembro MUY activo
  • ***
  • Mensajes: 173
  • Nacionalidad: ar
    • Ver Perfil
Re: Dudas con C++ en Cadena de caracteres
« Respuesta #15 en: Jueves 7 de Agosto de 2008, 22:46 »
0
si señor, ahi va che.

adelante!
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