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

С Паскаля на С++. Реализация модели распределения памяти. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Преобразовать последовательность из n вещественных чисел a1, ..., an. http://www.cyberforum.ru/cpp-beginners/thread533194.html
Ребят подкиньте идей. Дана последовательность из n вещественных чисел a1, ..., an. Преобразовать ее по следующему правилу: а) первый элемент равен первому элементу; б) второй равен max(a1, a2); в) третий - max(a1, a2, a3); . . . . . . . . . . . Добавлено через 1 час 46 минут UP UP!
C++ Поиск корней (включая комплексные) полинома n-й степени Надо прожку на вижуале... чтобы искала все корни (включая комплексные) полинома н-й степени, когада известны коэвициенты... http://www.cyberforum.ru/cpp-beginners/thread533190.html
C++ Использование цикла while и вложенных циклов
1. Используя цикл while, напишите программу, вычисляющую сумму цифр заданного целого числа. Например, суммой цифр числа 2155 будет 2 + 1 + 5 + 5 = 13. Для выделения цифр используйте остатки от последовательного деления числа на 10. 2. Используя вложенные циклы, напишите программу, выводящую на экран «полуелочку» из звездочек:* * * * * * * * * * * * * * * * * * *
C++ Найти минимальный из локальных максимумов массива
// Array 35.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iomanip> #include <Windows.h> using namespace std; int Array35(int*x,int n,); void main(){ int min=INT_MAX;
C++ минимизация функции http://www.cyberforum.ru/cpp-beginners/thread533151.html
сделать с помощью карт карно у меня не получается, слышал можно использовать дерево и рекурсии. знаете ещё какие нибудь способы и как их реализовать?
C++ Сохранение страниц сайтов в формате html привет,ребят кто может помочь написать такую штуку,у нас есть файлик url.txt там адреса сайтов, скрипт ходит по адресам сайтов указанных в url.txt и сохраняет страницы этих сайтов в формате html. подробнее

Показать сообщение отдельно
_LenOk_
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 6
28.03.2012, 22:37     С Паскаля на С++. Реализация модели распределения памяти.
Задание. Программа реализация модели распределения памяти перемещаемыми разделами.

Pascal
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Program Model_raspredelenia_pameati;
 uses crt;
 const n=10;
 type massiv=array[1..n] of integer;
 Label L1,L2,L3;
 Var A:massiv;   y:string;   i,j,k,g,sum,w,x :integer;
 begin
 clrscr; randomize; {включение генератора случайных чисел }   
 writeln('pameat polnosteu svobodna'); {вывод на экран сообщения'pameat polnosteu svobodna'} 
 for i:=1 to n do
 begin
 A[i]:=256; {присваивание каждому элементу массива А 256 Мб свободной памяти} 
writeln(A[i]); {вывод на экран массива А} 
end;   readln(y);
L1:   sum:=0; {присваивание сумме свободной памяти значение  о}
         for i:= 1 to n do
         sum:=sum+A[i];
         j:=round(random*512); {загрузка  процесса со случайным размером от 0 до 512Мб  в память, j присваиваются значения памяти, занимаемой процессом  }  
         if j>sum then goto L2; {если j>sum то выводится сообщение: 'Mesta dlea zagruzki ne dostatochno  process postavlen v ochered'}
    x:=1;
   for i:= 1 to n do
   begin
   if A[i]=0 then x:=x+1;    end;
  k:=round(random(n-1-x))+x; {k присваивается произвольный номер массива, куда записывается процесс при условии ,что процесс не может записаться в ячейку, следующую сразу после полностью заполненной}
         writeln('process obemom ', j , 'Mb'); {вывод сообщения- 'process obemom ', j , 'Mb' }
         if k=0 then k:=1;
        if (j>256) and (k=n) {если размер пришедшего в ячейку памяти процесса больше, чем ее максимальный объем (т.е 256Мб), то выполняются идущие ниже действия}
    then k:=n-1;
        A[k]:=A[k]-j; {присваиваем ячейке, куда пришел процесс значение оставшейся свободной памяти в ячейки после вычета из нее занимаемой процессом памяти}
        while A[k]<0 do {пока свободная память в занимаемой ячейки массива будет иметь отрицательное значение выполняются идущие ниже действия}
