Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jamatbar en 8 Enero 2014, 21:56 pm



Título: ¿Es correcto este diagrama de flujo?
Publicado por: jamatbar en 8 Enero 2014, 21:56 pm
Buenas, me piden hacer el diagrama de flujo de este programa:

Código:
/* Includes del sistema */
#include <stdio.h>

/* Includes de la aplicacion */
/* Constantes del fichero */
#define RESPUESTANOPRIMO " %d no es primo\n"
#define RESPUESTAPRIMO   " %d es primo\n"

/* Tipos definidos por el usuario para el fichero */

/* Prototipo de funciones locales */
int main()
{
  /* Almacenara el numero leido por teclado */
  int valor;
  /* Servira como indice del bucle for que vamos a utilizar. */
  int i;
  /* Solicitamos el numero que queremos saber si es primo */
  printf("Introduzca un valor: ");
  scanf(" %d", &valor);

  /* El bucle lo comenzamos en 2: todo numero es divisible por 1
   * y lo terminamos antes de valor: todo numero es divisible por si mismo */

  for ( i = 2; i < valor; i++ )
    if (0 == (valor % i))

      /* Si el resto es cero, es porque i divide
       * No es primo. */
      printf(RESPUESTANOPRIMO, valor);

  return 0;
}

Y lo he hecho así:

