0

Задание было очень простое: параметр а меняет значения от 1.25 до 2 с шагом 0.25, а x от -2 до 2 с шагом 0.1. В файле с результатами ужас какой-то... Все дело в представлении чисел, но как исправить-не знаю.

using System;
using System.Collections.Generic;
using System.IO;

namespace тимп_1._2_часть_2 { class Program { static void Main(string[] args) { StreamWriter p = new StreamWriter("rez.txt"); float a, x, y2; p.WriteLine(" РЕЗУЛЬТАТЫ РАСЧЕТА"); for (a=1; a<=2; a +=0.25f) { p.WriteLine(" а= " + a); for (x = -2; x <= 2; x += 0.1f) { y2 = (float)((1 - Math.E* ((-1) * Math.Pow((x / a), 2))) / a); p.WriteLine(" x= " + x + '\t' + " y= " + y2); } } p.Close(); } } }

мы учимся делать вложенные циклы, в файле просто выводятся значение a, потом все значения х и по формуле считается y во вложенном циклае и так для каждого увеличения а. Мы смотрим на результаты в файле, но у меня они там неровные какие-то, например: вместо х=1,7 после очередной итерации получается число 1,6999999, а не 1,7, и, соответвенно, значения y тоже кривые...

для а=1 x= -1,8 y= 9,807233, а вот при том же а: x= -1,699997 y= 8,855834, а x по циклу должен быть 1,7

aepot
  • 49,560

1 Answers1

2
  • ToString отформатирует число (ссылка).
  • PadLeft сделает нужный отступ (ссылка).
  • Учитесь сразу правильно работать с IDisposable объектами, которым является StreamWriter - using.
  • Интерполяция строк позволяет удобнее форматировать строки, делает код короче.
using StreamWriter sw = new StreamWriter("rez.txt");
sw.WriteLine("РЕЗУЛЬТАТЫ РАСЧЕТА");
for (float a = 1; a <= 2; a += 0.25f)
{
    sw.WriteLine("а = " + a);
    for (float x = -2; x <= 2; x += 0.1f)
    {
        float y = (1 + MathF.E * MathF.Pow(x / a, 2)) / a;
        sw.WriteLine($"x = {x,4:F1} y = {y,4:F1}");
        //sw.WriteLine("x = " + x.ToString("F1").PadLeft(4) + " y = " + y.ToString("F1").PadLeft(4));
    }
}

Вывод в файл

РЕЗУЛЬТАТЫ РАСЧЕТА
а = 1
x = -2,0 y = 11,9
x = -1,9 y = 10,8
x = -1,8 y =  9,8
x = -1,7 y =  8,9
x = -1,6 y =  8,0
x = -1,5 y =  7,1
x = -1,4 y =  6,3
x = -1,3 y =  5,6
x = -1,2 y =  4,9
x = -1,1 y =  4,3
...
aepot
  • 49,560