Перевод с 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);
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы