Перевод с 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); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д