I have the following code. when I run the code I have to one by one input fx,ft,apha,m,n. After I run the code:
Y
10
0.5
1
10
50
Code works with this way.
I writed to a file called "d:\\a.txt" this values(that is upper values).I tried to work the code by showing the file path but Code isn't works.
Orginal code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace hard
{
class Program
{
static void Main(string[] args)
{
Program app = new Program();
}
Program()
{
bool ok = false
double[] w = new double[25];
double[] l = new double[25];
double[] u = new double[25];
double[] z = new double[25];
double ft = 0.0, fx = 0.0, alpha = 0.0, h = 0.0, k = 0.0, vv = 0.0, t = 0.0, x = 0.0;
int n = 0, m = 0, m1 = 0, m2 = 0, n1 = 0, flag = 0, i1 = 0, i = 0, j = 0 ;
input(ref ok,ref fx,ref ft,ref alpha,ref n,ref m);
if (ok)
{
m1 = m - 1;
m2 = m - 2;
// n1 = n - 1;
/* step 1 */
h = fx / m;
k = ft / n;
vv = alpha * k / (h * h);
/* step 2 */
for (i = 1; i <= m1; i++) w[i - 1] = F(i * h);
/* step 3 */
l[0] = 1.0 - 2.0 * vv;
u[0] = vv / l[0];
/* step 4 */
for (i = 2; i <= m2; i++)
{
l[i - 1] = 1.0 - 2.0 * vv - vv * u[i - 2];
u[i - 1] = vv / l[i - 1];
}
/* step 5 */
l[m1 - 1] = 1.0 - 2.0 * vv - vv * u[m2 - 1];
/* step 6 */
for (j = 1; j <= n; j++)
{
/* step 7 */
/* current t(j) */
// t = j * k;
z[0] = w[0] / l[0];
/* step 8 */
for (i = 2; i <= m1; i++)
z[i - 1] = (w[i - 1] - vv * z[i - 2]) / l[i - 1];
/* step 9 */
w[m1 - 1] = z[m1 - 1];
/* step 10 */
for (i1 = 1; i1 <= m2; i1++)
{
i = m2 - i1 + 1;
w[i - 1] = z[i - 1] - u[i - 1] * w[i];
}
}
/* step 11 */
output(ft, x, m1,ref w, h);
}
}
private double F(double X)
{
double f;
f = 0.3061 * X * X -2.1286*X+38.11;
return f;
}
private void input(ref bool ok,ref double fx, ref double ft, ref double alpha, ref int n, ref int m )
{
Console.Write("Has the function F been created immediately (Y/N) : ");
string sonuc = Console.ReadLine();
if (sonuc.ToUpper() == "Y")
{
Console.WriteLine("The lefthand endpoint on the X-axis is 0.");
ok = false;
while (!ok)
{
Console.Write("Input the righthand endpoint on the X-axis: ");
fx = Convert.ToDouble(Console.ReadLine());
if (fx < 0.0)
Console.WriteLine("Must be positive number.");
else
ok = true;
}
ok = false;
while (!ok)
{
Console.Write("Input the maximum value of the time variable T : ");
ft = Convert.ToDouble(Console.ReadLine());
if (ft < 0.0)
Console.WriteLine("Must be positive number.");
else
ok = true;
}
Console.Write("Input the constant alpha: ");
alpha = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Input integer m = number of intervals”);
Console.WriteLine("input N = number of time intervals");
Console.WriteLine("Note :must be m>3 ve n>0 ");
ok = false;
while (!ok)
{
Console.Write("m (>3) = ");
m = Convert.ToInt32(Console.ReadLine());
Console.Write("n (>0) = ");
n = Convert.ToInt32(Console.ReadLine());
if (m <= 2 || n <= 0)
{
Console.WriteLine("Numbers are not within correct range.");
}
else
{
ok = true;
}
}
}
else
{
Console.WriteLine("The program will end so that the function F can be created.");
ok = false;
}
}
public void output(double ft, double x, int m1, ref double[] w, double h)
{
System.IO.StreamWriter oup;
System.IO.TextWriter tmp = Console.Out;
Console.WriteLine("Choice of output method.");
Console.WriteLine("1. Output to screen");
Console.WriteLine("2. Output to text file");
int flag = Convert.ToInt32(Console.ReadLine());
if (flag == 2)
{
Console.WriteLine("Sample: D:\\1.txt");
string name = Console.ReadLine();
try
{
oup = new System.IO.StreamWriter(name);
Console.SetOut(oup);
write(ft, x, m1, ref w, h);
oup.Close();
}
catch (System.IO.IOException expc)
{
Console.WriteLine(expc.Message + " file dont extract.");
}
}
else
{
write(ft, x, m1, ref w, h);
}
}
private void write(double ft, double x, int m1, ref double[] w, double h)
{
Console.WriteLine("I\tX(I)\tW(X(I),{0:#.#})", ft);
for (int i = 1; i <= m1; i++)
{
x = i * h;
Console.WriteLine("{0:#.##}\t{1:#.###}\t\t{2:#.###}", i, x, w[i - 1]);
}
}
}
}