#include <stdio.h>
#include <stdbool.h>
int main() {
float num_1, num_2, result;
char wait, vopros;
bool correct;
printf("\n\t\t\t\t\tКАЛЬКУЛЯТОР 3.0");
do {
correct = true;
printf("\nВведите первое число: ");
scanf("%f", &num_1);
printf("\nВведите второе число: ");
scanf("%f", &num_2);
printf("\nВыберите действие +, -, *, /: ");
scanf("%01s", &wait);
switch(wait) {
case '+':
result = num_1 + num_2;
break;
case '-':
result = num_1 - num_2;
break;
case '*':
result = num_1 * num_2;
break;
case '/':
if(num_2 == 0) {
printf("\n\nТЫ ЧТО-ТО ДЕЛАЕШЬ НЕ ТАК!!!\n\n");
correct = false;
} else {
result = num_1 / num_2;
}
break;
default:
printf("Ошибка синтаксиса\n");
correct = false;
}
if(correct)
printf("%f %c %f = %f\n", num_1, wait, num_2, result);
printf("Хотите попробовать еше раз? (Y/n): ");
scanf("%01s", &vopros);
} while(vopros != 'n' && vopros != 'N');
}
pthread_cond_t notify;
void* worker(void *arg) {
pthread_mutex_t *mtx = arg;
pthread_mutex_lock(mtx);
for(;;) {
pthread_cond_wait(¬ify, mtx);
// Выполнение работы
// Сигнализируем о выполненной работе
}
return NULL;
}
int main() {
pthread_t threads[4];
pthread_mutex_t mtxs[4];
// Инициализируем условную переменную
pthread_cond_init(¬ify, NULL);
// Создаём 4 потока
for(int i = 0; i < 4; i++) {
pthread_mutex_init(&mtxs[i], NULL);
pthread_create(&threads[i], NULL, worker, &mtxs[i]);
}
// Некоторый код
// Некоторый код
// Некоторый код
// Передаём данные через глобальные переменные 4 потокам
// Выводим 4 потока из спящего режима
pthread_cond_broadcast(¬ify);
// Ожидаем выполнения 4 потоков
}