Título: Duda lenguaje C Publicado por: Danichi en 18 Enero 2014, 00:12 am Buenas noches.
Antes decir que soy un auténtico novato en esto de la programación, pero en su momento tuve que hacer una cosillas en lenguaje C y me picó la curiosidad :p La duda que tengo es que estaba realizando un programita para familiarizarme con los do while y los if else y me encontré con dos variantes: Primera #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int d=4; int v; printf ("introduzca un numero del 1 al 10\n"); scanf("%d",&v); do { printf ("El numero escogido es diferente al que estoy pensando\n"); printf ("Escoja otro\n"); scanf("%d",&v); } while (v!=d); printf ("Muy bien, ese es el numero\n"); system("PAUSE"); return 0; } segunda #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int d=4; int v; printf ("introduzca un numero del 1 al 10\n"); scanf("%d",&v); do { if ((v<1)||(v>10)) { printf ("Ese numero no esta entre 1 y 10. Escribe otro numero\n"); scanf("%d",&v); } else { printf ("No ha acertado. Escriba otro numero\n"); scanf("%d",&v); } } while (v!=d); printf ("Muy bien, ese es el numero\n"); system("PAUSE"); return 0; } El problema es que en el primero si el primer número que pongo es el 4 no me hace un primer bucle. Sin embargo en el segundo sí me hace un primer bucle si escojo el cuatro. Y no sé por qué, pues pienso que la estructura es la misma. Disculpen por el lío y muchas gracias ;) Título: Re: Duda lenguaje C Publicado por: engel lex en 18 Enero 2014, 01:27 am altes de reponderte algo, usa las etiquetas GeSHI del foro (arriba de los emoticonos "un cuadro desplegable que dice GeSHI) escojes C y pegas allí tu codigo para que sea mas facil de leer :P
Título: Re: Duda lenguaje C Publicado por: Danichi en 18 Enero 2014, 02:06 am ok muchas gracias :)
Primera versión Código
Segunda versión Código
El programa es un poco tonto pero bueno, para familiarizarme me viene bien. Consiste en adivinar un número ya fijado en el código. En el primer caso, al ponerlo bien a la primera el programa reconoce que está bien. Pare el segundo programa no te lo reconoce a la primera, sí a la segunda. La única diferencia es que en el segundo hay un if-else dentro de un do-while y en el primero sólo está el do-while. No sé si se entiende bien :-\ Título: Re: Duda lenguaje C Publicado por: engel lex en 18 Enero 2014, 02:15 am Citar El programa es un poco tonto pero bueno, para familiarizarme me viene bien. Consiste en adivinar un número ya fijado en el código. En el primer caso, al ponerlo bien a la primera el programa reconoce que está bien. Pare el segundo programa no te lo reconoce a la primera, sí a la segunda. La única diferencia es que en el segundo hay un if-else dentro de un do-while y en el primero sólo está el do-while. creo que tus casos están al revés... en el primero SIEMPRE va a estar "malo" a la primera porque Código
como vez el codigo, siempre va a comprobar si está bien o mal al final (donde stá ubicada la comprobacion) en el segundo... Código
descarta la entrada al bucle y si está bueno, está bueno... para arreglar el primero, en lugar de usar "do-while", podrias usar solo "while" Código [/code] en ese caso el va a comprobar la condición antes de entrar al bucle Título: Re: Duda lenguaje C Publicado por: Danichi en 18 Enero 2014, 02:44 am Muchas gracias por la respuesta. Subí el código del segundo ya coregido. Así era como quería mostrarlo. Y no aprecio diferencia con respecto al primero, dándome uno bien y el otro no. Código
Lo que yo entiendo entonces, es que al usar eldo-while, primero te hace el bucle y después verifica si se cumple la condición? Título: Re: Duda lenguaje C Publicado por: engel lex en 18 Enero 2014, 03:03 am si, basicamente la unica diferencia entre solo "while" y "do-while" es esa... en el caso del for, evalua igual que el while
Título: Re: Duda lenguaje C Publicado por: Danichi en 18 Enero 2014, 03:08 am Ok. Muchísimas gracias ;)
Ya seguiré dándole caña a esto :) |