Scripts de c

Programa que crea una matriz de 7 filas por 10 columnas y que la rellena de la siguiente forma: en la 1 columna pone el factorial de la fila y en las demas rellana con números primos.

 /* Librerias utilizadas */
#include <stdio.h> /* Libreria estandar */
#include <math.h> /* Libreria matematica */
 
#define filas 7 /* Dos constantes */
#define columnas 10
 
int factorial (numero)
/* Usamos una funcion recursiva para calcular el factorial */
{
if (numero > 0)
/* si el numero pasado es mayor que cero calcula el factorial del numero anterior */
{
numero = numero * factorial(numero-1);
}
if (numero == 0) /* Y si es igual a cero, el factorial de cero es igual a uno */
{
numero = 1;
}
return(numero); /* Devuelve el valor del factorial */
}
 
int numprimo(int *i,int *ptr) /* Calcula los numeros primos */
/* Se le pasan dos punteros */
{
long int resto,esprimo,a,num; /* Declaramos las variables locales */
num = *i;
/* Asignamos el valor del puntero a una de las variables */
esprimo = 0;
while (esprimo==0)
{
a=sqrt(num);
/* Euclides dijo que para saber si un numero es primo hab¡a que comprobarlo
unicamente con los numeros inferiores a su raiz cuadrada, lo que hacemos es
cuadrada, lo que aligera bastante el calculo. */

 
while (a != 1)
/* Divide el numero entre los menores a su raiz cuadrada (a), hasta 1 */
{
resto=num%a;
a--;
if (resto == 0)
/* Si el resto es cero, no es rpimo y deja de calcular */
{
a = 1;
}
}
if (resto != 0)
/* Pero si nunca ha sido cero, es un numero primo */
{
if (a == 1)
{
esprimo = 1;
}
else {esprimo = 0;}
}
num++;
}
*ptr = num; /* Modificamos el valor al que apunta el puntero */
}
 
 
void main()
{
int primo,i=2,numero,compara=1,n=0;
/* Declaramos variables */
int tabla [7][10];
/* Declaramos una matriz de 7x10 */
int fil,col;
 
for (fil=0;fil<filas;fil++)
{
/* Rellenamos la primera */
for (col=0;col<columnas;col++)
/* columna con los factoriales */
{
if (col == 0)
{
numero = fil;
tabla [fil][col] = factorial(numero+1);
/* Llamada a la funcion por recursividad */
}
}
}
 
fil = 0;
col = 1;
 
do{
numprimo(&i,&primo); /* Aqui rellenamos con los numeros primos */
{
tabla [fil][col] = primo - 1;
col++;
if (col == 10)
/* Ademas, se evita que salgan dos numeros iguales */
{
fil++;
col = 1;
}
n++;
}
compara = primo-1;
i++;
}
while (n<63);
 
for (fil=0;fil<filas;fil++) /* Sacamos a pantalla */
{
printf("(");
for (col=0;col<columnas;col++)
{
printf("%6d",tabla[fil][col]);
}
printf(" )\n");
}
printf("\n\n");
}

 

Autor: S/A DescargarDescargar

Comentarios en "Rellena una matriz con factorial o numeros en c"

Table 'programa_programas.t_comentarios' doesn't exist