Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Tema registros

Estas en el tema de Tema registros en el foro de C/C++ en Foros del Web. Buenas noches tengo un problemilla que no puedo solucionar . Tengo varias funciones que hacen x cosas . Una de ellas tengo que buscar dentro ...
  #1 (permalink)  
Antiguo 25/04/2012, 13:55
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 8 meses
Puntos: 3
Tema registros

Buenas noches tengo un problemilla que no puedo solucionar .

Tengo varias funciones que hacen x cosas .

Una de ellas tengo que buscar dentro de un struct una información .

Cuando sea verdad sale un resultado :

while (i<=x ){
if(persona[i].nom[0]==nom_per[0]){
printf("\n\t si \n");
printf("\n\t ----------> %d \n",i);
}
else{
printf("\n\t No existeix");
printf("\n\t ----------> %d \n",i);
//break;
}
i++;

}

con este while/ for(tmb se pueder hacer) solo consigo mostrar

si
----------> 0
no
----------> 1
no
----------> 2

or

no
----------> 0
si
----------> 1
no
----------> 2

etc...

Lo que quiero es que cuando sea que si pare ! (break)
i cuando sea que no salte :)

Si pongo un break en el else , cuando busco la "1" posición(de la palabra) i la comparo con el primer carácter me sale

no
----------> 0

El contador no anda ? xD

Espero explicarme correctamente :)

Por cierto solo comparo el primer carácter :)

Última edición por drakgoku1; 25/04/2012 a las 14:06
  #2 (permalink)  
Antiguo 25/04/2012, 15:37
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Tema registros

Tu mismo diste la respuesta queres un break!!!

while (i<=x ){
if(persona[i].nom[0]==nom_per[0]){
printf("\n\t si \n");
printf("\n\t ----------> %d \n",i);
break;
}
else{
printf("\n\t No existeix");
printf("\n\t ----------> %d \n",i);
}
i++;

}

el break hace que te vayas del for... Saludos
  #3 (permalink)  
Antiguo 25/04/2012, 22:42
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Tema registros

ya lo se , pero cuando busco la "4" posicion me salen los else :S hasta llegar a el

ejemplo : 4 posición

no-------->0
no-------->1
no-------->2
si--------->3

yo solo quiero que me muestre solo el correcto

ejemplo :
si--------->3

He visto que quitando el else funciona , pero donde lo puedo colocar ¿?

Última edición por drakgoku1; 26/04/2012 a las 03:26
  #4 (permalink)  
Antiguo 26/04/2012, 04:58
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Tema registros

Quita el else y pon un if fuera.

Código C:
Ver original
  1. while (i<=x ){
  2. if(persona[i].nom[0]==nom_per[0]){
  3. printf("\n\t si \n");
  4. printf("\n\t ----------> %d \n",i);
  5. break;
  6. }
  7. i++;
  8. }
  9.  
  10. if (i>x){
  11. printf("\n\t No existe x");
  12. }
  #5 (permalink)  
Antiguo 26/04/2012, 12:09
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Tema registros

Cita:
Iniciado por alexg88 Ver Mensaje
Quita el else y pon un if fuera.

Código C:
Ver original
  1. while (i<=x ){
  2. if(persona[i].nom[0]==nom_per[0]){
  3. printf("\n\t si \n");
  4. printf("\n\t ----------> %d \n",i);
  5. break;
  6. }
  7. i++;
  8. }
  9.  
  10. if (i>x){
  11. printf("\n\t No existe x");
  12. }
No me funciona a tu manera

i>x nunca se cumple :S

Alguna ayuda¿

Última edición por drakgoku1; 26/04/2012 a las 12:56
  #6 (permalink)  
Antiguo 26/04/2012, 13:24
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: Tema registros

Se tiene que cumplir cuando todos son distintos... Osea cuando todos son No...proba un ejemplo de esos.
  #7 (permalink)  
Antiguo 26/04/2012, 13:52
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Tema registros

Cita:
Iniciado por sam90 Ver Mensaje
Se tiene que cumplir cuando todos son distintos... Osea cuando todos son No...proba un ejemplo de esos.
No funciona :) en mi menú salta el system pause y a tomar por saco :)

He de decir que i = 0 y incremento su valor en el while mientras que "x" recive el numero de veces que introduces un usuario : ejemplo

2 usuarios introducidos x=2 , eso no tiene nada que ver.

Tu formula no funciona o no me funciona que es otra cosa
  #8 (permalink)  
Antiguo 26/04/2012, 14:17
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Tema registros

Todo depende de lo que quieras.

Según dices la variable x es el número de usuarios. Si es ese caso, la condición del while es incorrecta y sería así:

Código C:
Ver original
  1. i = 0;
  2.  
  3. while (i<x ){
  4. if(persona[i].nom[0]==nom_per[0]){
  5. printf("\n\t si \n");
  6. printf("\n\t ----------> %d \n",i);
  7. break;
  8. }
  9. i++;
  10. }
  11.  
  12. if (i>=x){
  13. printf("\n\t No existe");
  14. }
  #9 (permalink)  
Antiguo 26/04/2012, 14:23
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Tema registros

Cita:
Iniciado por alexg88 Ver Mensaje
Todo depende de lo que quieras.

Según dices la variable x es el número de usuarios. Si es ese caso, la condición del while es incorrecta y sería así:

Código C:
Ver original
  1. i = 0;
  2.  
  3. while (i<x ){
  4. if(persona[i].nom[0]==nom_per[0]){
  5. printf("\n\t si \n");
  6. printf("\n\t ----------> %d \n",i);
  7. break;
  8. }
  9. i++;
  10. }
  11.  
  12. if (i>=x){
  13. printf("\n\t No existe");
  14. }
Tengo :

Código C:
Ver original
  1. while (i<x){
  2.                 if(persona[i].nom[0]==nom_per[0] /*&& persona[i].nom[i]==nom_per[i]*/){
  3.                     escribirsalida(i);
  4.                 }
  5.                 i++;
  6.  
  7.             }
  8.             if (i>=x){
  9.                 printf("\n\t No existeix intenta-ho de nou  \n\n");
  10.             }
  11.             system ("PAUSE");

Ya lo prové antes y si pongo un usuario que esta me saltan los 2 if

es decir

usuario : x
....
No existe intentalo de nuevo


Por que sale el "no existe" ?
  #10 (permalink)  
Antiguo 26/04/2012, 16:36
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Tema registros

Te falta el break. Es necesario para salir del bucle cuando encuentres el primer valor que cumpla lo que quieres.
  #11 (permalink)  
Antiguo 27/04/2012, 00:40
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Tema registros

Cita:
Iniciado por alexg88 Ver Mensaje
Te falta el break. Es necesario para salir del bucle cuando encuentres el primer valor que cumpla lo que quieres.
Gracias yo hacía el break fuera el if :)

Etiquetas: funcion, registros, struct, tema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:34.