Autor
|
Tema: Acabar ejecucion pulsando 0 (Leído 3,210 veces)
|
droken26
Desconectado
Mensajes: 18
|
Estoy realizando un ejercicio el cual me piden que calcule numeros primos y una vez calculado vuelva a preguntar si quiere volver a calcular nuevamente otro numero. El programa se va ejecutando digamos en Bucle hasta que pulsemos 0 Ahi es donde tengo el problema no se donde poner esa condicion ni de que forma, asi de como indicarle nuevamente que haga la pregunta de si quiere volver a calcular un nuevo numero primo.Os dejo el codigo. Espero que alguien me ponga sobre la pista porque estoy "aburrido", ademas de estar empezando en este mundo. Muchas gracias y un saludo #include <stdio.h> #include <stdlib.h> int main(void) { int n, c, divisores; do{ printf("Introduzca un numero entero positivo para verificar si es o no primo:\n"); scanf("%d",&n); }while (n<0); divisores = 0; for(c=2; c<=n/2; c++) if (n%c == 0) divisores++; if (divisores >= 1) printf ("%d no es primo\n", n); else printf ("%d es primo\n",n); if(n==0) printf("Fin del Programa\n"); { return(0); } }
Mod: Mensaje modificado, al publicar código usa etiquetas GeSHi
|
|
« Última modificación: 20 Febrero 2015, 18:04 pm por engel lex »
|
En línea
|
|
|
|
_Enko
|
Hola, algo asi deberia de servirte int n; while(scanf("%d",&n) && (n != 0)){ //o, n > 0? // hacer programa } return 0; //exit
do{ printf("Introduzca un numero entero positivo para verificar si es o no primo:\n"); scanf("%d",&n); }while (n<0); n menor que 0. Es un numero negativo. Saludos.
|
|
« Última modificación: 20 Febrero 2015, 16:48 pm por _Enko »
|
En línea
|
|
|
|
droken26
Desconectado
Mensajes: 18
|
Perdona Enko, no lo llego a ver, he includo esas lineas pero nada, sigue igual, me lo podrias indicar el lugar exacto en el cogido fuente que puse en mensaje inicial.
Un saludo
|
|
|
En línea
|
|
|
|
_Enko
|
int main(int argc, char *argv[]) { int n; while(scanf("%d",&n) && (n != 0)){ //n tiene el valor que necesitas y no es 0. //todos tus calculos y mensajes que necesites en el caso que n!=0 } //si estas aqui, es porque n=0. //imprimes mensaje de despedida. return 0; }
Saludos.
|
|
|
En línea
|
|
|
|
droken26
Desconectado
Mensajes: 18
|
Gracias Enko, ahora tengo otro problema mas... He realizado el código y funciona, pero le indico que me pregunte si desea realizar otra operación, si le pongo que si, entra en bucle pero si le pongo que no, se cierra el programa que es lo que debe de hacer, el problema que tengo es como quitar ese bucle, que cuando le pongo que si, pues me pregunte nuevamente que numero desea operar nuevamente. Os dejo el código, creo que algo se me escapa un saludo #include <stdio.h> #include <conio.h> #include <windows.h> int main() { int n,i,c=0; char resp; printf("Introduzca un numero entero positivo, para terminar pulse 0: \n"); //while(scanf("%d", &n) && (n !=0)){ while (n!=0){ for(i=1;i<=n;i++){ if (n%i==0)c++; } if(c ==2) printf("El numero es primo. \n"); else printf("El numero no es primo. \n"); do{ printf("Desea repetir la operacion s/n: \n"); resp=getche(); } while((resp == 's') || (resp =='S')); return 0; } }
|
|
|
En línea
|
|
|
|
user-marcos
Desconectado
Mensajes: 159
|
#include <stdio.h> #include <conio.h> #include <windows.h> int main() { do{ int n,i,c=0; char resp; printf("Introduzca un numero entero positivo, para terminar pulse 0: \n"); //while(scanf("%d", &n) && (n !=0)){ scanf("%d", &n); while (n!=0){ for(i=1;i<=n;i++){ if (n%i==0)c++; } if(c==2) printf("El numero es primo. \n"); else printf("El numero no es primo. \n"); if(n!=0){ printf("Desea repetir la operacion s/n: \n"); resp=getche(); } else resp='s'; } while((resp == 's') || (resp =='S')); system("pause"); return 0; }
No lo he probado por que estoy en linux, mira ver si te funciona
|
|
« Última modificación: 22 Febrero 2015, 14:40 pm por user-marcos »
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
He realizado el código y funciona, pero le indico que me pregunte si desea realizar otra operación, si le pongo que si, entra en bucle pero si le pongo que no, se cierra el programa que es lo que debe de hacer, el problema que tengo es como quitar ese bucle, que cuando le pongo que si, pues me pregunte nuevamente que numero desea operar nuevamente. Lo que debes hacer es utilizar un bucle do ... while donde primero verifiques que el valor no sea cero para así realizar la verificación si es primo o no, a continuación pides confirmación al usuario si desea repetir el proceso. La condición para que el bucle se repita es que el numero no sea cero y la respuesta del usuario sea s. De esta forma: #include <stdio.h> #include <stdlib.h> int main(void) { int n,i,c=0; char resp; do { puts("Introduce un numero entero positivo (0 para terminar)"); if (n != 0){ /* Verificar si es primo */ printf("Desea repetir la operacion s/n: \n"); } }while (n != 0 && (resp == 's' || resp == 'S')); return 0; }
Sin embargo (siendo diplomatico) no gusta ya que tienes dos formas de salida cuando la primera (introducir el valor cero) basta para terminar el programa. Por ultimo si apenas empiezas deberías evitar el uso de la biblioteca conio de Borland, mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|. Un saludo
|
|
|
En línea
|
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
|
|
|
droken26
Desconectado
Mensajes: 18
|
Muchas gracias, solucionado
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pulsando teclas con visual basic
« 1 2 »
Programación Visual Basic
|
50l3r
|
11
|
15,575
|
7 Junio 2009, 15:51 pm
por h0oke
|
|
|
CARGAR UN FORMULARIO PULSANDO UN BOTON
« 1 2 »
PHP
|
bleyarkngel
|
17
|
14,785
|
30 Junio 2009, 20:42 pm
por [u]nsigned
|
|
|
Nueva vulnerabilidad en iOS 7. Puedes llamar a cualquier número pulsando en ....
Noticias
|
wolfbcn
|
0
|
2,293
|
21 Septiembre 2013, 13:18 pm
por wolfbcn
|
|
|
¿Parar un bucle for pulsando una tecla?
« 1 2 »
Programación C/C++
|
jmhr98
|
12
|
8,792
|
23 Agosto 2018, 00:26 am
por enriquemesa8080
|
|
|
La UE avisa: las cookies han de aceptarse pulsando un botón
Noticias
|
wolfbcn
|
1
|
1,125
|
2 Octubre 2019, 21:10 pm
por Serapis
|
|