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

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

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

Добрый день! Задача такая: дан файл целых чисел. Определить где больше НУЛЕЙ - на четных или на нечетных позициях. Вроде разобрался с BinaryWriter и Reader. Вот мой код
Листинг программы
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4.  
  5. namespace proga
  6. {
  7. class Program
  8. {
  9. static void Read(string path) {
  10. BinaryReader read = new BinaryReader(File.Open(path,FileMode.Open));
  11. int x1 = read.ReadInt32();
  12. int d1 = 0;
  13. int d2=0;
  14. while (read.PeekChar() != -1)
  15. {
  16. // вот тут мой недоалгоритм...
  17. /* if (x1 % 2 == 0 && x1 == 0)
  18. {
  19. d1 += d1 + 1;
  20. }
  21. if (x1%2==1&&x1==0) {
  22. d2 += d2 + 1;
  23. }
  24. */
  25. }
  26. }
  27. static void Information(string path) {
  28. BinaryReader read1 = new BinaryReader(File.Open(path, FileMode.Open));
  29. while (read1.PeekChar() != -1)
  30. {
  31. Console.WriteLine("{0,4}",read1.Read());
  32. }
  33. read1.Close();
  34. } //выводим содержимое нашего файла
  35. static void Create(int x) {
  36. try
  37. {
  38. Random rand = new Random();
  39. string path =@"D:\proga\note0.dat";//путь
  40. BinaryWriter write = new BinaryWriter(File.Open(path, FileMode.OpenOrCreate));
  41. for (int i = 0; i < 20; i++)
  42. {
  43. x = rand.Next(0,50);
  44. write.Write(x);
  45. }
  46. write.Close();//закрЫваем наш поток
  47. Information(path);
  48. Read(path);
  49. }
  50. catch (Exception e) {
  51. Console.WriteLine(e.Message);
  52. }
  53. }
  54. static void Main(string[] args)
  55. {
  56. try
  57. {
  58. Console.WriteLine("***");
  59. Create(0);
  60. }
  61. catch (Exception e) {
  62. Console.WriteLine(e.Message);
  63. }
  64. }
  65. }
  66. }
с помощью while я прохожусь по файлу,но не могу понять как найти парные и непарные,ведь это не массив.. как обратиться к элементу 1 если он записан как 2 0 0 0 к примеру,там где 4 байта. Помогите пожалуйста: Просто если был бы такой массив целых чисел я бы сделал for а в нём if(array[i]%2==0&&array[i]==0) и т.д. а как сделать тут. Прошу помощи. Спасибо заранее!

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

textual
Листинг программы
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4.  
  5.  
  6. namespace proga
  7. {
  8.     class Program
  9.     {
  10.              static void Read(string path) {
  11.                  
  12.             BinaryReader read = new BinaryReader(File.Open(path,FileMode.Open));
  13.             int temp;
  14.             int i = 0;
  15.             int s1 = 0;
  16.             int s2 = 0;
  17.             while (read.PeekChar() != -1)
  18.             {              
  19.                 i++;
  20.                 temp = read.ReadInt32();
  21.                
  22.                 if (i%2==1&&temp==0) {
  23.                     s1 += 1;
  24.                 }
  25.                 if (i%2==0&&temp==0)
  26.                 {
  27.                     s2 += 1;
  28.                 }
  29.             }
  30.             read.Close();
  31.             if (s1 > s2)
  32.             {
  33.                 Console.WriteLine("На парных позициях больше");
  34.             }
  35.             else if (s1<s2)
  36.             {
  37.                 Console.WriteLine("На непарных больше");
  38.             }
  39.            
  40.         }
  41.  
  42.         static void Information(string path) {
  43.             BinaryReader read1 = new BinaryReader(File.Open(path, FileMode.Open));
  44.             while (read1.PeekChar()!= -1)
  45.             {
  46.  
  47.                 Console.WriteLine("{0,4}",read1.ReadInt32());
  48.  
  49.             }
  50.             read1.Close();
  51.         } //выводим содержимое нашего файла
  52.         static void Create(int x) {
  53.             try
  54.             {
  55.                 Random rand = new Random();
  56.                 string path =@"D:\proga\random2.dat";//путь
  57.                 BinaryWriter write = new BinaryWriter(File.Open(path, FileMode.OpenOrCreate));
  58.                
  59.                     for (int i = 0; i < 20; i++)
  60.                     {
  61.                         x = rand.Next(0,6);
  62.                         write.Write(x);
  63.                     }
  64.                     write.Close();//закрЫваем наш поток
  65.                              
  66.                 Information(path);
  67.                 Read(path);
  68.             }
  69.             catch (Exception e) {
  70.                 Console.WriteLine(e.Message);
  71.             }
  72.         }
  73.         static void Main(string[] args)
  74.         {
  75.             try
  76.             {
  77.                 Console.WriteLine("***");
  78.                 Create(0);
  79.                                
  80.             }
  81.             catch (Exception e) {
  82.                 Console.WriteLine(e.Message);
  83.             }
  84.         }
  85.     }
  86. }

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


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

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

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы