Cómo funciona JustAnswer:
  • Preguntar a un Experto
    Los expertos tienen muchos conocimientos valiosos y están dispuestos a ayudar en cualquier pregunta. Credenciales confirmadas por una empresa de verificación perteneciente a Fortune 500.
  • Obtener una respuesta profesional
    Por correo electrónico, mensaje de texto o notificación mientras espera en su sitio. Haga preguntas de seguimiento si lo necesita.
  • Garantía de satisfacción plena
    Garantizamos tu satisfacción.
Formule su propia pregunta a benjaminrc78
benjaminrc78
benjaminrc78, Diplomatura
Categoría: Informática
Clientes satisfechos: 5
Experiencia:  Ingeniero Técnico Informático. Experiencia profesional desde 1995.
60062687
Escriba su pregunta sobre Informática aquí...
benjaminrc78 está en línea ahora

estoy esperando respuesta

Pregunta del cliente

estoy esperando respuesta
Enviada: hace 5 año.
Categoría: Informática
Experto:  elvis1231 escribió hace 5 año.
me podria decir su pregunta
Experto:  D.Soto escribió hace 5 año.

Hola, ¡Bienvenido a JustAnswer!

 

Explíquenos su problema con más detalle.

 

Gracias.

Cliente: escribió hace 5 año.
Creación de Procesos


El problema que le expongo trata de la realización de un programa en C llamado padre que deberá crear un proceso “hijo” el cual deberá calcular los 10 primeros números de la sucesión de Fibonacci e imprimirlos por salida estándar (formato “ HIJO: fibonacci % N =%M\n ”
donde %N y %M representan el índice y el valor del correspondiente número de la sucesión)

Mientras el ”hijo” realiza el cálculo, el “padre” deberá esperar a que termine.Una vez haya terminado, el hijo comunicará al proceso “padre” la información necesaria para poder continuar con el cálculo de la sucesión.De esa manera el padre podrá continuar y calcular los siguientes 10 números de la sucesión e imprimirlos por salida estándar (formato “ PADRE: fibonacci %N=%M\n”
donde %N y %M representan el índice y el valor del correspondiente número de la sucesión)
El “padre” no deberá nunca calcular la sucesión desde el inicio.
Experto:  benjaminrc78 escribió hace 5 año.
Te adjunto el codigo que te va a ayudar a realizar lo que pides de una manera muy facil y con el codigo comentado.
Espero que te sirva de ayuda.
No te escribo el codigo completo porque considero que esta bien que le des un poco al coco, pero con lo que te dejo, lo tienes muy facil.
El calculo de fibonaci te dejo el metodo normal y el metodo recursivo.


#include <stdio.h> /* Este programa muestra el uso de arrays */ // Funcion principal int main() { // Creamos un array de 24 integers [0,23] int fib[24]; // Creamos un integer int i; // Asignamos valores a los dos primeros int fib[0] = 0; fib[1] = 1; /* Rellenamos el resto de valores de la * secuencia de Fibonacci * */ for(i = 2; i < 24; i++) fib = fib[i-1] + fib[i-2]; // Mostramos toda la serie for (i = 0; i < 24; i++) printf("%3d %6d\n", i, fib); // Terminamos return 0; }

#include <stdio.h> #include <stdlib.h> // Funcion que recursivamente calcula el valor // de la serie Fibonacci int fib(int num) { switch(num) { case 0: return(0); break; case 1: return(1); break; default: /* Including recursive calls */ /* Cada vez se llama recursivamente dos veces a la funcion * lo que significa que tiene un costo bastante alto * La recursividad aporta a veces soluciones sencillas y elegantes * pero hay que tener mucho cuidado con los costes * Ver las notas sobre time mas abajo * */ return(fib(num - 1) + fib(num - 2)); break; } } /* Para comprobar el uso de recursos se puede utilizar el * comando time de unix: * time ./5-Fibonacci_recursivo 40 * 102334155 <-- Respuesta de este programa * * real 0m4.190s <-- Tiempo real que ha tardado * user 0m4.136s <-- Tiempo utilizando CPU como usuario * sys 0m0.001s <-- Tiempo utilizando CPU como sistema * * */ /* Funcion principal */ int main(int argc, char *argv[]) { // Declaramos variables locales int numero, valor; if (argc == 2) { // Si tenemos dos argumentos // Tomamos el segundo argumento como valor sscanf(argv[1], "%d", &valor); } else if (argc == 1) { // Si tenemos un solo argumento (la llamada al programa) printf("Introduzca un valor: "); // Tomamos la entrada como valor scanf("%d", &valor); } else { // Si tenemos mas de dos argumentos printf("Uso: %s [valor]\n", argv[0]); // Terminamos con un valor distinto de 0 (error) exit (1); } // Llamamos a la funcion numero=fib(valor); // Mostramos el resultado printf("%6d\n", numero); // Terminamos return 0; }

#include <stdio.h> #include <pthread.h> #define NUM_IT 100 // Variable global iniciada a 0 int a=0; void * hilo (void *arg) { int id,i,aux; // Tomamos el argumento como identificador del hilo id = (int) arg; printf("Soy el hilo %d con identificador %d.\n", id, pthread_self() ); // El hilo 0 aumenta el valor de a, //+ el resto lo decrementa for (i=0; i<NUM_IT; i++) if (id == 0) { aux = a; aux++; a = aux; } else { aux = a; aux--; a = aux; } // No es estrictamente necesario pthread_exit(0); } int main(void) { // Creamos variables hilo pthread_t t1, t2, t3; // Creamos tres hilos printf("Creamos los hilos. Valor inicial de a: %d.\n", a ); pthread_create(&t1, NULL, hilo, (void *)0); pthread_create(&t2, NULL, hilo, (void *)1); pthread_create(&t3, NULL, hilo, (void *)2); // Esperamos a que acaben los hilos printf("Esperando que terminen los hilos. Valor de a: %d.\n", a); pthread_join(t1, NULL); printf("--Hilo terminado. Valor de a: %d.\n", a); pthread_join(t2, NULL); printf("--Hilo terminado. Valor de a: %d.\n", a); pthread_join(t3, NULL); printf("--Hilo terminado. Valor de a: %d.\n", a); // Terminamos printf( "\nHilos terminados. Valor de a: %d.\n", a ); return 0; } // main
Cliente: escribió hace 5 año.
Muchas gracias.


Lo voy a ejecutar...