0

数字の配列(必須)とint時間(オプション)を使用して、cmdからプログラムを呼び出す必要があります。私はこれをやったことがないので、詳細については少し不安定です。

パスはD:\Robert\FactorialConsoleApplication\FactorialConsoleApplication\bin\Debug\FactorialConsoleApplication.exe

ご覧のとおり、プログラムは配列内の数値の階乗を計算します。int 時間は、スタックの進行状況を表示するための遅延として使用されます。

パラメータを指定してプログラムを呼び出すにはどうすればよいですか? 前もって感謝します!

PSここにコードの一部があります

class Program
{
    public static void Progress(ProgressEventArgs e)
    {
        int result = e.getPartialResult;
        int stack_value = e.getValue ;
        double max = System.Convert.ToDouble(numbers[j]);
        System.Convert.ToDouble(stack_value);
        double percent = (stack_value / max) * 100;

        Console.CursorLeft = 18;
        Console.Write(result + " ");
        Console.CursorLeft = 46;
        Console.Write(System.Convert.ToInt32(percent) + "%      ");

    }
    public static void Calculate(int number, int time=0)
    {

        Factorial Fact = new Factorial();
        Fact.Progression += new Factorial.ProgressEventHandler(Progress);
        Console.Write("\n" + "Partial results : ");
        Console.CursorLeft = 35;
        Console.Write("Progress : ");         
        int Result = Fact.CalculateFactorial(number, time);
        Console.WriteLine(" ");
        Console.WriteLine("The factorial of " + number + " is : " + Result);


        Console.ReadLine();
    }

    static int j;
    static int[] numbers;


    public static void Main(string[] args)
    {
        int i=0;
        bool ok = false;
        string line = string.Empty;
        numbers = new int[10];
        Console.Write("Please insert wait time (0,1 or 2) : ");
        int time = int.Parse(Console.ReadLine()) * 1000;
        Console.Write("Please insert a number : ");
        do
        {
            line = Console.ReadLine();
            if (line != "")
            {
                i++;
                numbers[i] = int.Parse(line);


            }
            else
            {
                ok = true;
            }
        }
        while (ok == false);
        for (j = 1; j <= i; j++)
        {

            Calculate(numbers[j],time);
        }

    }
}
4

2 に答える 2

0

.netでは、System.Diagnostics からProcess.Startを使用してアプリケーションを起動できます。パラメーターも渡すことができます。

たとえば、Process.Start("IExplore.exe", "C:\\myPath\\myFile.htm");Internet Explorer を開き、値をパラメータとして渡します。より多くの例については、 Process.Start メソッド"C:\\myPath\\myFile.htm"に関する MSDN の記事を確認してください。

更新 アプリケーションにパラメーターを取得する場合、それ自体を起動するときに何もする必要はありません。すでにそれを行っています。 Main メソッドのパラメーター引数は、アプリケーションに渡された引数を保持します。試してみてください。 args 配列内のこれらの値を int 配列に解析すると、準備完了です。

于 2012-08-01T12:43:28.903 に答える
0

わかりましたので、ここに解決策があります。

私は次のようなargsパーサーを使用しました:

static int extra;
    public static void Main(string[] args)
    {

        foreach (string s in args)
        {
            extra = int.Parse(s);


            Calculate(extra);
        }
     }

そして、私は :double max = System.Convert.ToDouble(numbers[j]); を :に変更しましたdouble max = System.Convert.ToDouble(extra);

それを呼び出すには、exe があるディレクトリで cmd を開き、次のように入力します。

プログラム.exe 3 4 5

それぞれ3、4、5の階乗を計算します

于 2012-08-02T06:18:51.960 に答える