Vector de 100 primos en C

#include <stdio.h>

#define TAMANYOVECTOR 100

//Declaración del prototipo de la función
int esprimo(int num);

//Función principal
int main()
{
 //Declaración de variables
 int i,num,vector[TAMANYOVECTOR];
 
 //Inicializo los números que voy a comprobar si son primos
 num=1;
 
 //Recorro el vector
 for (i=0; i<TAMANYOVECTOR; i++) {
  //Para cada posición, busco el próximo primo
  while (esprimo(num)==0) {
   num++;
  }
  //Cuando lo encuentro, lo almaceno y paso a buscar otro
  vector[i]=num;
  num++;
 }
 
 //Imprimo el vector
 printf("\nLos primeros 100 números primos son:\n");
 for (i=0; i<TAMANYOVECTOR; i++) {
  printf("%d\t", vector[i]);
 } 
 //Fin del programa
 return 0;
}


//Función esprimo. 
//Se le pasa un número y devuelve 0 si no es primo y 1 si lo es
int esprimo(int num)
{
 //Declaración de variables
 int i,resultado=1;
 
 //Para números negativos o 0, digo que no es primo
 if(num<=0)
  resultado=0;
 else{
  i=2;
  while(i<num){
   if (num%i == 0) { //Si da de resto 0, es que no es primo. Salgo
    resultado=0;
    i=num;
   }
   i++;
  }
 }
 return resultado; 

}

Vector de números primos en C

#include <stdio.h>

#define TAMANYOVECTOR 10

//Declaración del prototipo de la función
int esprimo(int num);

//Función principal
int main()
{
 //Declaración de variables
 int i,num,vector[TAMANYOVECTOR];
 
 //Inicializo los números que voy a comprobar si son primos
 num=1;
 
 //Recorro el vector
 for (i=0; i<TAMANYOVECTOR; i++) {
  //Para cada posición, busco el próximo primo
  while (esprimo(num)==0) {
   num++;
  }
  //Cuando lo encuentro, lo almaceno y paso a buscar otro
  vector[i]=num;
  num++;
 }
 
 //Imprimo el vector
 printf("\nLos primeros 10 números primos son:\n");
 for (i=0; i<TAMANYOVECTOR; i++) {
  printf("%d\t", vector[i]);
 } 
 //Fin del programa
 return 0;
}


//Función esprimo. 
//Se le pasa un número y devuelve 0 si no es primo y 1 si lo es
int esprimo(int num)
{
 //Declaración de variables
 int i,resultado=1;
 
 //Para números negativos o 0, digo que no es primo
 if(num<=0)
  resultado=0;
 else{
  i=2;
  while(i<num){
   if (num%i == 0) { //Si da de resto 0, es que no es primo. Salgo
    resultado=0;
    i=num;
   }
   i++;
  }
 }
 return resultado; 

}

Matriz traspuesta en C

//Librería que contiene las funciones scanf y printf
#include <stdio.h> 
//librería que contiene malloc
#include <stdlib.h>

//Declaración de prototipos
int *leematriz(int tam);
int *traspuesta(int *a, int fil, int col);
void imprimematriz(int *m, int fil, int col);


//Función principal del programa
int main () 

{
 
 
 // Declaro las variables de mi función
 int *m1, *msol,nf,nc;
 
 printf("Introduce el número de filas de la matriz:");
 scanf("%d", &nf);

    printf("Introduce el número de columnas de la matriz:");
 scanf("%d", &nc);
    
 printf("Introduce los elementos de la matriz: \n");
 m1=leematriz(nf*nc);
 
 msol=traspuesta(m1,nf,nc);
 printf("La matriz resultado es: \n");
 imprimematriz(msol, nc,nf);
 
 free(m1);
 free(msol);
 //Fin del programa

 return 0;

}


//Función leematriz
//Lee los elementos de una matriz de tamaño tam y la devuelve
int *leematriz(int tam)
{
 int i,j,*m;
 m=(int*)malloc(sizeof(int)*tam);
 for (i=0;i<tam;i++)
 {
   scanf("%d", (m+i));
 }
 return m;
}

//Función traspuesta
//Calcula la traspuesta de una matriz
int *traspuesta(int *a, int fil, int col)
{
 int *res, i,j;
 
 //Reservo espacio para la matriz resultado
 res=(int*)malloc(sizeof(int)*fil*col);
 
 //En C las matrices de n filas tienen filas de la 0 a la n-1
 for (i=0;i<col;i++)
 {
  //En C las matrices de n columnas tienen cols. de la 0 a la n-1
  for (j=0;j<fil;j++)
  {
   *(res+i*fil+j)=*(a+j*col+i);
   
  }
 }
 return(res);
}

