You are on page 1of 5

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ


ЗАКЛАД
«КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ
ЕКОНОМІЧНИЙ УНІВЕРСИТЕТ
імені ВАДИМА ГЕТЬМАНА»

Навчально-науковий інститут
«Інститут інформаційних технологій в економіці
ДВНЗ «КНЕУ ім. В.Гетьмана» »

Лабораторна робота №4
з дисципліни «Операційні системи»
Варіант №22

Виконаd студент: Сіденко Д.С.


ІН-103
Перевірив: Потапенко С.Д.

КНЕУ КИЇВ 2022


Завдання:
22. Створіть два програмні додатки мовою програмування C, що виконують
розрахунки за формулою

Забезпечте можливість введення значень a, b, c і d в одному додатку, а


виконання всіх необхідних розрахунків та виведення відповідних результатів
в іншому. Також додаток, який виконує розрахунки, повинен сповіщати
користувача про значення виразу c ∗ d.
1 додаток (введення значень):
#include <stdio.h>
#include <stdlib.h>
#include <semaphore.h>
#include <fcntl.h>
#include <sys/stat.h>
void action(void)
{
FILE *file = fopen("data.txt", "r");
if (file != NULL)
{ fclose(file);
return ;
}
float a, b, c;
printf("a = ");
scanf("%f", &a);
printf("b = ");
scanf("%f", &b);
printf("c = ");
scanf("%f", &c);

file = fopen("data.txt", "wb");


if (file == NULL)
{ printf("Can not open file for write binary mode. \n");
return ;
}
int ss = fwrite(&a, sizeof(a), 1, file) == 1 &&
fwrite(&b, sizeof(b), 1, file) == 1 &&
fwrite(&c, sizeof(c), 1, file) == 1;
fclose(file);
if (!ss)
{ printf("Can not write a, b, c to file \n");
remove("data.txt");
return ;
}
}
int main(void)
{
sem_t *sem = sem_open("semaphor", 0 );
if (sem == NULL)
{ printf("Can not create semaphore. \n");
return -1;
}
if (sem_post(sem) == -1)
{
printf("Can not post semaphore.\n");
sem_close(sem);
return -1;
}
sem_close(sem);
return 0;
}
2 додаток (розрахунок та виведення результату):
#include <stdio.h>
#include <stdlib.h>
#include <semaphore.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <math.h>
#include <locale.h>
void action(void)
{
FILE *file = fopen("data.txt", "rb");
if (file != NULL)
{
float a, b, c, tmpcos, result;
int ss = fread(&a, sizeof(a), 1, file) == 1 &&
fread(&b, sizeof(b), 1, file) == 1 &&
fread(&c, sizeof(c), 1, file) == 1;
fclose(file);
remove("data.txt");
if (ss)
{
tmpcos=cos(a-b-c);
if (tmpcos == 0)
printf("cos(a-b-c)=0. Dilennya na 0 zaboroneno \n");
else
{
result=1.0/tmpcos;
printf("\n 1/cos(a-b-c) = %f \n", result);
}
if (fabs(a) >= fabs(b) && fabs(a) >= fabs(c))
printf("\n Naybilshe znachennya po moduly z (a;b;c) = %f\n",fabs(a));
else if (fabs(b) >= fabs(a) && fabs(b) >= fabs(c))
printf("\n Naybilshe znachennya po moduly z (a;b;c) = %f\n",fabs(b));
else
printf("\n Naybilshe znachennya po moduly z (a;b;c) = %f\n",fabs(c));
}
else
printf("Can not open file for read a, b, c, from file data.txt. \n");

fflush(stdout);
}
}
int main(void)
{
sem_t *sem = sem_open("semaphor", O_CREAT );
if (sem == NULL)
{ printf("Can not create semaphore. \n");
return -1;
}
sem_close(sem);
return 0;
}
Контрольний приклад

You might also like