Перевод с C++ на C# (сохранение точек для построения в Excel)
Формулировка задачи:
Товарищи! Нужно перевести данный код с C++ на C#. В коде (звенья инерционное и запаздывания), сохранение точек для построения в екселе. Кто может?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <alloc.h>
main ()
{
int YS=1, T=200, Tn, Tk, TAU=20, j=1, N;
float X1=0, XR=0, YX=0, Y=0, IT=0, Y1=0, XP, t;
float K0=1, K1=9.51, K2=0.136, HT=0.1, C1, C2;
float *YR;
FILE *file;
file=fopen("laba34.xls","w");
if (file==NULL)
{
clrscr();
perror(file);
getch();
exit(1);
}
clrscr();
puts ("Input Tn:");
scanf("%d",&Tn);
puts ("Input Tk:");
scanf ("%d", &Tk);
N=TAU/HT;
YR=(float*)malloc(N*sizeof(int));
for (j=0; j<=N; j++)
YR[j]=0;
C1=K0/T;
C2=-1/T;
fprintf (file, "t\tY\n");
for (t=Tn; t<=Tk; t+=HT)
{
XP=X1;
X1=YS-Y;
IT=IT+((X1+XP)/2)*HT;
XR=K1*X1+K2*IT;
Y1=C1*XR+C2*YX;
YX=YX+Y1*HT;
Y=YR[j];
YR[j]=YX;
j++;
if (j>N)
j=0;
fprintf (file, "%f\t%f\n", t,Y);
}
free(YR);
fclose(file);
puts ("\n\nFile laba34.xls is created.");
puts ("Press any key.");
getch();
}Решение задачи: «Перевод с C++ на C# (сохранение точек для построения в Excel)»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int YS = 1, T = 200, Tn, Tk, TAU = 20, j = 1, N;
float X1 = 0, XR = 0, YX = 0, Y = 0, IT = 0, Y1 = 0, XP, t;
float K0 = 1, K1 = 9.51f, K2 = 0.136f, HT = 0.1f, C1, C2;
//float* YR;//это основное отличие
float[] YR=null;
StreamWriter file = new StreamWriter("laba34.xls");//тут осторожнее с Mode - возможно нужен другой
try
{
Console.Clear();
Console.Write("Input Tn:");
Tn = Convert.ToInt32(Console.ReadLine());
Console.Write("Input Tk:");
Tk = Convert.ToInt32(Console.ReadLine());
N = (int)(TAU / HT);
//YR = (float*)malloc(N * sizeof(int)); //это основное отличие
YR = new float[N];
for (j = 0; j < N; j++)
YR[j] = 0;
C1 = K0 / T;
C2 = -1 / T;
file.Write("t\tY\n");
j = 0;//этой строки не было в коде, без неё программа упадет
for (t = Tn; t <= Tk; t += HT)
{
XP = X1;
X1 = YS - Y;
IT = IT + ((X1 + XP) / 2) * HT;
XR = K1 * X1 + K2 * IT;
Y1 = C1 * XR + C2 * YX;
YX = YX + Y1 * HT;
Y = YR[j];
YR[j] = YX;
j++;
if (j > N)
j = 0;
file.Write("{0}\t{1}\n", t, Y);
}
file.Close();
Console.WriteLine("\n\nFile laba34.xls is created.");
/*Console.Write("Press any key."); - Это не нужно.. но для полноты перевода...
Console.ReadLine();*/
}
catch (Exception theException)
{
Console.WriteLine(theException.Message);
}
}
}
}