ИЗ с++ в с# помогите плз =\

Поиск временных и постоянных исполнителей.

Модератор: Yurich

Ответить
Faithless
Сообщения: 1
Зарегистрирован: 18 май 2009, 23:05

Подскажите пожалуйста, есть программа, которую очень нужно переделать в С# ) Сама она выглядит вот так (найдено в древней книжке =))

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define RND ((float)rand()/32768.0)
//Функция lg() -> ln(x)
float lg(void)
{ float x, ARG=1e-6;
X=RND; if (x<ARG) x+=ARG;
return log(x);
}
void main()
{
int n[2], np[2], nm[2], nmax, I, j, pp;
float ns[2], nss, TP[2], TW[2], TM, tp[2], tw, t, ts, dt;
static float tqq, tqs[2],tss,tq[2],tqm,st[100] [2],sum[2];
FILE *fp;
fp=fopen(“system.txt”,”w”);
//Ввод варианта моделирования
for (i=o;i<2;i++)
{
printf(“введите TP[%d} : “,i);
scanf (“%f”,&TP[i]);
printf(“введите TW[%d} : “,i);
scanf (“%f”,&TW[i]);
}
printf (“введите время моделирования TW:”)
scanf(“%f”,&TM);
//Печать варианта моделирования
fprintf (fp,”\n\n\t\t ИСХОДНЫЕ ДАННЫЕ “);
fprintf (fp,”\n Интервал времени между заявками: TP[0]=%4.2f”
“TP[1]=4.2f”,TP[0],TP[1]);
fprintf (fp,”\n Среднее время выполнения заявок : TW[0]=%4.2f”
“TW[1]=4.2f”,TW[0],TW[1]);
fprintf (fp,”\n Время моделирования: TM[0]=%6.1f”, TM);
fprintf (fp,”\n\n\t\t РЕЗУЛЬТАТЫ МОДЕЛИРОВАНИЯ “);
// Моделирование а)простая очередь, б) приоритетная очередь
for (pp=0;pp<2;pp++)
{ srand(2501); //инициализация модели
for (j=0;j<2;j++)
{
tp[j]=-TP[j]*lg();
np[j]=n[j]=nm[j]=0;
sum[j]=tq[j]=0.0;
}
t=0.0; tw=TM; nmax=0;
//основной цикл
while (t<TM)
{
if (tp[0]>tp[1]) j=1; //событие
else j=0;
if (tp[j]>tw) ts=tw;
else ts=tp[j];
dt=ts-t; t=ts;
//подведение итогов
for (i=0;i<2;i++)
{
sum[i]+=dt*n[i];
if (n[i]>nm[i]) nm[i]=n[i];
}
if (n[0]+n[1]>nmax)
nmax=n[0]+n[1];
//какое событие?
if (ts==tp[j]) //новая заявка
{
tp[j]-=TP[j]*lg(); np[j]++;
if (tw==TM) tw=t-TW[j]*lg();
else
{
if (n[j]==99)
{
fprintf (fp,”\n очередь переполнена!”);
goto end;
}
st[n[j]++] [j]=t;
}
continue;
}
else //заявка выполнена
{
if (n[0]==0&&n[1]==0) //очередь пуста
{ tw=TM; continue;}
//очередь не пуста, выбираем номер очереди
if (n[0]==0) j=1;
else if(n[1]==0) j=o;
else if(pp) j=0;
else if (st[0][0]<st[0][1]) j=0;
else j=1;
tqq=t-st[0][j]; //время ожидания
if (tqq>tq[j]);
tq[j]=tqq;
tw=t-TW[j]*lg();
for (i=1;i<n[j];i++)
st[i-1][j]=st[i][i]; //сдвиг очереди
n[j]--;
}
}//конец основного цикла
// обработка результатов моделирования
for (j=0;j<2;j++)
{
tqs[j]=sum[j]/np[j];
ns[j]=sum[j]/TM;
}
tss=sum[0]+sum[1])/(np[0]+np[1]);
nss=(sum[0]+sum[1])/TM;
tqm=tq[0]>tq[1]? tq[0]:tq[1];
//печать результатов моделирования
if (pp==0) fprintf (fp,”\n простая очередь”);
else fprintf (fp,”\n\t Приоритетная очередь”);
fprintf (fp,”\n время ожидания”);
fprintf (fp,”\n среднее[0]=%5.2f среднее[1]=%5.2f”
“ среднее=%5.2f”, tqs[0], tqs[1],tss);
fprintf (fp,”\n max [0]=%5.2f max[1]=%5.2f”
“ max=%5.2f”, tq[0], tq[1],tqm);
fprintf (fp,”\n длина очереди: “);
fprintf (fp,”\n средняя[0]=%5.2f средняя[1]=%5.2f”
“ средняя=%5.2f”, ns [0], ns[1],nss);
fprintf (fp,”\n max [0]=%2d max[1]=%2d”
“ max=%2d”, nm[0], nm[1],nmax);
}//конец цикла по типу очереди
end:
fclose(fp);

Хочется получить то же самое, но в С#, кто нибудь подскажет как это можно попроще сделать?
Времени дали вообще в обрез, а я понятия не имею как это сделать -\
Если это оч трудно можно договориться о какой то сумме
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Напиши в decoder@hotbox.ru
Обсудим, договоримся....
Поумнеть несложно, куда труднее от дури избавиться.
Ответить