Форум программистов, компьютерный форум CyberForum.ru

Модель распределения памяти разделами переменного размера с общей очередью, стратегия "наименее подходящий" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ввести предложение и разобрать его на отдельные слова http://www.cyberforum.ru/cpp-beginners/thread961455.html
Ввести предложение и разобрать его на отдельные слова. Заранее спасибо!
C++ Вычислить Для заданных с клавиатуры значений переменных x и n вычислить: Y=n!=1*2*3*...*n http://www.cyberforum.ru/cpp-beginners/thread961453.html
Ближайшее меньшее, чем заданное C++
Всем привет. Как делать задания такого типа? Искал подобное, но не нашел, а до самого что-то не доходит. Среди чисел 1, 1+1\2, 1+1\2+1\3.... найти ближайшее меньшее, чем заданное число A.
Функция. Где здесь ошибка? C++
using namespace std; int main () { float x,y,z; cout <<"x="; cin >>x; cout <<"y="; cin >>y; z=pow(cos(x),4)+pow(sin(y),2)+1/4*pow(sin(2x),2)-1; cout <<"z=" <<z;
C++ работа со строками, ошибка в коде http://www.cyberforum.ru/cpp-beginners/thread961437.html
#include <iostream> #include <cstring> using namespace std; class str{ char *a; int n; public: str(); str(int k); str(const str &z);
C++ Стек Как сделать чтобы стек заполнялся в диапазоне -50..+50 , размерность вводится с клавиатуры? Помогите пожалуйста добавить в этот код. #include <stdio.h> #include <conio.h> #define LEN 100 int g_count1 = 0; int g_count2 = 0; int* g_v = NULL; int* g_v2 = NULL; подробнее

Показать сообщение отдельно
RezoneR
Сообщений: n/a
24.09.2013, 19:28     Модель распределения памяти разделами переменного размера с общей очередью, стратегия "наименее подходящий"
Здравствуйте. Получил следующее задание:

Для каждой поступающей программы выделяется один из свободных участков памяти. Таким образом, размер поступающей программы не должен превышать размера блока максимального объема. Если все блоки заняты, то программа ожидает первого освободившегося. Если имеется несколько свободных, то программа загружается в блок, наименее подходящий по размеру.
1. Исходные данные:общий объем памяти; размер блока; поток заявок на размещения в памяти (номер заявки, объем требуемой памяти, время поступления, продолжительность обработки заявки).

составил программу, текст программы приведен ниже. Не получается реализовать расстановку файлов по приоритету (приоритет поступающей программы так же вводится с клавиатуры). Выдает ошибку при условии, что блок и программа имеют равный объем памяти. Помогите исправить данные неточности.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include<conio.h>
#include <clocale> 
#define max 25
 
void main()
{
    setlocale(LC_CTYPE,"Russian");
    
    int frag[max],b[max],f[max],i,l,j,nb,nf,pr,prx,pri[max],temp,highest=0;
    static int bf[max],ff[max];
 
 printf("\nМОДЕЛЬ РАСПРЕДЕЛЕНИЯ ПАМЯТИ РАЗДЕЛАМИ ПЕРЕМЕННОГО РАЗМЕРА\nС ОБЩЕЙ ОЧЕРЕДЬЮ СО СТРАТЕГИЕЙ НАИМЕНЕЕ ПОДХОДЯЩИЙ");
 printf("\n Введите число блоков: ");
 scanf("%d",&nb);
 printf("\n Введите число файлов: ");
 scanf("%d",&nf);
 
 printf("\n Введите размер блоков :\n");
 for(i=1;i <= nb;i++) {printf("Блок %d:",i);scanf("%d",&b[i]);}
 printf("Введите размер файлов :\n");
 for(i=1;i <= nf;i++) {printf("Файл %d:",i);scanf("%d",&f[i]);}
 printf("\n Введите приоритет файла: ");
 for(i=1;i <= nf;i++) {printf("Файл %d:",i);scanf("%d",&pri[i]);}
 
 for(i = 1;i <= nf;i++)
 {
  for(j = 1;j <= nb;j++)
   {
    if(bf[j]!=1) 
    {
        temp=b[j]-f[i];
        if(temp>=0)
        if(highest < temp)
    {
     ff[i]=j;
     highest = temp;
    }
  }
  }
  frag[i]=highest;
  bf[ff[i]]=1;
  highest=0;
 }
 printf("\nНомер файла:\tРазмер файла:\tНомер блока:\tРазмер блока:\tФрагмент");
 for(i=0;i < nf;i++)
 printf("\n%d\t\t%d\t\t%d\t\t%d\t\t%d",i+1,f[i],ff[i],b[ff[i]],frag[i]);
 getch();
}
}
Добавлено через 2 минуты
вот попробовал расставить файлы по приоритету следующим образом:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include<conio.h>
#include <clocale> 
#define max 25
 
void main()
{
    setlocale(LC_CTYPE,"Russian");
    
    int frag[max],b[max],f[max],i,j,nb,nf,pr,prx,pri[max],temp,highest=0;
    static int bf[max],ff[max];
 
 printf("\nМОДЕЛЬ РАСПРЕДЕЛЕНИЯ ПАМЯТИ РАЗДЕЛАМИ ПЕРЕМЕННОГО РАЗМЕРА\nС ОБЩЕЙ ОЧЕРЕДЬЮ СО СТРАТЕГИЕЙ НАИМЕНЕЕ ПОДХОДЯЩИЙ");
 printf("\n Введите число блоков: ");
 scanf("%d",&nb);
 printf("\n Введите число файлов: ");
 scanf("%d",&nf);
 
 printf("\n Введите размер блоков :\n");
 for(i=0;i < nb;i++) {printf("Блок %d:",i);scanf("%d",&b[i]);}
 printf("Введите размер файлов :\n");
 for(i=0;i < nf;i++) {printf("Файл %d:",i);scanf("%d",&f[i]);}
 printf("\n Введите приоритет файла: ");
 for(i=0;i < nf;i++) {printf("Файл %d:",i);scanf("%d",&pri[i]);}
 
             for(int k = 1;k <= nf; k++)
        {
                for(i=0;i < nf - k; i++)
                {
                        if( pri[i] > pri[i + 1] )
                        {
                                pr = pri[i];
                                pri[i] = pri[i + 1];
                                pri[i + 1] = pr;
                                prx = f[i];
                                f[i] = f[i + 1];
                                f[i + 1] = prx;
                        }
 
                }
                printf("\n Расставленные файлы по приоритету на выполнение: ");
                        for ( i= 0; i < nf; i++)
        {
               printf("\nРазмер файла:\tПриоритет файла: ");
               printf("\n%d\t\t%d",f[i],pri[i]);
                        }
 
 
 for(i = 0;i < nf;i++)
 {
  for(j=1;j<=nb;j++)
   {
    if(bf[j]!=1) 
int temp=b[j]-f[i];
    if(highest < temp)
    {
     ff[i]=j;
     highest = temp;
    }
  }
  frag[i]=highest;
  bf[ff[i]]=1;
  highest=0;
 }
 printf("\nНомер файла:\tРазмер файла:\tНомер блока:\tРазмер блока:\tФрагмент");
 for(i=0;I < nf;i++)
 printf("\n%d\t\t%d\t\t%d\t\t%d\t\t%d",i,f[i],ff[i],b[ff[i]],frag[i]);
 getch();
}
}
но из-за этого в основном коде программы творится жуткий кавардак.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru