Нужна помощь в написании программы на с++ (лаб.работа)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by kamazuxa, 19 Feb 2012.

  1. kamazuxa

    kamazuxa New Member

    Joined:
    4 Jan 2012
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Сразу скажу программа не работает, но я думаю она так должна выглядеть. Задание: алгоритм Деккера. Есть два процесса(это две отдельные программы) каждый из них обращается к критической области. Один из этих процессов важнее 2го. Пока один процесс занял область второй не может в нее войти и ждет или отказывается от входа. Нужно как то сделать чтоб данные из программ записывались в один файл и считывались оттуда. 20:10:39
    #include <iostream>
    #include <fstream>
    #include <conio.h>
    #include <ctype.h>
    #include <stdio.h>
    using namespace std;
    int main()
    {
    int ResourceProc1;
    int ResourceProc2;
    int izp=1;
    int voz=1;
    FILE * f1;
    f1 = fopen("C:\\Users\\z\\Desktop\\aaa\\bin\\Debug\\f1.txt","a");
    if(f1==NULL ) {
    cout<<" ошибка!";
    }
    while (voz==1)
    {
    ResourceProc1=1;
    fscanf(f1," %d ",ResourceProc2);
    cout<<"ResourceProc2="<<ResourceProc2<<"\t ";
    char str[20] = "Znachenie pocessa 1";
    fprintf( f1, "%s %d", str, ResourceProc1 );
    if (ResourceProc2 == 0)
    {
    cout<<"process 1 vxodit v kriticheskyu oblast"<<endl;
    getch();
    cout<<"process 1 vixodit iz kriticheskou oblasti"<<endl;
    getch();
    ResourceProc1=0;
    fprintf( f1, "%s %d", str, ResourceProc1 );
    cout<<"process 1 eshe bydet vxodit v kriticheskyu oblast? (1-da, 0-net)"<<endl;
    cin>>voz;
    }
    else
    {
    if (izp == 1)
    {
    cout<<"process 1 vxodit v kriticheskyu oblast"<<endl;
    getch();
    cout<<"process 1 vixodit iz kriticheskou oblasti"<<endl;
    getch();
    ResourceProc1 = 0;
    fprintf( f1, "%s %d", str, ResourceProc1 );
    cout<<"process 1 eshe bydet vxodit v kriticheskyu oblast? (1-da, 0-net)"<<endl;
    cin>>voz;
    }
    else
    {
    cout<<"process 2 zanyal kriticheskyu oblast"<<endl;
    getch();
    cout<<"process 1 otkazivaetsya ot vxoda v kriticheskyu oblast? (0-da, 1-net)"<<endl;
    cin>>voz;
    }
    }
    }
    fclose(f1);
    return 0;
    }
    Аналогичный текст для 2го процесса (с небольшими изменениями)
     
  2. scroollocker

    scroollocker New Member

    Joined:
    14 Jun 2009
    Messages:
    13
    Likes Received:
    1
    Reputations:
    0
    Мне кажется тебе нужно посмотреть в сторону Mutex