Cadena de caracteres. Ayuda urgente!

Iniciado por Josuex24, 30 Abril 2015, 04:03 AM

0 Miembros y 1 Visitante están viendo este tema.

Josuex24

Hola amigos por favor necesito de sus ayudas en este codigo, debo modificar los datos de una cadena de caracteres, el usuario debe ingresar el nombre y el compilador buscará posicion por posicion cual es igual al nombre ingresado por el usuario, no puedo hacer uso de librerias ni nada de eso, tengo este codigo y me da error. Por favor ayuda!.

Código (cpp) [Seleccionar]
int BuscarN(char N[M][C])
{
int i,pos=-1;
char nombre[C];
cout<<"Ingrese el nombre de la persona en la cual desea modificar los datos\n";
cin>>nombre;
for (i=0; i<M; i++)
if(nombre==N[i])
pos=i;
return pos;
}

void Modificar(char N[M][C], char S[M], float P[M])
{
int i;
i=BuscarN(N);
if (i==-1)
cout<<"No ingreso un nombre valido\n";
else
{
cout<<"Nombre : \n";
cin>>N[i];
cout<<"Sexo : \n";
cin>>S[i];
cout<<"Peso : \n";
cin>>P[i];
}
}

engel lex

#1
Citartengo este codigo y me da error. Por favor ayuda!.

empieza diciendo que error te da (copia y pega si es de compilador)

M y C son variables globales, son defines... qué? explica tu código con detalle, no esperes que adivinemos que hiciste en la parte no publicada
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

eferion

Coincido con lo dicho con engel_lex.

De todas formas un apunte rápido:

Las cadenas no se pueden comparar usando el operador ==. Hay que usar strcmp o similares.

nombre==N[i]

Esa comparación de ahí arriba devolverá "false" SIEMPRE salvo que el puntero "nombre" y el puntero "N[ i ]" apunten a la misma posición de memoria... lo cual veo poco probable (por no decir imposible) dado tu código.

Si en vez de usar char* para las cadenas pasases a usar la clase "string", entonces sí que podrías usar de forma segura el operador de comparación.

Un saludo

Josuex24

M y C son constantes, no me dejan utilizar variables globales. De todas maneras gracias , ya encontré la solucion, sin embargo no puedo compartirlo con ustedes en este momento ya que no lo tengo a la mano, y como lo dije antes, no me dejan hacer uso de alguna librería, el profesor quiere que aprendamos como trabajan stdio, string, etc. Muchas gracias por sus respuestas, un saludo.

eferion

Cita de: Josuex24 en  1 Mayo 2015, 04:43 AM
no me dejan hacer uso de alguna librería

la función strcmp que te comenté pertenece al estándar de C/C++, es más, está incluido en la librería "string".... esa que el profesor te pide utilizar.