//Función imprimematriz
//Dada una matriz, la imprime por pantalla
void imprimematriz(int *m, int fil, int col)
{
 int i,j;
 for (i=0;i<fil;i++)
 {
  //En C las matrices de n columnas tienen cols. de la 0 a la n-1
  for (j=0;j<col;j++)
  {
   printf("%d\t", *(m+i*col+j));
  }
  printf("\n");
 }
 return;

}

Producto de matrices en C

//Librería que contiene las funciones scanf y printf
#include <stdio.h> 
//librería que contiene malloc
#include <stdlib.h>

//Declaración de prototipos
int *leematriz(int dim);
int *producto(int *a, int *b, int dim);
void imprimematriz(int *m, int dim);


//Función principal del programa
int main () 

{
 
 // Este programa calcula el producto de 2 matrices 3x3
 
 // Declaro las variables de mi función
 int *m1,*m2, *msol,dim;
 
 printf("Introduce la dimensión de las matrices:");
 scanf("%d", &dim);
 
 printf("Introduce los elementos de la primera matriz: \n");
 m1=leematriz(dim); 
 printf("Introduce los elementos de la segunda matriz: \n");
 m2=leematriz(dim); 
 
 msol=producto(m1,m2,dim);
 printf("La matriz resultado es: \n");
 imprimematriz(msol, dim);
 
 free(m1);
 free(m2);
 free(msol);
 //Fin del programa

 return 0;

}


//Función leematriz
//Dada una dimensión, lee los elementos de una matriz y la devuelve
int *leematriz(int dim)
{
 int i,j,*m;
 m=(int*)malloc(sizeof(int)*dim*dim);
 for (i=0;i<dim;i++)
 {
  for (j=0;j<dim;j++)
  {
   scanf("%d", (m+i*dim+j));
  }
 }
 return m;
}

//Función producto
//Imprime dos matrices y devuelve la matriz resultado
int *producto(int *a, int *b, int dim)
{
 int *res, i,j,t;
 
 //Reservo espacio para la matriz resultado
 res=(int*)malloc(sizeof(int)*dim*dim);
 
 //En C las matrices de n filas tienen filas de la 0 a la n-1
 for (i=0;i<dim;i++)
 {
  //En C las matrices de n columnas tienen cols. de la 0 a la n-1
  for (j=0;j<dim;j++)
  {
   //Inicializo el elemento de la matriz producto
   *(res+i*dim+j)=0;
   for (t=0;t<dim;t++)
   {
    *(res+i*dim+j)=*(res+i*dim+j)+*(a+i*dim+j)* *(b+i*dim+j);
   }
  }
 }
 return(res);
}

//Función imprimematriz
//Dada una matriz, la imprime por pantalla
void imprimematriz(int *m, int dim)
{
 int i,j;
 for (i=0;i<dim;i++)
 {
  //En C las matrices de n columnas tienen cols. de la 0 a la n-1
  for (j=0;j<dim;j++)
  {
   printf("%d\t", *(m+i*dim+j));
  }
  printf("\n");
 }
 return;

}

Nota media de alumnos con punteros en C

//Librería de scanf y printf
#include <stdio.h>
#include <stdlib.h>

//Función principal
int main()
{
 //Declaración de variables
 float *notasClase, mediaAlumno=0, mediaTotal=0;
 int i,j,numalumnos, numexamenes;
 
 //Leemos cuántos alumnos y cuántos exámenes
 printf("Introduzca el número de alumnos: ");
 scanf("%d", &numalumnos);
 printf("Introduzca el número de exámenes: ");
 scanf("%d", &numexamenes);
 
 //Reservamos espacio
 notasClase=(float*)malloc(sizeof(float)*numalumnos*numexamenes);
 
 //Leemos las notas
 printf("\n Introduzca las notas de la clase:\n");
 
 for (i=0; i<numalumnos; i++) {
  for (j=0; j<numexamenes; j++) {
   printf("\nIntroduzca la nota %d del alumno %d: ", j+1, i+1 );
   scanf("%f",notasClase+i*numexamenes+j);
  }

 }
 
 //Calculamos las medias de cada alumno y la total de la asignatura
 mediaTotal=0;
      
 for (i=0; i<numalumnos; i++) {
  mediaAlumno=0;
  for (j=0; j<numexamenes; j++) {
   mediaAlumno+=*(notasClase+i*numexamenes+j);
  }
  mediaTotal+=mediaAlumno;
  mediaAlumno/=numexamenes;
  printf("\nLa media del alumno %d es %f", i, mediaAlumno);
 }     
 mediaTotal/=numalumnos*numexamenes;     
 printf("\nLa media total es %f", mediaTotal);  
 
 free(notasClase);
 //Fin del main
 return 0;

}

Matriz de pares con punteros en C

#include <stdio.h>
#include <stdlib.h>

