Autor
|
Tema: Duda lenguaje C (Leído 3,257 veces)
|
Danichi
Desconectado
Mensajes: 5
|
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
|
|
|
En línea
|
|
|
|
engel lex
|
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
|
|
|
En línea
|
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.
|
|
|
Danichi
Desconectado
Mensajes: 5
|
ok muchas gracias Primera versión #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"); do { printf ("El numero escogido es diferente al que estoy pensando\n"); } while (v!=d); printf ("Muy bien, ese es el numero\n"); return 0; }
Segunda versión #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"); if (v!=d) { do { if ((v<1)||(v>10)) { printf ("Ese numero no esta entre 1 y 10. Escribe otro numero\n"); } else { printf ("No ha acertado. Escriba otro numero\n"); } } while (v!=d); } printf ("Muy bien, ese es el numero\n"); return 0; }
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
|
|
|
En línea
|
|
|
|
engel lex
|
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 do { printf ("El numero escogido es diferente al que estoy pensando\n"); } while (v!=d);
como vez el codigo, siempre va a comprobar si está bien o mal al final (donde stá ubicada la comprobacion) en el segundo... if (v!=d)
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" [code=c] while (v!=d); { printf ("El numero escogido es diferente al que estoy pensando\n"); }
[/code] en ese caso el va a comprobar la condición antes de entrar al bucle
|
|
|
En línea
|
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.
|
|
|
Danichi
Desconectado
Mensajes: 5
|
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. #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"); do { if ((v<1)||(v>10)) { printf ("Ese numero no esta entre 1 y 10. Escribe otro numero\n"); } else { printf ("No ha acertado. Escriba otro numero\n"); } } while (v!=d); printf ("Muy bien, ese es el numero\n"); return 0; }
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?
|
|
|
En línea
|
|
|
|
engel lex
|
si, basicamente la unica diferencia entre solo "while" y "do-while" es esa... en el caso del for, evalua igual que el while
|
|
|
En línea
|
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.
|
|
|
Danichi
Desconectado
Mensajes: 5
|
Ok. Muchísimas gracias Ya seguiré dándole caña a esto
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda con el lenguaje C++/C
Programación C/C++
|
Juanma_faust
|
4
|
3,453
|
7 Junio 2010, 00:47 am
por Eternal Idol
|
|
|
Duda con lenguaje
Programación General
|
Fuen
|
1
|
2,695
|
13 Junio 2010, 18:48 pm
por [D4N93R]
|
|
|
duda en pila con lenguaje c
Programación C/C++
|
king1517
|
2
|
2,962
|
29 Junio 2011, 18:28 pm
por leogtz
|
|
|
[DUDA] Lenguaje de Programaci?n C
Programación C/C++
|
C45F0RK
|
1
|
2,202
|
6 Febrero 2012, 20:07 pm
por Eternal Idol
|
|
|
Duda con lenguaje ensamblador
ASM
|
genomma
|
0
|
3,092
|
21 Marzo 2012, 10:23 am
por genomma
|
|