Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2010, 22:47   #1
aurora_87
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 16
По умолчанию массивы в си

Задача: даны периоды времени t1,t2,…tn, необходимые для выполнения n программ.
Нужно реализовать следующий пример:
n=3
период мультиплексирования =4 ед. времени
периоды времени: t1=4, t2=7, t3=8

На первом шаге очередь имеет вид: 8 7 4.
После предоставления кванта времени первой проге она из очереди выбывает, так как успевает за это время выполниться и очередь имеет вид: 8 7.
Затем время центр.процессора предоставляется следующей программе. Выполниться за 4 ед. времени она не успевает и помещается в конец очереди, при этом уменьшается время, необходимое на ее выполнение.
3 8.
После следующего шага: 4 3.
Очередная программа выбывает из очереди: 4.
Алгоритм заканчивает работу, когда очередь станет пустой, т.е. все программы выполнятся.
Я сделала в массивах, но у меня что-то неправильно работает, не выполняется этап: 4 3.
Код:
#include <stdio.h>
#include <conio.h>
#define N 10
void main()
{
int a[N];
int t,n;
int i,j,s,d;
clrscr();
printf("\nVvedite kolichestvo programm: ");
scanf("%d",&n);
printf("\nVvedite period myltiplecsirovania: ");
scanf("%d",&t);
printf("\nVvedite periody vremeny:\n");
for(i=0;i<n;i++)
scanf("\n%d",&a[i]);

for(i=n-1;i>=0;i--)
{
if((a[i]==t)||(a[i]<t))
  {
    for(j=i;j<n-1;j++)

       a[j]=a[j+1];

    n--;

    printf("\n\n");
    for(i=0;i<n;i++)
    printf("\n%d",a[i]);
    printf("\n\n");
  }

else
 if (a[i]>t)
 {

   a[i]=a[i]-t;
   for(j=i;j>=0;j--)
   {  a[j+1]=a[j];
     printf("\n%d",a[j]);

   }
   printf("\n\n");
   a[0]=a[j+1];


 }

}
printf("\n\n");
for(i=0;i<n-1;i++)
printf("\n%d",a[i]);
}
aurora_87 вне форума Ответить с цитированием
Старый 02.04.2010, 15:29   #2
kramarew
Новичок
Джуниор
 
Регистрация: 01.04.2010
Сообщений: 1
По умолчанию re

Не менее кривой но тем не менее рабочий код)))


Код:
#include <stdio.h>
#define N 10


void print_array(int ar[N],int col);// ф-ция печать масива
int array_sum(int ar[N], int col);//ф-ция сума всех элементов, нужна как индикатор выполнения операций

int main()
{
	int i,n,per,sum;
	int queue[N]; //Массив с временем выполнения		

	printf("\n 10<n= "); // кусок кода для инициализации переменных
	scanf("%d", &n);	// количество задач
	printf("\n per= ");	// размер кванта
	scanf("%d", &per);
	
	for(i=0;i<n;i++)  // наполнение массива
	{
		printf("\nEnter runtime t%d= ",i+1);
		scanf("%d", &queue[i]);
	}

	print_array(queue,n);
	sum=array_sum(queue,n);// вот этот индикатор
	printf("%d\n",sum);
	while (sum != 0)   
	{
		i=0;
		while (i<n)
		{
			if(queue[i]==0)  // увеличиваем счетчик если и-тый элемент=0 для перехода к 
			i++;		// след. элементу
			queue[i]-=per;
			if (queue[i]<0)	//если после отнимания кванта элемент менше 0 
			queue[i]=0;	// присваиваем ему 0
			print_array(queue,n); // печать
			if (!array_sum(queue,n)) // если сумма элементов 0 то брейкаем внутренний цикл
			break;
			i++;
		}
		sum=array_sum(queue,n);
	}
	
	return 0;

}

int array_sum(int ar[N],int col)
{
	int j,count=0;
	for(j=0;j<col;j++)
	count+=ar[j];
	return count;
}

void print_array (int ar[N],int col)
{
	int j;
	for(j=col-1;j>=0;j--)
        {
             if(ar[j]!=0)   
             printf("%d\t", ar[j]);
		
        }
	printf("\n");
}

Последний раз редактировалось kramarew; 02.04.2010 в 17:22.
kramarew вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
Массивы Student117 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 25.11.2009 22:26