Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2017, 23:07   #1
daniilK
Новичок
Джуниор
 
Регистрация: 19.12.2017
Сообщений: 3
Восклицание Двумерный массив

Очень нужна помощь!! Это нужно сделать или в С# или С++
Функция создаёт двумерный массив заданного размера и инициализирует его по столбцам значениями из одномерного массива. Если в двумерном массиве больше элементов, чем в одномерном, то оставшиеся элементы в двумерном массиве инициализируются нулями. Если в одномерном массиве больше элементов, чем необходимо для инициализации двумерного массива, то лишние значения игнорируются.
Возвращаемое значение функции показывает факт игнорирования избыточных значений в массиве для инициализации.

Описание параметров функции
Входные данные:
одномерный массив 1
количество строк в двумерном массиве 2
количество столбцов в двумерном массиве 3
Выходные данные:
двумерный массив 4
количество проигнорированных или заполненных нулями элементов 5

Последний раз редактировалось daniilK; 19.12.2017 в 23:28.
daniilK вне форума Ответить с цитированием
Старый 20.12.2017, 07:57   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Один из вариантов
Код:
static public int Array(int[] simpleArray, int n, int m, out int[,] ar2)
        {
            int zeroCount = 0;
            int curPosSA = 0;
            ar2 = new int[n,m];            
            for(int i = 0;i<ar2.GetLength(1);i++)
            for(int j = 0;j<ar2.GetLength(0);j++)
            {
                if(curPosSA<simpleArray.Length) 
                    ar2[j,i] = simpleArray[curPosSA++];
                else
                {
                    ar2[j,i] = 0;
                    zeroCount++;
                }
            }
            return zeroCount;
        }
        
        public static void Main(string[] args)
        {
            //Your code goes here
            Random rnd = new Random();
            int simpleArraySize=5;
            int arrayN = 2;
            int arrayM = 3;
            int zeroCount = 0;
            int[] ar1 = new int[simpleArraySize];
            int[,] ar2 = new int[arrayN,arrayM];
            
            for(int i = 0;i<simpleArraySize;i++) 
            { 
                ar1[i]=rnd.Next(20); 
                Console.Write("{0}\t",ar1[i]);
            }
            Console.WriteLine("\n");
            zeroCount =  Array(ar1,arrayN,arrayM, out ar2);
            for(int i=0;i<arrayN;i++)
            {    
                for(int j=0;j<arrayM;j++)
                    Console.Write("{0}\t",ar2[i,j]);
                 Console.WriteLine();
            }
            Console.WriteLine("\n{0}",zeroCount);
        }
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 20.12.2017, 12:56   #3
daniilK
Новичок
Джуниор
 
Регистрация: 19.12.2017
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Один из вариантов
Код:
static public int Array(int[] simpleArray, int n, int m, out int[,] ar2)
        {
            int zeroCount = 0;
            int curPosSA = 0;
            ar2 = new int[n,m];            
            for(int i = 0;i<ar2.GetLength(1);i++)
            for(int j = 0;j<ar2.GetLength(0);j++)
            {
                if(curPosSA<simpleArray.Length) 
                    ar2[j,i] = simpleArray[curPosSA++];
                else
                {
                    ar2[j,i] = 0;
                    zeroCount++;
                }
            }
            return zeroCount;
        }
        
        public static void Main(string[] args)
        {
            //Your code goes here
            Random rnd = new Random();
            int simpleArraySize=5;
            int arrayN = 2;
            int arrayM = 3;
            int zeroCount = 0;
            int[] ar1 = new int[simpleArraySize];
            int[,] ar2 = new int[arrayN,arrayM];
            
            for(int i = 0;i<simpleArraySize;i++) 
            { 
                ar1[i]=rnd.Next(20); 
                Console.Write("{0}\t",ar1[i]);
            }
            Console.WriteLine("\n");
            zeroCount =  Array(ar1,arrayN,arrayM, out ar2);
            for(int i=0;i<arrayN;i++)
            {    
                for(int j=0;j<arrayM;j++)
                    Console.Write("{0}\t",ar2[i,j]);
                 Console.WriteLine();
            }
            Console.WriteLine("\n{0}",zeroCount);
        }
Спасибо большое. Вы мне очень помогли.
daniilK вне форума Ответить с цитированием
Старый 20.12.2017, 13:00   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

есть еще такие задания? Сбросьте на почту media.project[at]ukr.net
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 22.12.2017, 04:12   #5
daniilK
Новичок
Джуниор
 
Регистрация: 19.12.2017
Сообщений: 3
По умолчанию

Теперь нужно что бы код не ломался при установке в значении отрицательного значения.
К примеру int arrayN = -2; и коду хана
Типа чтобы код было не так просто сломать!!

Последний раз редактировалось daniilK; 22.12.2017 в 04:16.
daniilK вне форума Ответить с цитированием
Старый 22.12.2017, 10:54   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от daniilK Посмотреть сообщение
К примеру int arrayN = -2; и коду хана
Типа чтобы код было не так просто сломать!!
что за бред?! исходный код ВСЕГДА можно сломать. на то он и исходный код.

но, если заниматься подобным бредом, тогда просто поставьте проверку,
Код:
if (arrayN<1){
	Console.WriteLine("недопустимое значение arrayN в коде!");
	Environment.Exit( 0 );
}
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передать двумерный массив Variant из VBA в dll C++, передать двумерный массив Variant из VBA в dll C++ и вернуть их после обработки обратно в VBA. maxPo Microsoft Office Excel 0 24.11.2017 17:29
Переписывая все в новый массив,добавить в двумерный массив столбец с заданным номером. anasttb Общие вопросы C/C++ 0 24.05.2017 12:15
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
Java: Дан двумерный массив чисел А размером 6х6 и одномерный массив Х из 6-ти чисел. Заменить первые три строки массива A vikysha55 Помощь студентам 1 16.04.2014 10:50
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56