/*sets the recent_cpu for thread t */ void thread_set_recent_cpu (struct thread * t) { int return_val = real_multiply(real_divide(2*load_avg , (2*load_avg + f) ) , t->recent_cpu) +( t->nice * f ); t->recent_cpu = return_val; }
void operator_real() { double result; char in[USHRT_MAX]; printf("Entre com o 1º valor: "); scanf("%s", in); printf("\n"); result = atof(in); int keep_going = 1; while (keep_going) { switch (menu_real()) { case 1: // Add printf("Entre com o próximo valor: "); scanf("%s", in); printf("\n"); real_add(&result, atof(in)); break; case 2: // Subtract printf("Entre com o próximo valor: "); scanf("%s", in); printf("\n"); real_subtract(&result, atof(in)); break; case 3: // Multiply printf("Entre com o próximo valor: "); scanf("%s", in); printf("\n"); real_multiply(&result, atof(in)); break; case 4: // Power while (1) { printf("Entre com o próximo valor: "); scanf("%s", in); printf("\n"); double original = result; real_power(&result, atof(in)); if (isnan(result)) { result = original; printf("Valor inválido!\n\n"); } else break; } break; case 5: // Divide while (1) { printf("Entre com o próximo valor: "); scanf("%s", in); printf("\n"); if (atof(in) == 0) printf("Valor inválido!\n\n"); else break; } real_divide(&result, atof(in)); break; default: keep_going = 0; break; } printf("Resultado: %lg\n\n", result); } }