Лабораторна робота №4(1)
.docxТехнічний коледж
НУ "Львівська політехніка"
Лабораторна робота №4 З ОС
Студент групи 31КІ Мартинюк Р.
Викладач
Різник О. Я.
Львів 2020
Мета: Створення алгоритму організації сегментів.
Код програми:
package com.company;
public class Main {
public static void main(String[] args)
{
printOut result = new printOut();
result._print();
}
}
package com.company;
import java.util.Scanner;
public class getProgsSegmentCount
{
public int[] segments = new int[100];
public int[] progs = new int[100];
public int[] progs_numb = new int[100];
public int i;
public Scanner sc = new Scanner(System.in);
private int size = 100;
private int cnt;
private int j;
void _get ()
{
i=0;
while (size!=0)
{
System.out.println("Максимальна кількість сегментів = " + size);
System.out.print("Кількість сегментів програми №" + (i+1) + " = ");
if (sc.hasNextInt())
{
cnt = sc.nextInt();
if (cnt == 0) break;
else
{
if (cnt <= size)
{
progs[i]=cnt;
size-=cnt;
i++;
}
else
{
System.out.println();
cnt = 0;
System.out.println("Введена кількість сегментів завелика - програма не поміститься у пам'ять\n");
}
}
} else System.out.println("Ви ввели не число");
}
}
}
public class printOut
{
private int i;
private segmentOrganizer SO = new segmentOrganizer();
public void _print()
{
SO.organize();
System.out.println("\nСписок сегментів і їх номерів програм");
for (i = 0; i < SO.i; i++)
{
System.out.printf("Сегмент №%3d - програма №%3d\n", i+1, SO.data.progs_numb[i]);;
}
System.out.println("Кількість сегментів = " + i + "\n" + "Кількість процесів = " + SO.data.progs_numb[i-1]);
}
}
public class segmentOrganizer {
public getProgsSegmentCount data = new getProgsSegmentCount();
//кількість сегментів для printOut
public int i;
private int k = 0;
private int size = 0;
public void organize() {
data._get();
for (i = 0; i < data.i; i++) size += data.progs[i];
i = 0;
while (size > 0)
{
if (data.progs[k] > 0)
{
data.segments[i] = 1;
data.progs_numb[i] = k+1;
data.progs[k]-=1;
size-=1;
i++;
}
else k++;
}
}
}
Результати: