Problema con un programa:

Iniciado por Error 404:, 16 Mayo 2013, 21:47 PM

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

amchacon

#10
Como te picas Leosan  ;-)

Es evidente, goto no es "imprescindible" pero es una herramienta que en alguna ocasiones resulta la salida más sencilla (y eficiente). Incluso Java que eliminó el goto de su repertorio permitió "algunos saltos" en determinadas circunstancias excepcionales (como la línea anterior a un for).

Yo personalmente nunca he necesitado usarlos. Pero defiendo que tiene algunos usos.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

leosansan

Cita de: amchacon en 19 Mayo 2013, 01:02 AM
Como te picas Leosan  ;-)

Estimado y respetado amchacon, no era un pique sino una sugerencia a posibles maneras de no usar goto en tus planteamientos.

Ya aclare que yo soy el primero en usarlo y sólo quería poner de manifiesto que su uso por comodidad no es aconsejable ni la manera más efiente en según qué situaciones.

Así que de "piques" nada de nada, y mucho menos contigo, sólo eran una pequeña y humilde aportación al tema.

Saluditos!. .... . .


amchacon

Cita de: leosansan en 19 Mayo 2013, 02:13 AMAsí que de "piques" nada de nada, y mucho menos contigo, sólo eran una pequeña y humilde aportación al tema.
¡Pero no te enfades! Que te estaba tomando el pelo ;D

Esque me acuerdo de una vez que recomendé usar nodos enlazados en vez de realloc, creo que me contestastes 3-4 veces. Cada vez yo te ponía una traba más pero siempre me devolvias la pelota  ;-)

En fin que era una broma. Es mi avatar, que me da un aire muy serio  :xD
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

Error 404:

Por cierto, me dijisteis para que volviera sin usar el goto, poniendo lo de indice = 0 .....  Pero como funciona, es decir, una pequeña explicacion para saber utilizarlo yo en caso de necesidad, es que no se como funciona, simplemente lo he puesto, pero no me gusta poner cosas sin saber de donde vienen ni como usarlas xd, sabran a lo que me refiero xd.
Si se puede imaginar, se puede programar.

leosansan

Cita de: superkorlas en 22 Mayo 2013, 14:18 PM
Por cierto, me dijisteis para que volviera sin usar el goto, poniendo lo de indice = 0 .....  Pero cómo funciona, es decir, una pequeña explicacion para saber utilizarlo yo en caso de necesidad, es que no se como funciona, simplemente lo he puesto, pero no me gusta poner cosas sin saber de donde vienen ni como usarlas xd, sabran a lo que me refiero xd.

El índice cero es lo que suele llamarse bandera o flag, avisa de que algo ha sucedido, en este caso si es distinto de cero, o no en cuyo caso toma el valor cero.

Tal como está implementado fíjate que al comparar las cadenas si éstas son iguales entras en el "cuerpo" del if y la variable índice se incrementa, tomando el valor 1, de forma que si no se incrementa, se queda en cero y es que no encontró  actuando entonces el cout "no encontrado". Observa que después de una comparación vuelve a actuar el while(1) para realizar la siguiente búsqueda, para lo cual vuelvo a inicializar índice a cero y se repite la historia.

Si te quedan dudas vuelve a preguntar.

Saluditos!. ... . ..

rir3760

Si cada nombre es único se puede modificar el bucle para que este pare cuando se encuentre una coincidencia. Con ello se puede utilizar al contador del bucle como bandera de estado, mas o menos así:
Código (cpp) [Seleccionar]
else if (z == 1){
   cout << " Introduce el nombre de la persona que desea buscar: ";
   cin >> buscaNombre; cout << endl << endl;
   
   for (i = 0; i < N && strcmp(Fulanito[i].Nombre, buscaNombre) != 0; i++)
      ;
   if (i != N){
      cout <<"    Telefono de "<< Fulanito[i].Nombre <<": " << Fulanito[i].Telefono;
      cout << endl << endl << endl;
   }else
      cout << "No existe en la base esa persona"<< endl<< endl<< endl;
}

Pero, de nuevo, solo aplica si no hay nombres repetidos.

Y para imprimir un carácter varias veces se puede utilizar un objeto de la clase string:
Código (cpp) [Seleccionar]
cout << string(num_reps, ch) << endl;
Donde ch es el carácter a imprimir y num_reps el numero de repeticiones.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language