none
Одномерные массивы RRS feed

  • Вопрос

  • Можно ли в с-шарп копировать имеющийся массив в новый для вывода его на экран в случае выполнения определенного условия. Например, дан массив, и дано серия, из массива убирается данная серия, если же серии нет то массив выводится на экран без изменения. У меня не получается вывести массив (без изменения).печатает System.Int3[] и т.д Как правильно сделать код? использовать Copy или CopyTo ? Чтобы скопировать надо объявить новый массив и задать ему размерность имеющего а дальше? подскажите пожалуйста нигде не могу найти как это делается!!! (я всего лишь начинающая...без опыта)или есть другие варианты? 
    • Перемещено Siddharth Chavan 1 октября 2010 г. 21:32 MSDN Forums Consolidation (От:Visual C#)
    20 апреля 2010 г. 9:19

Ответы

  •       else
          {
    
            Console.WriteLine("Серии с номером {0 }  не существует!", k);
            Console.WriteLine("Старый массив:");
            foreach (int number in massivN)
            {
              Console.WriteLine(number);
            }
          }

    • Помечено в качестве ответа Hellen_B 20 апреля 2010 г. 10:23
    20 апреля 2010 г. 10:08
  • Без интера? опять недопонял вопроса.
    Без итерации никак не вывести все элементы массива, их по любому надо перебирать.
    • Помечено в качестве ответа Hellen_B 20 апреля 2010 г. 10:23
    20 апреля 2010 г. 10:20

Все ответы

  • Немного расплывчатый вопрос.

    Вам надо:

    К примеру есть массив содержащий числа 1,2,3,4,5

    и есть 2 серии числел 1,2,3 и 4,5,6

    так как в первом случае серия чисел входит в массив то дожен создаться новый массив содержащий 4,5 и выведен на экран

    во втором же случае вся серия не входит в массив ( в массиве отсутствует число 6) следовательно создается новый массив в который входят все числа 1,2,3,4,5 и он выводится на экран

    Или вам надо что то другое ?

    20 апреля 2010 г. 9:39
  • Хорошо поясняю задачу:

    Дано целое число K и целочисленный массив размера N. Удалить из массива серию с номером K. Если серий в массиве меньше K, то вывести массив без изменений. Серия - это группа подряд идущих одинаковых элементов, длина серии — количество этих элементов (длина серии может быть равна 1). мое  решение  такое:

     

    int i, N, B, k; string s;//описываем переменные

                int j,ser_elem,start,iB;//описываем переменные

                bool f;//описываем переменные

                 Console .Write("Введите число элементов массива N=" );//приглашаем пользователя для ввода размерности массива N

                 s = Console .ReadLine();//вводим с клавиатуры число элементов массива

                N = Convert .ToInt32(s);//преобразовываем строку

                 int [] massivN = new int [N];// создаем массив заданной длины(инициализация)

                for (i = 0; i < N; i++)//запускаем цикл по всем элементам массива

                {

                    Console .Write("Введите по порядку все элементы массива N[{0}]=" , i + 1);//приглашаем пользователя для ввода элемента массива

                    s = Console .ReadLine();//вводим i-ый элемент массива

                    massivN[i] = Convert .ToInt32(s);// преобразовываем строку

                }

                Console .Write("Введите число  k=" );//приглашаем пользователя для ввода числа k

                s = Console .ReadLine();//вводим число

                k = Convert .ToInt32(s);//преобразовываем строку

                 j = 1;//задаем начальное условие

                ser_elem = 1;//задаем серии значение (по условию задачи серия может быть 1)

                start = 0;//задаем условие

                f = k==1;//задаем условие

                 for (i = 1; i < N && j<=k; i++)// запускаем цикл

                {

                    if (massivN[i] != massivN[i - 1])//

                    {

                        j++;

                        if (j == k)

                        { start = i;

                          f = true ;

                        }

                    }

                    else

                        if (j == k)

                            ser_elem++;

                }

     

                if (f)

                {

                    B = N - ser_elem;

                    int [] massivB = new int [B];

                    Console .WriteLine("Результирующий массив:" );

                    iB = 0;

                    for (i = 0; i < N; i++)

                    {

                        if (i < start || i > (start + ser_elem - 1))

                        {

                            massivB[iB] = massivN[i];

                            Console .WriteLine("B[{0}]={1}" , iB+1,massivB[iB++]);

                        }

                    }

                }

                else

                    Console .WriteLine("Серии с номером {0 }   не существует!" ,k);

                   Console .ReadKey();

    и вот здесь надо вывести старый массив, если серии с номером не существует. пыталась объявить новый массив и задать ему размерность заданного и с помощью Сopy (CopyTo),но что-то не получается не пойму что или здесь вообще по другому сделать?

    20 апреля 2010 г. 9:49
  •       else
          {
    
            Console.WriteLine("Серии с номером {0 }  не существует!", k);
            Console.WriteLine("Старый массив:");
            foreach (int number in massivN)
            {
              Console.WriteLine(number);
            }
          }

    • Помечено в качестве ответа Hellen_B 20 апреля 2010 г. 10:23
    20 апреля 2010 г. 10:08
  • Огромное спасибо!!!!!!!! получилось, а как сделать, чтобы все элементы массива выводились сразу без интера?
    20 апреля 2010 г. 10:15
  • Без интера? опять недопонял вопроса.
    Без итерации никак не вывести все элементы массива, их по любому надо перебирать.
    • Помечено в качестве ответа Hellen_B 20 апреля 2010 г. 10:23
    20 апреля 2010 г. 10:20
  • Спасибо Большое я поняла!!!
    20 апреля 2010 г. 10:22