begin
 g:=A[k]; {g присваивается значение свободной памяти в ячейке , куда загрузился процесс}
 A[k]:=0; {ячейке, в которую пришел процесс присваивается значение равное о }
 k:=k+1; 
A[k]:=A[k]+g; {к памяти соседней ячейки с ячейкой, в которую загрузился процесс, прибавляется оставшееся  отрицательное значение памяти процесса}
end;
writeln('zagruzka novogo processa'); {вывод текстового сообщения 'zagruzka novogo processa'}
for i:=1 to n do
begin
writeln(A[i]); {вывод массива А  с загруженным процессом }
end;
for w:=1 to 2 do
begin
 i:=1;
while i <> n do {пока текущий номер элемента массива не равен последнему выполняются идущие ниже действия }
begin
 if (A[i] <> 256) then  {если текущий элемент массива является тем , в который уже загрузился процесс (частично или полностью), то выполняются идущие ниже действия}
 begin
 g:=i;
 while g <> 1 do  {пока текущий номер элемента в массиве не будет равен первому выполняются идущие ниже действия}
 begin
 if A[g-1] <> 256 then do  {если  значение соседнего элемента, с элементом куда загружался процесс не равно 256 , то  выполняются идущие ниже действия}
 begin
 if A[g-1] > 256 - A[g] then {если памяти соседней ячейки хватает, чтобы записать процесс, то  выполняются идущие ниже действия}
 begin
 k:=A[g-1] {k - присваиваем значение свободной памяти соседней ячейки}
A[g-1]:=k - 256 + A[g]; {сдвигаем ячейки , куда загрузился процесс,сжимая при этом процессы , с оставшейся от вычитания свободной памятью}
 A[g]:=A[g+1];
 end
 else    begin
 k:=A[g]; {k - присваиваем значение свободной памяти ячейки, куда загрузился процесс}
A[g]:=k + A[g-1]; {сдвигаем ячейки , куда загрузился процесс,сжимая при этом процессы , с оставшейся от вычитания свободной памятью}
 A[g-1]:=0;
  end;
  end
  else
  begin
 A[g-1]:=A[g]; ]; {сдвигаем ячейки , куда загрузился процесс,сжимая при этом        процессы , с оставшейся от вычитания свободной памятью}
 A[g]:=A[g+1];
 A[g+1]:=A[g+2];
  end;
  g:=g-1;
  end;
  end; 
  i:=i+1;
  end;
   end;
  Writeln('posle sdviga i sgatiea'); ); {вывод текстового сообщения 'posle sdviga i sgatiea'}
  for i:=1 to n do
   begin
  writeln(A[i]); {вывод массива А  после сдвига и сжатия его элементов}
   end;
  Writeln('zagruzit eshe proces y/n'); ); {вывод текстового с предложением загрузить новый процесс}
   readln(y); {ввод строки символов}
  if y='y' then {если вводимый символ является 'y', то выполняется метка1( т.е   ввод нового процесса , сдвиг и сжатие), иначе осуществляется выход из программы}
  begin
  goto L1
  end
  else
  begin
  goto L3;
  end;
L2: writeln('process obemom ', j , 'Mb') ;
 writeln('Mesta dlea zagruzki ne dostatochno  process postavlen v ochered');
L3: readln;
end.
Добавлено через 2 минуты
P.S. еще я не знаю как сделать, чтобы поступаемые на выполнение задачи содержались в файлах, которые пользователь мог бы загружать в моделируемую память и выгружать из нее.

Добавлено через 1 час 3 минуты
плиззз...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru