Título: Criba de Eratostenes en C con funciones. Publicado por: estudiante_1 en 30 Julio 2015, 01:04 am Hola, ya he conseguido resolver el problema de la criba, ahora mi problema es que no sé cómo poner funciones para que sea mucho mejor el programa. Una ayuda por favor, para las funciones que se me dan horrible. Este es el programa en el main:
Código: #include<stdio.h> Muchas gracias#include<stdlib.h> int main(void){ int n; scanf("%d",&n); int v[n]; int i,j,p; for(i=0;i<n;i++){ v[i]=i; printf("%d\n",v[i]); } for(i=2;i<n;i++){ for(j=2;i*j<n;j++){ v[i*j]=0; } printf(" Tachando los multiplos con un 0: %10d\n",v[i]); } for(i=2;i<n;i++){ if(v[i]!=0) printf("Los numeros primos son: %4d\n",v[i]); } system("pause"); return(0); } Título: Re: Criba de Eratostenes en C con funciones. Publicado por: ivancea96 en 30 Julio 2015, 01:10 am Trata de tabular bien el código, así es complicado de leer .__.
Las funciones se ponen cuando se necesitan, no por obligación. La mejor forma de colocar una función ahí es pasarle un array a una función y que la función te rellene la criba. Luego, el algoritmod e la criba en sí, es bastante corto como para ponerse a dividirlo. Título: Re: Criba de Eratostenes en C con funciones. Publicado por: estudiante_1 en 30 Julio 2015, 01:24 am Aquí trato de tachar los múltiplos, pero no me funciona.
Código: #include<stdio.h> #include<stdlib.h> void criba(int v[],int i,int n, int j){ for(i=2;i<n;i++){ for(j=2;i*j<n;j++){ v[i*j]=0; } } } int main(void){ int n; scanf("%d",&n); int v[n],i,j; for(i=2;i<n;i++){ v[i]=i; printf("%d\n",v[i]); } printf("%d\n",criba(v,i,n,j)); system("pause"); return(0); } Ya lo he hecho como me dijsites, pero no me funciona y creo que es por un pequeño error, aquí te dejo el programa: Código: include<stdio.h> #include<stdlib.h> void criba(int v[]){ int i,n,j; for(i=2;i<n;i++){ for(j=2;i*j<n;j++){ v[i*j]=0; } } } int main(void){ int n; scanf("%d",&n); int v[n],i,j; for(i=2;i<n;i++){ v[i]=i; printf("%d\n",v[i]); } criba(v); for(i=2;i<n;i++){ if(v[i]!=0) printf("%10d\n",v[i]); } system("pause"); return(0); } Título: Re: Criba de Eratostenes en C con funciones. Publicado por: T. Collins en 30 Julio 2015, 02:03 am Código
Te faltaba pasarle a la función criba la variable n. Por cierto, creo que declarar un array de tamaño variable de esa forma no es muy adecuado, deberías usar malloc. Título: Re: Criba de Eratostenes en C con funciones. Publicado por: estudiante_1 en 30 Julio 2015, 12:26 pm Gracias por tu respuesta.
Título: Re: Criba de Eratostenes en C con funciones. Publicado por: joecarl en 30 Julio 2015, 13:06 pm Por cierto, creo que declarar un array de tamaño variable de esa forma no es muy adecuado, deberías usar malloc. De hecho es que no se puede hacer. Si ese programa compila es que no es C, quiza es alguna versión rara de C, pero en C estándar ese código no puede compilar. Código
Lo correcto sería: Código
Título: Re: Criba de Eratostenes en C con funciones. Publicado por: furciorifa en 20 Agosto 2015, 03:16 am De hecho es que no se puede hacer. Si ese programa compila es que no es C, quiza es alguna versión rara de C, pero en C estándar ese código no puede compilar. En Linux corre a la perfección con ansi cCódigo
Lo correcto sería: Código
|