VS C# Баг в консоли

Рейтинг: 0Ответов: 0Опубликовано: 15.03.2023

Написал программу на C#, которая создаёт два файла с N случайными вещественными числами. Вывожу их на консоль через запуск без отладки (ctrl + F5). Выводит какой-то бред: где-то исчезает ряд чисел, где-то вывод повторяется. Запускаю с отладкой, такого бага нет.

В интернете даже подобной проблемы не нашёл. Баг возникал и раньше, когда был длинный вывод с разными матрицами, так что от кода не зависит.

Помогите, пожалуйста, разобраться.

Прилагаю скрины вывода с отладкой/без отладки. запуск с отладкой запуск без отладки

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HomeWork4
{
    internal class htaskfilesbin
    {
        // Сформировать бинарный файл из N случайных вещественных чисел в диапазоне от a до b (a ≤ b).
        // Назначьте значения по умолчанию для параметров подпрограммы: N = 20, a = –50, b = 50.
        static void WriteDoubleFile(string path, int N = 20, int a = -50, int b = 50)
        {
            Debug.Assert(path != null);
            Debug.Assert(N >= 0);
            Debug.Assert(a <= b);
            using (var fs = File.Create(path))
            using (var bw = new BinaryWriter(fs))
            {
                Random rand = new Random();
                for (int i = 0; i < N; i++)
                {
                    bw.Write(rand.Next(a * 100, b * 100) / 100.0);
                }
            }
        }
        
        static void OutputDoubleFile(string file)
        {
            try
            {
                using (var fs = File.Open(file, FileMode.Open))
                using (var br = new BinaryReader(fs))
                {
                    var sz = br.BaseStream.Length / sizeof(double);
                    try
                    {
                        for (var i = 0; i < sz; i++)
                        {
                            Console.WriteLine(br.ReadDouble());
                        }
                    }
                    catch (IOException e)
                    {
                        Console.WriteLine($"Ошибка чтения файла: {e.Message}");
                    }
                }
            }
            catch (FileNotFoundException e)
            {
                Console.WriteLine($"Ошибка чтения файла: {e.Message}");
            }
        }
        
        static void Main(string[] args)
        {
            Console.WriteLine("Задание 3: ");
            WriteDoubleFile(@"input-files\task03.1.dat");
            WriteDoubleFile(@"input-files\task03.2.dat");
            Console.WriteLine("Первый файл: ");
            OutputDoubleFile(@"input-files\task03.1.dat");
            Console.WriteLine("Второй файл: ");
            OutputDoubleFile(@"input-files\task03.2.dat");
            Console.ReadLine();
        }
    }
}

Ответы

Ответов пока нет.