elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Acabar ejecucion pulsando 0
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Acabar ejecucion pulsando 0  (Leído 2,961 veces)
droken26

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Acabar ejecucion pulsando 0
« en: 20 Febrero 2015, 16:38 pm »

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

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.    int n, c, divisores;
  7.  
  8.    do{
  9.        printf("Introduzca un numero entero positivo para verificar si es o no primo:\n");
  10.        scanf("%d",&n);
  11.  
  12.  
  13.    }while (n<0);
  14.  
  15.    divisores = 0;
  16.  
  17.    for(c=2; c<=n/2; c++)
  18.  
  19.        if (n%c == 0)
  20.  
  21.            divisores++;
  22.    if (divisores >= 1) printf ("%d no es primo\n", n);
  23.    else printf ("%d es primo\n",n);
  24.  
  25.    if(n==0)
  26.    printf("Fin del Programa\n");
  27.  
  28.    {
  29.  
  30.    return(0);
  31.        }
  32. }

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


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Acabar ejecucion pulsando 0
« Respuesta #1 en: 20 Febrero 2015, 16:46 pm »

Hola, algo asi deberia de servirte  :-*
Código
  1. int n;
  2. while(scanf("%d",&n) && (n != 0)){
  3. //o, n > 0?
  4.  
  5. // hacer programa
  6. }
  7. return 0; //exit
  8.  


Citar
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 Desconectado

Mensajes: 18


Ver Perfil
Re: Acabar ejecucion pulsando 0
« Respuesta #2 en: 20 Febrero 2015, 17:09 pm »

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


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Acabar ejecucion pulsando 0
« Respuesta #3 en: 20 Febrero 2015, 19:24 pm »

Código
  1. int main(int argc, char *argv[]) {
  2.  
  3.    int n;
  4.    while(scanf("%d",&n) && (n != 0)){
  5.       //n tiene el valor que necesitas y no es 0.
  6.       //todos tus calculos y mensajes que necesites en el caso que n!=0
  7.    }
  8.    //si estas aqui, es porque n=0.
  9.    //imprimes mensaje de despedida.
  10.    return 0;
  11. }
  12.  

Saludos.
En línea

droken26

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Acabar ejecucion pulsando 0
« Respuesta #4 en: 22 Febrero 2015, 13:21 pm »

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

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <windows.h>
  4.  
  5. int main()
  6. {
  7.    int n,i,c=0;
  8.    char resp;
  9.    printf("Introduzca un numero entero positivo, para terminar pulse 0: \n");
  10.    //while(scanf("%d", &n) && (n !=0)){
  11. scanf("%d", &n);
  12. while (n!=0){
  13.        for(i=1;i<=n;i++){
  14.  
  15.            if (n%i==0)c++;
  16.        }
  17.        if(c==2) printf("El numero es primo. \n");
  18.        else printf("El numero no es primo. \n");
  19.  
  20.            do{
  21.                printf("Desea repetir la operacion s/n: \n");
  22.                resp=getche();
  23.            } while((resp == 's') || (resp =='S'));
  24.            system("pause");
  25.            return 0;
  26.    }
  27.    }
En línea

user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: Acabar ejecucion pulsando 0
« Respuesta #5 en: 22 Febrero 2015, 14:35 pm »

Código
  1.  
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <windows.h>
  5.  
  6. int main()
  7. {
  8. do{
  9.    int n,i,c=0;
  10.    char resp;
  11.    printf("Introduzca un numero entero positivo, para terminar pulse 0: \n");
  12.    //while(scanf("%d", &n) && (n !=0)){
  13. scanf("%d", &n);
  14. while (n!=0){
  15.        for(i=1;i<=n;i++){
  16.  
  17.            if (n%i==0)c++;
  18.        }
  19.        if(c==2) printf("El numero es primo. \n");
  20.        else printf("El numero no es primo. \n");
  21.  
  22.           if(n!=0){
  23.                printf("Desea repetir la operacion s/n: \n");
  24.                resp=getche();    
  25.  }
  26.  else resp='s';
  27.            } while((resp == 's') || (resp =='S'));
  28.            system("pause");
  29.            return 0;
  30.    }
  31.  
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 Desconectado

Mensajes: 1.639


Ver Perfil
Re: Acabar ejecucion pulsando 0
« Respuesta #6 en: 22 Febrero 2015, 15:54 pm »

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:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int n,i,c=0;
  7.   char resp;
  8.  
  9.   do {
  10.      puts("Introduce un numero entero positivo (0 para terminar)");
  11.      scanf("%d", &n);
  12.      if (n != 0){
  13.  
  14.         /* Verificar si es primo */
  15.  
  16.         printf("Desea repetir la operacion s/n: \n");
  17.         scanf(" %c", &resp);
  18.      }
  19.   }while (n != 0 && (resp == 's' || resp == 'S'));
  20.  
  21.   return 0;
  22. }

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 Desconectado

Mensajes: 18


Ver Perfil
Re: Acabar ejecucion pulsando 0
« Respuesta #7 en: 22 Febrero 2015, 17:12 pm »

Muchas gracias, solucionado

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pulsando teclas con visual basic « 1 2 »
Programación Visual Basic
50l3r 11 15,091 Último mensaje 7 Junio 2009, 15:51 pm
por h0oke
CARGAR UN FORMULARIO PULSANDO UN BOTON « 1 2 »
PHP
bleyarkngel 17 14,177 Último mensaje 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,133 Último mensaje 21 Septiembre 2013, 13:18 pm
por wolfbcn
¿Parar un bucle for pulsando una tecla? « 1 2 »
Programación C/C++
jmhr98 12 7,816 Último mensaje 23 Agosto 2018, 00:26 am
por enriquemesa8080
La UE avisa: las cookies han de aceptarse pulsando un botón
Noticias
wolfbcn 1 922 Último mensaje 2 Octubre 2019, 21:10 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines