Важная информация
Показано с 1 по 4 из 4

Тема: Подскажите, как исправить ошибку в коде на Си#

  1. #1 Подскажите, как исправить ошибку в коде на Си# 
    Новичок
    Регистрация
    05.07.2019
    Сообщений
    3
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях
    Всем привет!! Подскажите пожалуйста, как исправить ошибку в коде. Суть такая - имеется массив, в программе этот массив отсортирован, в каждой строке массива удалены повторяющиеся элементы. Т.е. если в какой то строке имеются элементы 1233345, то в итоге строка будет преобразована в 12345 и т.д. Но суть не в этом, это все программа делает. Проблема в том, что не получается подсчитать количество строк, у которых нет "пары" (одинаковых по значению элементов), это количество непохожих строк должно быть занесено в переменную t. На данный момент, это значение прога не правильно высчитывает. Помоги пожалуйста! Т.е., например, в массиве 1 2 4
    1 2 3 7 8
    1 2 3 7 8
    0 1 3 4 5
    0 1 3 4 5
    2 7 8 9 количество t строк, не имеющих пару, должно равняться 2.



    C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. using System.Threading.Tasks;
    6.  
    7. namespace ConsoleApp35
    8. {
    9.     class Program
    10.     {
    11.         static void Main(string[] args)
    12.         {
    13.             const int s = 6;
    14.             const int c = 6;
    15.             int[,] a = { { 1, 3, 1, 4, 3, 1 }, { 1, 4, 0, 3, 2, 2 }, { 3, 4, 1, 2, 4, 2 }, { 3, 1, 2, 4, 3, 3 }, { 3, 0, 3, 2, 1, 4 }, { 0, 2, 1, 3, 4, 4 } };
    16.             int[] b = [Ссылки могут видеть только зарегистрированные пользователи. ] int[s];
    17.             int i, j, k, t, p;
    18.  
    19.             for (i = 0; i < c; i++) //Исходный массив
    20.             {
    21.                 for (j = 0; j < c; j++)
    22.                     Console.Write(a[i, j] + " ");
    23.                 Console.WriteLine();
    24.             }
    25.             Console.WriteLine();
    26.             Console.WriteLine();
    27.  
    28.             for (i = 0; i < s; i++) // Сортировка массива
    29.                 for (j = 0; j < c; j++)
    30.                     for (k = 0; k < c - j - 1; k++)
    31.                         if (a[i, k] > a[i, k + 1])
    32.                         {
    33.                             t = a[i, k];
    34.                             a[i, k] = a[i, k + 1];
    35.                             a[i, k + 1] = t;
    36.                         }
    37.  
    38.             for (i = 0; i < c; i++) // Отсортированный массив
    39.             {
    40.                 for (j = 0; j < c; j++)
    41.                     Console.Write(a[i, j] + " ");
    42.                 Console.WriteLine();
    43.  
    44.             }
    45.             Console.WriteLine();
    46.  
    47.             for (i = 0; i < s; i++) // Исключаем повторяющиеся, стоящие рядом элементы
    48.             {
    49.                 k = 0;
    50.                 for (j = 1; j < c; j++)
    51.                     if (a[i, j - k - 1] == a[i, j])
    52.                         k++;
    53.                     else a[i, j - k] = a[i, j];
    54.                 b[i] = c - k;
    55.             }
    56.             for (i = 0; i < s; i++) // Выводим массив, с исключенными повторяющимися элементами
    57.             {
    58.                 for (j = 0; j < b[i]; j++)
    59.                     Console.Write(a[i, j] + " ");
    60.                 Console.WriteLine();
    61.             }
    62.             Console.WriteLine();
    63.             Console.WriteLine();
    64.  
    65.  
    66.             t = 0;
    67.             bool flag = false;
    68.             for (i = 0; i < s; i++) // Для каждой строки проверяем, нет ли у нее пары, если пары нет - засчитываем в переменную t++
    69.                 for (j = 0; j < s; j++)
    70.                     if (b[i] != b[j] )
    71.                     {
    72.                         flag = true;
    73.                         for (k = 0; k < b[i]; k++)
    74.                             if (a[i, k] == a[j, k])
    75.                             {
    76.                                 flag = false;
    77.                                 break;
    78.                             }
    79.                         if (flag)
    80.                         {
    81.                             t++;
    82.                             break;
    83.                         }
    84.                     }
    85.  
    86.             Console.WriteLine("t= {0}", t);
    87.             Console.ReadLine();
    88.         }
    89.  
    90.     }
    91. }
    Последний раз редактировалось >Quiet Snow<; 05.07.2019 в 18:04. Причина: Добавил теги
    Ответить с цитированием  
     

  2. #2  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,939
    Сказал(а) спасибо
    1,845
    Поблагодарили 989 раз(а) в 847 сообщениях
    Записей в блоге
    1
    Цитата Сообщение от Виктория555 Посмотреть сообщение
    подсчитать количество строк, у которых нет "пары" (одинаковых по значению элементов),
    это количество непохожих строк должно быть занесено в переменную t.
    Разбирать ваш код не буду(большинство студентов не знают какая переменная у них означает строки, а какая столбцы),
    на шарпе не пишу, но напишу алгоритмически:

    iy - номер строки (внешний цикл)
    iy2 - номер строки (внутренний цикл)
    ix - номер столбца (цикл проверки по строке)
    n - кол-во строк
    m - кол-во столбцов
    a (номер строки, номер столбца) - наша матрица.
    k - кол-во неидентичных строк
    f - флаг идентичности строки
    <> - знак неравенства

    Псевдокод:
    Код :
    k = n
    Цикл по iy = 0 TO n - 1
         Цикл по iy2 = 0 TO n - 1
         Если iy <> iy2 тогда
            f = 1
            Цикл по ix = 0 TO m - 1
               Если A(ix, iy) <> A(ix, iy2) тогда
                 f = 0
               Конец если
            Конец цикла по ix
            Если f = 1 тогда
              k = k - 1
              Выход из цикла по iy2
            Конец если
         Конец если
         Конец цикла по iy2
    Конец цикла по iy

    Перепишите на ваш ЯП согласно описанию переменных и оно заработает.
    Последний раз редактировалось >Quiet Snow<; 05.07.2019 в 18:03.
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  3. 2 пользователя(ей) сказали cпасибо:

    Виктория555 (05.07.2019), Дмитрий2008 (05.07.2019)

  4. #3  
    Новичок
    Регистрация
    05.07.2019
    Сообщений
    3
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях
    Буду очень вам признательна, если поможете, хотя бы направите к правильному решению )
    Ответить с цитированием  
     

  5. #4  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,939
    Сказал(а) спасибо
    1,845
    Поблагодарили 989 раз(а) в 847 сообщениях
    Записей в блоге
    1
    Цитата Сообщение от Виктория555 Посмотреть сообщение
    Буду очень вам признательна, если поможете, хотя бы направите к правильному решению )
    У вас есть псевдокод, переписывайте на ваш ЯП. C#-пом не владею, установленной среды нет.
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  6. 2 пользователя(ей) сказали cпасибо:

    Виктория555 (05.07.2019), Дмитрий2008 (05.07.2019)

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 02.10.2017, 05:27
  2. Помогите разобраться в коде.
    от Юрий Притула в разделе Assembler
    Ответов: 1
    Последнее сообщение: 10.04.2016, 03:28
  3. Ответов: 5
    Последнее сообщение: 10.11.2014, 19:06
  4. Запись числа в двоичном коде
    от NoodLez в разделе C/C++
    Ответов: 1
    Последнее сообщение: 27.11.2012, 17:15
  5. Ответов: 3
    Последнее сообщение: 05.03.2011, 23:46
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •