Entradas

Mostrando las entradas etiquetadas como C

Problema de Fisolofos, comunicacion entre procesos

Imagen
En mi Clase de sistema operativo, nos dieron una tarea, es el tipico ejemplo de los filosofos, donde hay 5 filosofos, y solamante 4 tenedores. la idea es optimizar la comunicacion entre los procesos y optimizalos. Cada filoso puede comer siempre y cuando tenga 2 tenedores asi que por logica, como maximo pueden haber 2 filosos comiendo, y el resto pensando, meditando o espera, como quieran llamarle. Aqui hay ejemplo en C, que encontramos muy bueno. #include <pthread.h> #include <semaphore.h> #include <stdio.h> #define N 5 /*num. de filosofos*/ #define IZQ (i-1)%N /*vecino izquierdo de i*/ #define DER (i+1)%N /*vecino derecho de i*/ #define PENSANDO 0 #define CON_HAMBRE 1 #define COME 2 pthread_t filos[N]; /*hilos que representan a los filósofos*/ sem_t mutex ; /*semáforo para la sección crítica*/ sem_t s[N]; /*semáforos para los filósofos*/ int estado [N] ; /*estado actual de cada filósosfo*/ /* el filos...

Programando en C. Parte III

Estoy saliendo de un control en la U. de C. Aqui deje el ejercicio. si bien no segui los consejos que me ha dicho Daniel por el poco tiempo, de hecho faltan bastantes validaciones y esas cosas. me imagino que la idea de estos control es evaluar la logica, mas que validaciones. typedef struct product { int codigo; char nombre[50]; char laboratorio[50]; int cantidad; int precio; }producto; void lb(); void ingresar(); void mayor(); float promedio (producto prod[]); producto productos[400]; int cont = 0,sw=0; int main(){ char op; do{ system("cls"); lb(); printf ("\n1.- Ingreso(A)"); printf ("\n2.- Mayor(B)"); printf ("\n3.- Promedio(C)"); printf ("\n0.- Salir"); op = getch(); if (op=='1')ingresar(); if (op=='2')mayor(); if (op=='3'){ float prom = promedio(productos); printf("\n\n el promed...

Programando en C. Parte II

El sabado tuve clases de C. en el ramo de programacion, y tengo que hacer un trabajo como mi segunda catedra. me encontre con la complicacion que no sabia como validar si un numero que me ingresaban por pantalla era un numero. lo solucione de esta forma, aunque me imagino que debe haber mejores formas de hacerlo defini esta function int myisDigit(char cadena[]){ int i; char letra; for (i=0;i letra=cadena[i]; if (letra 58){ return 0; } } return 1; } y despues la llamo para validar, en este caso es una edad. char edad[20]; do{ do{ fflush(stdin);gets(edad); }while (myisDigit(edad)==0); per.edad = atoi(edad); printf ("%d",per.edad); }while ((per.edad 100)); como podran darse cuenta edad es un char de 20, y per.edad es un int. -- Atte. Victor Hugo Saavedra http://vhspiceros.blogspot.com

Programando en C

Actualmente estoy en clases, cuando digo en clase me refiero ahora sabado a las 10 de la mañana, muerto de sueño. nos pidieron hacer el tipico ejercicio de la seria de fibonacci, y me costo un mundo desarrollarlo en C. Aqui lo dejo por si a alguien le interesa, ase mucho tiempo que no hacia nada en C. int fibonacci (int valor){ if (valor==0) return 0; if (valor==1) return 1; if (valor>=2){ return fibonacci (valor-1) + fibonacci(valor-2); } return 0; } int main(){ int i,hasta=0; char tecla; clrscr(); /*limpia la pantalla*/ printf("Cuantos numeros en la secuencia de fibonacci desea mostrar"); scanf("%d",&hasta); for (i=0;i printf("%d\n",fibonacci(i)); } printf ("Presione una tebla para terminar el programa....."); tecla = getche(); return 0; } -- Atte. Victor Hugo Saavedra http://vhspiceros.blogspot.com