Switch Case производит итерацию по всему массиву - C#

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

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

Всем здравствуйте! Столкнулся с очень странной проблемой: есть матрица 10 строк, 3 столбца. Матрица заполняется char'ами, далее идет такая штука:
Листинг программы
  1. for (int j = 0; j < 3; j++)
  2. for (int i = 0; i < matrix.Count; i++)
  3. switch (matrix[i][j])
  4. {
  5. case 'w':
  6. matrix[i][j] = 'W';
  7. matrix[i + 1][j] = 'Z';
  8. break;
  9. case 'j':
  10. matrix[i][j] = 'J';
  11. matrix[i + 1][j] = 'Z';
  12. break;
  13. case 'd':
  14. matrix[i][j] = 'D';
  15. matrix[i + 1][j] = 'Z';
  16. break;
  17. }
В итоге получаю из вот такой: e-e-e e-w-e e-e-d e-e-e e-e-e e-e-e такую: e-Z-e e-W-e e-e-D e-Z-Z e-Z-Z e-Z-Z пробовал switch()case менять на if-ы, проблема остается. Вообще не понятно как такое получается, может быть поможет кто?

Решение задачи: «Switch Case производит итерацию по всему массиву»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace ConsoleApplication26 {
  5.     class Program {
  6.         static void Main(string[] args) {
  7.             var matrix = new List<char[]> {
  8.                 new[] { 'e', 'e', 'e' },
  9.                 new[] { 'e', 'w', 'e' },
  10.                 new[] { 'e', 'e', 'd' },
  11.                 new[] { 'e', 'e', 'e' },
  12.                 new[] { 'e', 'e', 'e' },
  13.                 new[] { 'e', 'e', 'e' },
  14.             };
  15.  
  16.             // копипаста
  17.             for (int j = 0; j < 3; j++)
  18.                 for (int i = 0; i < matrix.Count; i++)
  19.                     switch (matrix[i][j]) {
  20.                         case 'w': {
  21.                                 matrix[i][j] = 'W';
  22.                                 matrix[i + 1][j] = 'Z';
  23.                                 break;
  24.                             }
  25.                         case 'j': {
  26.                                 matrix[i][j] = 'J';
  27.                                 matrix[i + 1][j] = 'Z';
  28.                                 break;
  29.                             }
  30.                         case 'd': {
  31.                                 matrix[i][j] = 'D';
  32.                                 matrix[i + 1][j] = 'Z';
  33.                                 break;
  34.                             }
  35.                     }
  36.  
  37.             matrix.ForEach(r => Console.WriteLine(string.Join(@"-", r)));
  38.         }
  39.     }
  40. }

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


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

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

14   голосов , оценка 4.143 из 5

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

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

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