void pares (int numfilas, int numcols, int *m);
void imprimematriz(int *m, int numfilas, int numcols);
int main ()
{
 int n,m,*matriz;
 printf("Introduzca el número de filas: ");
 scanf("%d",&n);
 printf("Introduzca el número de columnas: ");
 scanf("%d",&m);
 matriz=(int*)malloc(sizeof(int)*n*m);
 pares(n,m,matriz);
 imprimematriz(matriz,n,m);
 free(matriz);
 return 0;
}
void pares (int numfilas, int numcols, int *m)
{
 int i,aux=2;
 for (i=0; i<numfilas*numcols; i++) {
  *(m+i)=aux;
  aux+=2;
 }
 return;
}
void imprimematriz(int *m, int numfilas, int numcols)
{
 int i,j;
 for (i=0; i<numfilas; i++) {
  for (j=0; j<numcols; j++) {
   printf("%3d", *(m+(i*numcols)+j));
  }
  printf("\n");
 }

}

Matriz en C

#include <stdio.h>
#define NF 10
#define NC 10
void imprimematriz(int matriz[NF][NC]);
void rellenamatriz(int matriz[NF][NC]);


int main ()
{
 int m[NF][NC];
 rellenamatriz(m);
 imprimematriz(m);
 return 0;
}

//Función que imprime una matriz
void imprimematriz(int matriz[NF][NC])
{
 int i,j;
 for (i=0;i<NF;i++)
 {
  for(j=0;j<NC;j++)
   printf("%3d\t", matriz[i][j]);
  printf("\n");
 }
 return;
}

//Función que rellena una matriz con valores de 1 a 100
void rellenamatriz(int matriz[NF][NC])
{
 int i,j;
 for (i=0;i<NF;i++)
  for(j=0;j<NC;j++)
   matriz[i][j]=i*NC+j+1;
 
 return;

}

Media con punteros en C

#include <stdio.h>
#include <stdlib.h>
float media(int *pnums, int n);

int main()
{
 int i, nums, *enteros; 
 float valormedio;

 //Leemos cuántos enteros queremos leer
 printf("Indique cuántos enteros vas a introducir: ");
 scanf("%d",&nums);

 /*Reservamos espacio para el vector */
 // Tiene nums números de tipo int
 enteros=(int*)malloc(sizeof(int)*nums); 
 
 for (i=0;i<nums;i++)
 {
  printf("\nIntroduzca un numero: ");
  scanf("%d", enteros+i);
 }
 
 valormedio=media(enteros, nums);

 //Imprimimos el resultado
 printf("\nEl valor medio es %f. ", valormedio);
 
 
 //liberamos memoria
 free (enteros);
 return 0;
}

//Función que devuelve el valor medio de un vector de n enteros
float media(int *pnums, int n)
{
 float resultado=0;
 int i;
 for (i=0;i<n;i++)
  resultado=resultado+*(pnums+i);
 resultado=resultado/n;
 return (resultado);
}


Numeros primos con punteros en C

#include <stdio.h>
#include <stdlib.h>
int esprimo(int n);

int main()
{
 long *pm;
 int numfilas,numcols, i,j, numero;

 //Leemos cuántas filas tiene la matriz
 printf("Indique cuántas filas tiene: ");
 scanf("%d",&numfilas);

 //Leemos cuántas columnas tiene la matri<
 printf("Indique cuántas columnas tiene: ");
 scanf("%d",&numcols);
 
 /*Reservamos espacio para la matriz */
 // Tiene numfilas*numcols números de tipo long
 pm=(long*)malloc(sizeof(long)*numfilas*numcols); 
 
 numero=1;
 
 //Inicializamos los valores de la matriz
 i=0;
 while(i<(numfilas*numcols))
 {
  if (esprimo(numero)==1) {
   *(pm+i)=numero;
   i++;
  }
  numero++;
 }

 
 //Imprimimos el resultado
 for (i=0;i<numfilas;i++)
 {
  for (j=0;j<numcols;j++)
   printf("%li\t",*(pm+(i*numcols)+j));
  printf("\n");
 }
 
 
 //liberamos memoria
 free (pm);
 return 0;
}



//Función que indica si el número que se le pasa como parámetro es primo
//Devuelve 1 si es primo y 0 si no lo es
int esprimo(int n)
{
 int i,primo;
 //Si el argumento es menor que 1, devuelve 0
 if (n<1)
  primo=0;
 else
 {
  //Si el argumento es 1, devuelve que es primo
  if(n==1)
   primo=1;
  else 
  {
   //Si el argumento es mayor que 1, comprueba si es primo
   primo=1;
   i=n-1;
   //Desde n-1 hasta 2 divide el número entre dichos valores
   while(i>1)
   {
    if((n%i)==0)
    {
     primo=0; //Si el resto es 0, el número no es primo
     i=1; //Así sale del bucle
    }
    i--; //Seguimos mirando
   }
  }

 }
 return(primo);
}