Forum www.pwszinf.fora.pl Strona Główna
RejestracjaSzukajFAQUżytkownicyGrupyGalerieZaloguj
Programy symulacyjne. Termin.
Idź do strony Poprzedni  1, 2, 3
 
Odpowiedz do tematu    Forum www.pwszinf.fora.pl Strona Główna » Systemy operacyjne GK/SSK / Laboratorium z M. Markowskim Zobacz poprzedni temat
Zobacz następny temat
Programy symulacyjne. Termin.
Autor Wiadomość
beny
BeNy_BuDoWnIcZy.2.0



Dołączył: 06 Sty 2008
Posty: 551
Przeczytał: 0 tematów

Pomógł: 4 razy
Ostrzeżeń: 0/5
Skąd: z Pizdochlewic

Post
Dla wszystkich desperatów zad1:

Kod:


#include<iostream.h>
#include<conio.h>
#include<stdio.h>

class symulacja
{
   int LiczbaProcesow,TabCzasuProcesow[20];
   float MaxCzasOczekiwania,SreCzasOczekiwania,TabWymian[10], suma;
public:
   //deklaracja nazw algorytmow i funkcji wykorzytanych w programie
   void LiczbaIczasProcesow();
   void AlgorytmFcfs();
   void AlgorytmSjf();
   void AlgorytmRoundRobin();
   void zapisz();

};

//pobranie od uzytkownika liczby procesow i przypisanie im kwantow czasu
void symulacja::LiczbaIczasProcesow()
{
   int i;
   cout<<"\nPodaj ogolna liczbe procesow (max 10):";
   cin>>LiczbaProcesow;
   for(i=1;i<=LiczbaProcesow;i++)
   {
      cout<<"\nPodaj kwant czasu potrzebny do wykonania procesu_"<<i<<"=   ";
      cin>>TabCzasuProcesow[i];
   }
}

//kod algorytmu FCFS
void symulacja::AlgorytmFcfs()
{

    int i,TabCzasu[10];
   MaxCzasOczekiwania=0.0;
   for(i=1;i<=LiczbaProcesow;i++)
   {
      TabCzasu[i]=TabCzasuProcesow[i];
      cout<<"\nImpuls czasu dla procesu_"<<i<<"=   ";
      cout<<TabCzasu[i];
   }
   suma=0;
   for(i=2;i<=LiczbaProcesow;i++)
   {
      suma=TabCzasu[i-1]+suma;
       
   }

    MaxCzasOczekiwania=MaxCzasOczekiwania+suma;
   SreCzasOczekiwania=MaxCzasOczekiwania/LiczbaProcesow;
   cout<<"\nMaksymalny czas oczekiwania ostatniego procesu na wykonanie="<<MaxCzasOczekiwania;
   cout<<"\nSredni czas oczekiwania procesu na wykonanie="<<SreCzasOczekiwania;
    cout<<"\nLiczba wymian procesow przez planiste to "<<LiczbaProcesow-1;
    cout<<"\n";
    system ("pause");
}

//kod algorytmu SJF
void symulacja::AlgorytmSjf()
{

    int i,j,k,max,TabCzasu[10];
   max=0;
    suma=0;
    MaxCzasOczekiwania=0.0;
   for(i=1;i<=LiczbaProcesow;i++)
   {
      TabCzasu[i]=TabCzasuProcesow[i];
      cout<<"\nImpuls czasu dla procesu_"<<i<<"=   ";
      cout<<TabCzasu[i];
   }
   for(i=LiczbaProcesow;i>=1;i--)
   {
      for(j=2;j<=LiczbaProcesow;j++)
      {
         if(TabCzasu[j-1]>TabCzasu[j])
         {
            k=TabCzasu[j-1];
            TabCzasu[j-1]=TabCzasu[j];
            TabCzasu[j]=k;
         }
      }
   }

   for(i=2;i<=LiczbaProcesow;i++)
   {
      suma=TabCzasu[i-1]+suma;
   }
    MaxCzasOczekiwania=MaxCzasOczekiwania+suma;
   SreCzasOczekiwania=MaxCzasOczekiwania/LiczbaProcesow;
   cout<<"\nMaksymalny czas oczekiwania najdluzszego procesu na wykonanie="<<MaxCzasOczekiwania;
   cout<<"\nSredni czas oczekiwania procesu na wykonanie="<<SreCzasOczekiwania;
    cout<<"\nLiczba wymian procesow przez planiste to "<<LiczbaProcesow-1;
    cout<<"\n";
   system ("pause");
}

