Определить где в файле больше нулей - на четных или на нечетных позициях? - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Задача такая: дан файл целых чисел. Определить где больше НУЛЕЙ - на четных или на нечетных позициях. Вроде разобрался с BinaryWriter и Reader. Вот мой код
using System;
using System.IO;
using System.Text;

namespace proga
{
    class Program
    {
             static void Read(string path) {
                 
            BinaryReader read = new BinaryReader(File.Open(path,FileMode.Open));
            int x1 = read.ReadInt32();
            
            int d1 = 0;
            int d2=0;
            while (read.PeekChar() != -1)
            {
// вот тут мой недоалгоритм...
           /*     if (x1 % 2 == 0 && x1 == 0)
                {
                    d1 += d1 + 1;
                }
                if (x1%2==1&&x1==0) {
                    d2 += d2 + 1;
                }
            */
 
            }
            
        }
 
        static void Information(string path) {
            BinaryReader read1 = new BinaryReader(File.Open(path, FileMode.Open));
            while (read1.PeekChar() != -1)
            {
 
                Console.WriteLine("{0,4}",read1.Read());
 
            }
            read1.Close();
        } //выводим содержимое нашего файла
        static void Create(int x) {
            try
            {
                Random rand = new Random();
                string path =@"D:\proga\note0.dat";//путь
                BinaryWriter write = new BinaryWriter(File.Open(path, FileMode.OpenOrCreate));
                
                    for (int i = 0; i < 20; i++)
                    {
                        x = rand.Next(0,50);
                        write.Write(x);
                    }
                    write.Close();//закрЫваем наш поток
                             
                Information(path);
                Read(path);
            }
            catch (Exception e) {
                Console.WriteLine(e.Message);
            }
        }
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("***");
                Create(0);
                               
            }
            catch (Exception e) {
                Console.WriteLine(e.Message);
            }
        }
    }
}
с помощью while я прохожусь по файлу,но не могу понять как найти парные и непарные,ведь это не массив.. как обратиться к элементу 1 если он записан как 2 0 0 0 к примеру,там где 4 байта. Помогите пожалуйста: Просто если был бы такой массив целых чисел я бы сделал for а в нём if(array[i]%2==0&&array[i]==0) и т.д. а как сделать тут. Прошу помощи. Спасибо заранее!

Решение задачи: «Определить где в файле больше нулей - на четных или на нечетных позициях?»

textual
Листинг программы
using System;
using System.IO;
using System.Text;
 
 
namespace proga
{
    class Program
    {
             static void Read(string path) {
                 
            BinaryReader read = new BinaryReader(File.Open(path,FileMode.Open));
            int temp;
            int i = 0;
            int s1 = 0;
            int s2 = 0;
            while (read.PeekChar() != -1)
            {               
                i++;
                temp = read.ReadInt32();
                
                if (i%2==1&&temp==0) {
                    s1 += 1;
                }
                if (i%2==0&&temp==0)
                {
                    s2 += 1;
                }
            }
            read.Close();
            if (s1 > s2)
            {
                Console.WriteLine("На парных позициях больше");
            }
            else if (s1<s2)
            {
                Console.WriteLine("На непарных больше");
            }
            
        }
 
        static void Information(string path) {
            BinaryReader read1 = new BinaryReader(File.Open(path, FileMode.Open));
            while (read1.PeekChar()!= -1)
            {
 
                Console.WriteLine("{0,4}",read1.ReadInt32());
 
            }
            read1.Close();
        } //выводим содержимое нашего файла
        static void Create(int x) {
            try
            {
                Random rand = new Random();
                string path =@"D:\proga\random2.dat";//путь
                BinaryWriter write = new BinaryWriter(File.Open(path, FileMode.OpenOrCreate));
                
                    for (int i = 0; i < 20; i++)
                    {
                        x = rand.Next(0,6);
                        write.Write(x);
                    }
                    write.Close();//закрЫваем наш поток
                             
                Information(path);
                Read(path);
            }
            catch (Exception e) {
                Console.WriteLine(e.Message);
            }
        }
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("***");
                Create(0);
                               
            }
            catch (Exception e) {
                Console.WriteLine(e.Message);
            }
        }
    }
}

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


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

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

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