Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач ОС Галиева Д..docx
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆

Приложение 1

#include<stdio.h>

#include<conio.h>

#include<windows.h>

/*------------------------------------------------*/

void printrusb(char string[100],int a)

{ char buf[100]; /* буфер обмена для вывода русских букв в консоль */

CharToOem(string, buf);/* преобразование букв */

printf(buf);//Выводим русские буквы

if (a == 1) {puts("\n");}//Выводим перевод строки

};

int st_stop(char string[100],int a)

{

FILE *f;

int d;

f=fopen(string,"rt"); // открываем файл для считывания

if (f!=NULL)

{

fscanf(f,"%d",&d);// считываем содержимое файла

if (d==a)

{

fclose(f); // закрываем файл

f=fopen(string,"wt"); // открываем файл для записи

fprintf(f,"%d",a+1);// записываем в файл 1

fclose(f); // закрываем файл

printf("%s = %d\n",string,a+1);

return 1;

}

else

{

if (a==2)

{

fclose(f); // закрываем файл

f=fopen(string,"wt"); // открываем файл для записи

fprintf(f,"%d",a);// записываем в файл 1

fclose(f); // закрываем файл

printf("%s = %d\n",string,a);

}

return 0;

}

}

else printrusb("Файла нет",1);

return 0;

}

void zapis(char string[100],char a[50])

{

FILE *f;

int d;

f=fopen(string,"wt"); // открываем файл для записи

if (f!=NULL)

{

fprintf(f,"%s",a);// записываем в файл

fclose(f); // закрываем файл

printrusb("В файл ",0);printf("%s",string);printrusb(" записана строка: ",0);printf("%s\n",a);

}

else printrusb("Файла нет",1);

}

int main()// программа производитель

{

int b;

char a='0';

char chars[50]="";

while (a!='a')

{ getch();

b=st_stop("semaphore.txt",0);

getch();

if(b==1)

{

printrusb("Введите строку: ",0);

scanf("%s",&chars);

zapis("res.txt",chars);

getch();

st_stop("semaphore.txt",2);

}

else printrusb("Очередность у другого процесса",1);

printrusb("Для завершения нажмите на букву а, для продолжения на любую другую клавишу",1);

a=getch();

}

return 0;

}

Приложение 2

#include<stdio.h>

#include<conio.h>

#include<windows.h>

/*------------------------------------------------*/

void printrusb(char string[100],int a)

{ char buf[100]; /* буфер обмена для вывода русских букв в консоль */

CharToOem(string, buf);/* преобразование букв */

printf(buf);//Выводим русские буквы

if (a == 1) {puts("\n");}//Выводим перевод строки

};

int st_stop(char string[100],int a)

{

FILE *f;

int d;

f=fopen(string,"rt"); // открываем файл для считывания

if (f!=NULL)

{

fscanf(f,"%d",&d);// считываем содержимое файла

if (d==a)

{fclose(f); // закрываем файл

f=fopen(string,"wt"); // открываем файл для записи

fprintf(f,"%d",a+1);// записываем в файл 1

fclose(f); // закрываем файл

printf("%s = %d\n",string,a+1);

return 1;

}

else

{

if (a==0)

{

fclose(f); // закрываем файл

f=fopen(string,"wt"); // открываем файл для записи

fprintf(f,"%d",a);// записываем в файл 1

fclose(f); // закрываем файл

printf("%s = %d\n",string,0);

}

return 0;

}

}

else printrusb("Файла нет",1);

return 0;

}

void schit(char string[100])

{

FILE *f;

char a[50];

int d;

f=fopen(string,"rt"); // открываем файл для записи

if (f!=NULL)

{

fscanf(f,"%s",&a);// считываем содержимое файла

fclose(f); // закрываем файл

printrusb("В файле ",0);printf("%s",string);printrusb(" записана строка: ",0);printf("%s\n",a);

}

else printrusb("Файла нет",1);

}

int main()// программа производитель

{

int b;

char a='0';

char chars[50]="";

while (a!='a')

{

getch();

b=st_stop("semaphore.txt",2);

getch();

if(b==1)

{schit("res.txt");

getch();

st_stop("semaphore.txt",0);

}

else printrusb("Очередность у другого процесса",1);

printrusb("Для завершения нажмите на букву а, для продолжения на любую другую клавишу",1);

a=getch();

}

return 0;

}