//kod algorytmu Round Robin
void symulacja::AlgorytmRoundRobin()
{
   int i,j,przydzial,k,TabCzasu[10],Rrobin[10][10],count[10];
   int max=0;
   int m;
   MaxCzasOczekiwania=0.0;
   for(i=1;i<=LiczbaProcesow;i++)
   {
      TabCzasu[i]=TabCzasuProcesow[i];
      cout<<"\nImpuls czasu potrzebny do wykonania procesu_"<<i<<"=   ";
      cout<<TabCzasu[i];
      if(max<TabCzasu[i])
         max=TabCzasu[i];
      TabWymian[i]=0;
   }
   cout<<"\nPodaj staly przydzial czasowy dla pojedynczego procesu=";
   cin>>przydzial;
   m=max/przydzial+1;

   //inicjalizacja tablicy
   for(i=1;i<=LiczbaProcesow;i++)
   {
      for(j=1;j<=m;j++)
      {
         Rrobin[i][j]=0;
      }
   }
   i=1;
   while(i<=LiczbaProcesow)
   {
      j=1;
      while(TabCzasu[i]>0)
      {
         if(TabCzasu[i]>=przydzial)
         {
            TabCzasu[i]=TabCzasu[i]-przydzial;
            Rrobin[i][j]=przydzial;
            j++;
         }
         else
         {
            Rrobin[i][j]=TabCzasu[i];
            TabCzasu[i]=0;
            j++;
         }
      }
      count[i]=j-1;
      i++;
   }
   
   cout<<"\nWynik:\n\n";
   for(i=1;i<=LiczbaProcesow;i++)
   {
      for(j=1;j<=m;j++)
      {
         cout<<"Rr["<<i<<","<<j<<"]="<<Rrobin[i][j];
         cout<<"   ";
      }
      cout<<"";
   }
   int x=1;
   i=1;
   while(x<=LiczbaProcesow)
   {
      for(int a=1;a<x;a++)
      {
         TabWymian[x]=TabWymian[x]+Rrobin[a][i];
      }
      i=1;
      int z=x;
      j=count[z];
      k=1;
      while(k<=j-1)
      {
         if(i==LiczbaProcesow+1)
         {
            i=1;
            k++;
         }
         else
         {
            if(i!=z)
            {
               TabWymian[z]=TabWymian[z]+Rrobin[i][k];
            }
            i++;
         }
      }
      x++;
   }
    for(i=1;i<=LiczbaProcesow;i++)
   cout<<"\nCzas wykonania dla procesu_"<<i<<"="<<TabWymian[i];

   for(i=1;i<=LiczbaProcesow;i++)
   MaxCzasOczekiwania=MaxCzasOczekiwania+TabWymian[i];
   SreCzasOczekiwania=MaxCzasOczekiwania/LiczbaProcesow;
   
    cout<<"\nMaksymalny czas oczekiwania procesu na wykonanie="<<MaxCzasOczekiwania;
   cout<<"\nSredni czas oczekiwania procesu na wykonanie="<<SreCzasOczekiwania;
    cout<<"\n";
   system ("pause");
}

//zapisywanie do pliku wynikow

void zapisz()
{
     FILE *Plik;
     float alg;
     Plik = fopen ("WynikSymulacji.txt" , "w+b");
if (Plik == NULL)
{
// błąd
}

fwrite(&alg, 1, sizeof(500), Plik);
fclose (Plik);
}


//Program glowny

int main()
{
   int a;
   symulacja c;
   do
   {
system("cls");
      cout<<"*********************************************\n";
      cout<<"*           Adam Jarzab 22704               *\n";
      cout<<"*           Systemy operacyjne              *\n";
      cout<<"*           Symulacje - zadanie 1           *\n";
      cout<<"*********************************************\n";

      cout<<"\n\n             Menu programu\n\n\n";
      cout<<"1. Wprowadz liczbe procesow i ich czas wykonania\n";
      cout<<"2. Algotym First Come First Served (FCFS)\n";
      cout<<"3. Algotym Shortest Job First (SJF)\n";
      cout<<"4. Algotym Round Robin (Rr)\n";
      cout<<"5. Pokaz wyniki dla wszystkich 3 algorytmow\n";
      cout<<"6. Wyjscie z programu\n\n";
      cout<<"Podaj numer polecenia do wykonania ... ";
      cin>>a;
      switch(a)
      {
      case 1:
         c.LiczbaIczasProcesow();
         break;
      case 2:
         cout<<"\nAlgorytm FIRST COME FIRST SERVED (FCFS)\n";
         c.AlgorytmFcfs();
         break;
      case 3:
         cout<<"\nAlgorytm SHORTEST JOB FIRST (SJF)\n";
         c.AlgorytmSjf();
         break;
      case 4:
         cout<<"\nAlgorytm ROUND ROBIN (Rr)\n";
         c.AlgorytmRoundRobin();
         break;
      case 5:
         cout<<"\nWyniki dla wszystkich 3 algorytmow:\n";
         cout<<"\nAlgorytm FIRST COME FIRST SERVED (FCFS)\n";
            zapisz();
            c.AlgorytmFcfs();
         cout<<"\nAlgorytm SHORTEST JOB FIRST (SJF)\n";
         c.AlgorytmSjf();
         zapisz();
            cout<<"\nAlgorytm ROUND ROBIN (Rr)\n";
         c.AlgorytmRoundRobin();
         zapisz();
            break;
      case 6:
            break;
      }
   }while(a<=5);
}



Post został pochwalony 0 razy

Ostatnio zmieniony przez beny dnia Czw 14:45, 04 Cze 2009, w całości zmieniany 1 raz
Czw 14:44, 04 Cze 2009 Zobacz profil autora
Wyświetl posty z ostatnich:    
Odpowiedz do tematu    Forum www.pwszinf.fora.pl Strona Główna » Systemy operacyjne GK/SSK / Laboratorium z M. Markowskim Wszystkie czasy w strefie CET (Europa)
Idź do strony Poprzedni  1, 2, 3
Strona 3 z 3

 
Skocz do: 
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Design by Freestyle XL / Music Lyrics.
Regulamin