#include <stdio.h> #include <pthread.h> #include <unistd.h> #define NUMERO 6 int contador; static void *saluda (void *); int main (void) { int i; pthread_t hilo[NUMERO]; for (i = 0; i < NUMERO ; i++) { sleep(1); pthread_create (&hilo[i],NULL,saluda,NULL); } for (i = 0; i < NUMERO ; i++) { pthread_join (hilo[i],NULL); } return 0; } static void *saluda (void *args) { contador += 1; printf ("Soy el thread %d y tengo el id %d\n",contador,(int) pthread_self()); return NULL; }
Mostrando entradas con la etiqueta hilos. Mostrar todas las entradas
Mostrando entradas con la etiqueta hilos. Mostrar todas las entradas
lunes, 6 de enero de 2020
Programa en C que genere 6 hilos y estos se identifiquen
Generemos un programa en lenguaje C que lance o genere 6 hilos y estos se identifiquen con un identificador.
Ubicación:
Majadahonda, Madrid, Spain
lunes, 3 de junio de 2019
Ejemplo completo de Matrices en C
A continuación, os pongo el ejemplo que se me ha ocurrido más completo sobre gestión de Matrices en C que reúne los ejemplos que he ido poniendo anteriormente.
#include <stdio.h>; #include <stdlib.h>; void Ingresa_Matriz (int m[3][3], int f, int c); void Utiliza_Matriz (int m[3][3], int f, int c); void Visualiza_Matriz (int m[3][3], int f, int c); void Rota_Matriz_D (int m[3][3], int f, int c); void Rota_Matriz_I (int m[3][3], int f, int c); void Multiplica_Matriz (int m[3][3], int f, int c, int cf, int *m0, int *m1, int *m2); int main () { char ingresa; int m[3][3], cf = 0, direccion = 0, f = 0, c = 0; int m0, m1, m2; printf ("Deseas ingresar Matriz o utiliza la maqueta <I/M>: "); scanf ("%c",&ingresa); if (ingresa == 'i') { Ingresa_Matriz(m, f, c); } else { Utiliza_Matriz(m, f, c); } Visualiza_Matriz(m, f, c); printf ("\nDeseas rotar la matriz a la derecha <1> o a la izquierda <0>: "); scanf ("%d",&direccion); if (direccion == 1) { Rota_Matriz_D (m, f, c); } else { Rota_Matriz_I (m, f, c); } Visualiza_Matriz(m, f, c); printf ("\n¿Quieres multiplicar las filas (1) o las columnas (0)?: "); scanf ("%d",&cf); Multiplica_Matriz(m, f, c, cf, &m0, &m1, &m2); if (cf == 1) { printf ("\nMultiplicacion Fila 0: %d",m0); printf ("\nMultiplicacion Fila 1: %d",m1); printf ("\nMultiplicacion Fila 2: %d",m2); } else { printf ("\nMultiplicacion Columna 0: %d",m0); printf ("\nMultiplicacion Columna 1: %d",m1); printf ("\nMultiplicacion Columna 2: %d",m2); } return 0; } void Ingresa_Matriz (int m[3][3], int f, int c) { for (f=0;f<3;++f) { for (c=0;c<3;++c) { printf ("\nIntroduce posicion [%d][%d]: ",f,c); scanf ("%d",&m[f][c]); } } } void Utiliza_Matriz (int m[3][3], int f, int c) { for (f=0;f<3;++f) { for (c=0;c<3;++c) { m[f][c]=rand()%50+1; } } } void Visualiza_Matriz (int m[3][3], int f, int c) { for (f=0;f<3;++f) { for (c=0;c<3;++c) { printf ("[%d] ",m[f][c]); } printf ("\n"); } } void Rota_Matriz_D (int m[3][3], int f, int c) { int tmp[3][3]; for (f=0;f<3;++f) { for (c=0;c<3;++c) { if (c == 2) { tmp[f][0]=m[f][c]; } else { tmp[f][c+1]=m[f][c]; } } } for (f=0;f<3;++f) { for (c=0;c<3;++c) { m[f][c]=tmp[f][c]; } } } void Rota_Matriz_I (int m[3][3], int f, int c) { int tmp[3][3]; for (f=0;f<3;++f) { for (c=0;c<3;++c) { if (c == 0) { tmp[f][2]=m[f][c]; } else { tmp[f][c-1]=m[f][c]; } } } for (f=0;f<3;++f) { for (c=0;c<3;++c) { m[f][c]=tmp[f][c]; } } } void Multiplica_Matriz (int m[3][3], int f, int c, int cf, int *m0, int *m1, int *m2) { // 1 Multiplica filas // 0 Multiplica columnas int c0[3], c1[3], c2[3]; if (cf == 0) { printf ("\nMultiplicando columnas...\n\n"); for (f=0;f<3;++f) { for (c=0;c<3;++c) { if (c == 0) c0[f]=m[f][c]; if (c == 1) c1[f]=m[f][c]; if (c == 2) c2[f]=m[f][c]; } } } else { printf ("\nMultiplicando filas...\n\n"); for (f=0;f<3;++f) { for (c=0;c<3;++c) { if (f == 0) c0[c]=m[f][c]; if (f == 1) c1[c]=m[f][c]; if (f == 2) c2[c]=m[f][c]; } } } *m0=c0[0]*c0[1]*c0[2]; *m1=c1[0]*c1[1]*c1[2]; *m2=c2[0]*c2[1]*c2[2]; }
Tags
arboles binarios,
C,
calculo,
funciones,
hilos,
matemáticas,
matrices,
threads
Ubicación:
Majadahonda, Madrid, Spain
viernes, 25 de enero de 2019
Ejercicios resueltos Matrices en C
He recopilado una serie de ejercicios sobre trabajo de matrices en C que espero sean de utilizar, no tenéis más que contactar en caso de dudas.
Ejercicio 1: Escribe un programa que pida cinco enteros al usuario y los almacene en una matriz. Calcula si la suma de los números almacenados es par o impar.
Ejercicio 2: Escribe un programa que pida nueve números enteros y los almacene en una matriz 3x3. Calcula la suma de los números de cada fila y mostrar por pantalla el número de fila con mayor suma.
Ejercicio 3: Escribe un programa, que trabajando mediante funciones, presente un menú al usuario, rote la columnas a la derecha y suma filas.
Ejercicio 1: Escribe un programa que pida cinco enteros al usuario y los almacene en una matriz. Calcula si la suma de los números almacenados es par o impar.
#include <stdio.h> int main () { int m[5]; int i, suma=0; for (i=0;i<5;i++) { printf ("Introduce numero [%i]: ",i+1); scanf ("%i",&m[i]); } for (i=0;i<5;i++) { suma+=m[i]; } if (suma%2==0) { printf ("\nLa suma es PAR: %i",suma); } else { printf ("\nLa suma es IMPAR: %i",suma); } return 0; }
Ejercicio 2: Escribe un programa que pida nueve números enteros y los almacene en una matriz 3x3. Calcula la suma de los números de cada fila y mostrar por pantalla el número de fila con mayor suma.
#include <stdio.h> int main () { int m[3][3]; int f,c, sumafila=0, nfila=0, mayorfila=0; for (f=0;f<3;f++) { for (c=0;c<3;c++) { printf ("Introduce el valor de [%i][%i]",f,c); scanf ("%i",&m[f][c]); } printf ("\n## Fila [%i] completada\n",f+1); } for (f=0;f<3;f++) { sumafila=0; nfila=f+1; for (c=0;c<3;c++) { sumafila+=m[f][c]; if (sumafila > mayorfila) { mayorfila=sumafila; } } } printf ("\n-----------\n"); printf ("La fila con suma mayor es: %i con resultado %i",nfila,mayorfila); return 0; }
#include <stdio.h> #define DIMENSION 3 int m[3][3]={10,20,30,40,50,60,70,80,90}; int n[3][3]; int a,b,f,c, opcion, suma, resultado; int IntroduceMatriz (int m[3][3], int f, int c); int VisualizaMatriz (int m[3][3], int f, int c); int RotarMatrizDrcha (int m[3][3], int f, int c); int CambiarFilasColumnas (int m[3][3], int f, int c); int SumarFilasColumnas (int m[3][3], int f, int c); //struct ciudadano * CargarBBDDCiudadanos (struct *ciudadano, char *, char *, char *); int main () { do { printf ("--- MENU ---\n"); printf ("1. Introducir Matriz\n"); printf ("2. Visualizar Matriz\n"); printf ("3. Rotar Matriz Derecha\n"); printf ("4. Cambiar Filas/Columnas Matriz\n"); printf ("5. Sumar Filas\n"); printf ("6. Incremento dinero paso por referencia\n"); printf ("7. Incremento dinero paso por valor\n"); printf ("9. Salir\n\n"); printf ("Seleccione: "); scanf ("%i",&opcion); switch (opcion) { case 1: printf ("\nOpcion 1\n\n"); IntroduceMatriz (m, f,c); break; case 2: printf ("\nOpcion 2\n\n"); VisualizaMatriz (m,f,c); break; case 3: printf ("\nOpcion 3\n\n"); RotarMatrizDrcha (m,f,c); break; case 4: printf ("\nOpcion 4\n\n"); CambiarFilasColumnas (m,f,c); break; case 5: printf ("\nOpcion 5\n\n"); SumarFilasColumnas (m,f,c); break; case 6: printf ("\nOpcion 6\n\n"); break; case 7: printf ("\nOpcion 7\n\n"); default: printf ("\nSeleccione una opcion correcta\n"); break; } } while (opcion != 9); return 0; } int IntroduceMatriz (int m[3][3], int f, int c) { for (f=0; f<DIMENSION; f++) { for (c=0; c<DIMENSION; c++) { printf ("Introduce coordenada [%i][%i]: ",f,c); scanf ("%i",&m[f][c]); } } printf ("\nDone!\n"); } int VisualizaMatriz (int m[3][3], int f, int c) { for (f=0; f<DIMENSION; f++) { for (c=0; c<DIMENSION; c++) { printf ("%i ",m[f][c]); } printf ("\n"); } printf ("\nDone!\n"); } int RotarMatrizDrcha (int m[3][3], int f, int c) { for (f=0; f<DIMENSION; f++) { for (c=0; c<DIMENSION; c++) { if (c == 2) { n[f][0] = m[f][c]; } else { n[f][c+1] = m [f][c]; } } } for (f=0; f<DIMENSION; f++) { for (c=0; c<DIMENSION; c++) { m[f][c] = n[f][c]; } } printf ("\nDone!\n"); } int CambiarFilasColumnas (int m[3][3], int f, int c) { for (f=0; f<DIMENSION; f++) { for (c=0; c<DIMENSION; c++) { n[c][f] = m[f][c]; } } for (f=0; f<DIMENSION; f++) { for (c=0; c<DIMENSION; c++) { m[f][c] = n[f][c]; } } printf ("\nDone!\n"); } int SumarFilasColumnas (int m[3][3], int f, int c) { for (f=0; f<DIMENSION; f++) { suma=0; for (c=0; c<DIMENSION; c++) { suma+=m[f][c]; //printf ("Debug: %i\n",suma); if (c == 2) { printf ("\nLa Fila [%i] suma: %i\n",f,suma); } } } printf ("\nDone!\n"); }
Tags
C,
calculo,
hilos,
matemáticas,
matrices,
programación,
programming,
sport
Ubicación:
Majadahonda, Madrid, Spain
Suscribirse a:
Entradas (Atom)