(http://i352.photobucket.com/albums/r334/javierinho1000/diagrama_zpsa5ec27fc.png) (http://s352.photobucket.com/user/javierinho1000/media/diagrama_zpsa5ec27fc.png.html)

¿Modificaríais algo?

Gracias de antemano y un saludo!


Título: Re: ¿Es correcto este diagrama de flujo?
Publicado por: dmacias en 8 Enero 2014, 23:10 pm
Me pongo en modo observatorio, que justo estoy leyendo sobre diagramas de flujo y pseudocodigos  :o


Título: Re: ¿Es correcto este diagrama de flujo?
Publicado por: xiruko en 8 Enero 2014, 23:40 pm
leer valor --> i=2 --> (valor%i == 0) --> Sí --> Fin (No es primo)
                                                         --> No --> (i++) --> (i < valor) --> Sí --> Volver a (valor%i == 0)
                                                                                                         --> No --> Fin (Sí es primo)

Yo lo haría así. Aunque la condición de (i < valor) puedes reducirla a (i <= valor/2) para ahorrarte ciclos en el for.

Saludos.


Título: Re: ¿Es correcto este diagrama de flujo?
Publicado por: jamatbar en 9 Enero 2014, 00:05 am
leer valor --> i=2 --> (valor%i == 0) --> Sí --> Fin (No es primo)
                                                         --> No --> (i++) --> (i < valor) --> Sí --> Volver a (valor%i == 0)
                                                                                                         --> No --> Fin (Sí es primo)

Yo lo haría así. Aunque la condición de (i < valor) puedes reducirla a (i <= valor/2) para ahorrarte ciclos en el for.

Saludos.

Buenas, antes que nada gracias por mirarlo aunque he de decirte que por ahora no tengo que cambiar el código, ya que según lo que me pidan tendré que modificarlo de una forma u otra. Por ahora lo que tengo que hacer es hacer el diagrama de flujo de dicho código, aunque sé de antemano que es bastante pobre como programa xD


Título: Re: ¿Es correcto este diagrama de flujo?
Publicado por: dato000 en 9 Enero 2014, 02:11 am
Ahhh el llamado pseudocódigo, esos diagramas de flujo son excelentes para confundir a las personas y venderles una buena idea o una completa basura con una lógica y cáracter argumentado con un encanto sin igual...

 :silbar: :silbar:

En fin, viejos recuerdos, mira, una cosa que se me hace raro en las instituciones es que no enseñan a realizar el ciclo for, extraño, pero así pasa, lo hicieron en el mio, lo hicieron en muchos, hay muchas cosas que no se enseñan, y que estan en los libros amigo mio, internet no siempre es la respuesta.

(http://fotos.subefotos.com/22a5d48ada10bd698e2dc34a40adcdbco.png)

No es tan dificil, solo es cuestión de leer un poco, si quieres saber más, que bien te haría, te sugiero estos sitios, hablan también de C# que también es muy util, pero digamos que te dejo estos links para que uses la referencia que tienen sobre los diagramas.

Codificación del diagrama de flujo (http://www.csharpya.com.ar/detalleconcepto.php?codigo=127&inicio=)
Estructura repetitiva for (http://www.csharpya.com.ar/detalleconcepto.php?codigo=134&inicio=)
Estructura repetitiva while (http://www.csharpya.com.ar/detalleconcepto.php?codigo=133&inicio=)
Estructura repetitiva do while (http://www.csharpya.com.ar/detalleconcepto.php?codigo=135&inicio=)

Aquí el curso, muy recomendable.
Curso introduccion a CSharp/C# - CSharpYa (http://www.csharpya.com.ar/index.php?inicio=)

Saludos :silbar: :silbar:


Título: Re: ¿Es correcto este diagrama de flujo?
Publicado por: leosansan en 9 Enero 2014, 07:01 am
l
Yo lo haría así. Aunque la condición de (i < =valor) puedes reducirla a (i <= valor/2) para ahorrarte ciclos en el for.


Yo lo haría así. Aunque la condición de (i < valor) puedes reducirla a (i*i<valor) para ahorrarte muchísimos ciclos en el for. Además el incremento de i lo haría como i+=2, con en valor inicial de 3, ya que sabemos que los primos, con excepción del 2, son impares.

Saluditos! ..... !!!!        (http://st.forocoches.com/foro/images/smilies/aaaaa.gif)




Título: Re: ¿Es correcto este diagrama de flujo?
Publicado por: xiruko en 9 Enero 2014, 11:36 am
Yo lo haría así. Aunque la condición de (i < valor) puedes reducirla a (i*i<valor) para ahorrarte muchísimos ciclos en el for. Además el incremento de i lo haría como i+=2, con en valor inicial de 3, ya que sabemos que los primos, con excepción del 2, son impares.

Pues sí, con esa condición aun te ahorras más ciclos en el for, pero yo creo que te dejaste el '=' en ella: (i*i <= valor)

Saludos.


Título: Re: ¿Es correcto este diagrama de flujo?
Publicado por: leosansan en 9 Enero 2014, 12:09 pm
Pues sí, con esa condición aun te ahorras más ciclos en el for, pero yo creo que te dejaste el '=' en ella: (i*i <= valor)

Saludos.

:P :P :P :P :P


Ya está  reeditado. Thanks !!! ;) ;) ;)

Saluditos! ..... !!!!   
 
 
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: ¿Es correcto este diagrama de flujo?
Publicado por: do-while en 9 Enero 2014, 12:49 pm
¡Buenas!

¿Ninguno os habéis dado cuenta de que aunque el valor tenga resto cero al dividirlo por i el bucle continua? La única condición del algoritmo inicial para salir del bucle es que i >= valor

Todos los diagramas de flujo que habeis hecho están mal. Ninguno de ellos representa el algoritmo que se plantea, que es el objetivo del ejercicio y no decidir si el algoritmo está bien o si se puede optimizar o lo que sea, el enunciado es simple, a partir del código escribir el diagrama de flujo.

¡Saludos!


Título: Re: ¿Es correcto este diagrama de flujo?
Publicado por: leosansan en 9 Enero 2014, 14:42 pm
¡Buenas!

¿Ninguno os habéis dado cuenta de que aunque el valor tenga resto cero al dividirlo por i el bucle continua? La única condición del algoritmo inicial para salir del bucle es que i >= valor

Todos los diagramas de flujo que habeis hecho están mal. Ninguno de ellos representa el algoritmo que se plantea, que es el objetivo del ejercicio y no decidir si el algoritmo está bien o si se puede optimizar o lo que sea, el enunciado es simple, a partir del código escribir el diagrama de flujo.

¡Saludos!

Yo sólo hacía referencia a una proposición de xiruko ya que creo que en su respuesta está el algoritmo y con ella la solución al diagrama. Ya todo es pasarlo a diagrama de flujos, que tampoco es plan de ponernos a dibujar. ;) ;) ;)

Saluditos! ..... !!!!   
 
 
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: ¿Es correcto este diagrama de flujo?
Publicado por: jamatbar en 9 Enero 2014, 19:10 pm
Ahhh el llamado pseudocódigo, esos diagramas de flujo son excelentes para confundir a las personas y venderles una buena idea o una completa basura con una lógica y cáracter argumentado con un encanto sin igual...

 :silbar: :silbar:

En fin, viejos recuerdos, mira, una cosa que se me hace raro en las instituciones es que no enseñan a realizar el ciclo for, extraño, pero así pasa, lo hicieron en el mio, lo hicieron en muchos, hay muchas cosas que no se enseñan, y que estan en los libros amigo mio, internet no siempre es la respuesta.

(http://fotos.subefotos.com/22a5d48ada10bd698e2dc34a40adcdbco.png)

No es tan dificil, solo es cuestión de leer un poco, si quieres saber más, que bien te haría, te sugiero estos sitios, hablan también de C# que también es muy util, pero digamos que te dejo estos links para que uses la referencia que tienen sobre los diagramas.

Codificación del diagrama de flujo (http://www.csharpya.com.ar/detalleconcepto.php?codigo=127&inicio=)
Estructura repetitiva for (http://www.csharpya.com.ar/detalleconcepto.php?codigo=134&inicio=)
Estructura repetitiva while (http://www.csharpya.com.ar/detalleconcepto.php?codigo=133&inicio=)
Estructura repetitiva do while (http://www.csharpya.com.ar/detalleconcepto.php?codigo=135&inicio=)

Aquí el curso, muy recomendable.
Curso introduccion a CSharp/C# - CSharpYa (http://www.csharpya.com.ar/index.php?inicio=)

Saludos :silbar: :silbar:


Gracias por el diagrama y por los enlaces para aprender más sobre esto, una cosilla, ¿con qué programa has hecho el diagrama?

Saludos!


Título: Re: ¿Es correcto este diagrama de flujo?
Publicado por: dato000 en 9 Enero 2014, 23:12 pm
illustrator