Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для iceglen
25 / 25 / 3
Регистрация: 24.06.2013
Сообщений: 109
.NET 3.x

Заполнить матрицу по заданному закону

28.10.2013, 00:02. Показов 1036. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:
Кликните здесь для просмотра всего текста
Найти закон по которому формируется указанная матрица. Разработать
алгоритм и по нему составить программу для формирования квадратной матрицы
порядка n. Первый вариант программы – работа со статическим массивом, второй – с
динамическим.


Вариант матрицы прикрепил. Компилируется без ошибок, но после ввода выдает "исключение".

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace LabRab7
{
    class LabRab7
    {
        static void Main(string[] args)
        {
            Console.Write("Введите N: ");
            int n = Convert.ToInt32(Console.ReadLine());
            if (n == 0)
            {
                Console.Write("Введите N отличное от нуля: ");
                n = Convert.ToInt32(Console.ReadLine());
            }
            int[,] arr1 = new int[n, n];
            for (int i = 0; i < n; i++)
            {
                arr1[i, 0] = (i + 1);
                for (int k = 0, j = 1; k < n; k++, j++)
                {
                    arr1[i, j] = arr1[i, (j - 1)] + 1;
                }
            }
            Console.WriteLine("Итоговая матрица:");
            for (int i = 0; i < n; i++)
            {
                Console.Write(arr1[i,0] + " ");
                for (int j = 0; j < n; j++)
                {
                    Console.Write(arr1[i,j] + " ");
                }
                Console.WriteLine();
            }
        }
    }
}
Препод дал лабы и лекции по С++, но делать заставил в С#. Может кто на пальцах объяснить, что есть динамический массив в С#? Разве new не отвечает за "динамическое выделение памяти"?
Изображения
 
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.10.2013, 00:02
Ответы с готовыми решениями:

Получить матрицу А (m*n) образованную по соответствующему закону
1. Получить матрицу А (m*n) образованную по соответствующему закону (размер матрицы и закон, по которому определяется каждый элемент...

Заполнить матрицу по заданному образцу
Сформировать квадратную матрицу порядка n по заданному образцу 100 99 98 … 91 90 89 88 … 81 80 79 78 … 71 ………………. 20 ...

Заполнить матрицу по заданному правилу
Дано число n. Создайте массив размером n×n и заполните его по следующему правилу: Числа на диагонали, идущей из правого верхнего в...

9
 Аватар для iceglen
25 / 25 / 3
Регистрация: 24.06.2013
Сообщений: 109
28.10.2013, 00:14  [ТС]
"Исключение" ругается на 25 строку - выход за пределы массива.
0
71 / 70 / 21
Регистрация: 04.04.2012
Сообщений: 351
28.10.2013, 01:03
Цитата Сообщение от iceglen Посмотреть сообщение
"Исключение" ругается на 25 строку - выход за пределы массива.
всё правильно, i меньше нуля получается - вот Вам и исключение

Не по теме:

за код сорри, немного не то сделал, сейчас исправлю



Добавлено через 9 минут
C#
1
2
3
4
5
6
7
    for (int i = 0; i != n; i++)
    {
      for (int j = 0; j != n - i; j++)
      {
        arr[i, j] = i + 1;
      }
    }
1
 Аватар для iceglen
25 / 25 / 3
Регистрация: 24.06.2013
Сообщений: 109
28.10.2013, 01:26  [ТС]
Что-то не вышло то, что нужно.

Заменил свой код на Ваш:

1 1 1 1 1 1
2 2 2 2 2 0
3 3 3 3 0 0
4 4 4 0 0 0
5 5 0 0 0 0

Потом изменил вывод матрицы (мб и там накосячил?) и вышло так:

1 1 2 3 4 5
1 1 2 3 4 0
1 1 2 3 0 0
1 1 2 0 0 0
1 1 0 0 0 0
0
71 / 70 / 21
Регистрация: 04.04.2012
Сообщений: 351
28.10.2013, 01:37
Цитата Сообщение от iceglen Посмотреть сообщение
Console.Write(arr1[i,0] + " ");
для чего эта строка? она лишняя
вот Ваш код, его поправил, сейчас точно работает
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    int n = Convert.ToInt32(Console.ReadLine());
    if (n == 0)
    {
      Console.Write("Введите N отличное от нуля: ");
      n = Convert.ToInt32(Console.ReadLine());
    }
    int[,] arr1 = new int[n, n];
    for (int i = 0; i != n; i++)
    {
      for (int j = 0; j != n - i; j++)
      {
        arr1[i, j] = n - j;
      }
    }
    Console.WriteLine("Итоговая матрица:");
    for (int i = 0; i < n; i++)
    {
      for (int j = 0; j < n; j++)
      {
        Console.Write(arr1[i, j] + " ");
      }
      Console.WriteLine();
    }
    Console.ReadKey(true);


Добавлено через 5 минут
З.Ы. n лучше не так проверять
Вы только проверяете на 0, а если я такой плохой введу -1, то будет беда. лучше делать так:
C#
1
2
3
4
5
6
7
8
9
10
    int n;
    while (true)
    {
      Console.Clear();
      Console.Write("Введите N большее нуля: ");
      if (int.TryParse(Console.ReadLine(), out n))
      {
        break;
      }
    }
способ может и не идеальный, может есть и лучше, но это то, что я смог с ходу придумать...
1
 Аватар для iceglen
25 / 25 / 3
Регистрация: 24.06.2013
Сообщений: 109
28.10.2013, 01:45  [ТС]
Почти то, что нужно . n выводится в первом столбике. Котелок уже не варит как поменять -_-. n должны выводиться в побочной диагонали матрицы.

1 2 3 4 5
2 3 4 5 0
3 4 5 0 0
4 5 0 0 0
5 0 0 0 0

Буду благодарен.
0
71 / 70 / 21
Регистрация: 04.04.2012
Сообщений: 351
28.10.2013, 01:50
нет слов... по Вашей картинке я сделал так, как в ней есть...
n в побочной диагонали это круто, но более подробно описать это можно?
0
 Аватар для iceglen
25 / 25 / 3
Регистрация: 24.06.2013
Сообщений: 109
28.10.2013, 01:54  [ТС]
Ваш код выводит по другому. Вместо 1 2 3 4 5 по диагонали должны быть 5-ки.
Миниатюры
Заполнить матрицу по заданному закону  
0
71 / 70 / 21
Регистрация: 04.04.2012
Сообщений: 351
28.10.2013, 01:58
ясно, прошу прощений
сейчас поправлю

Добавлено через 3 минуты
C#
1
2
3
4
5
6
7
    for (int i = 0, k = 1; i != n; i++, k++)
    {
      for (int j = 0; j != n - i; j++)
      {
        arr1[i, j] = k + j;
      }
    }
З.Ы. прошу не обижаться на мой выпивший ум -_-

ну и надеюсь теперь оно?
1
 Аватар для iceglen
25 / 25 / 3
Регистрация: 24.06.2013
Сообщений: 109
28.10.2013, 02:02  [ТС]
Да, оно. Мерси.

Не по теме:

Ты вызвался мне помочь и обижаться я думаю тут не на что. Так уж меня воспитали родители. :)

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.10.2013, 02:02
Помогаю со студенческими работами здесь

Заполнить матрицу по заданному образцу
Cформировать квадратную матрицу порядка n по заданному образцу: Всем огромное спасибо заранее) \left

Заполнить матрицу по заданному образцу
Здравствуйте. Помогите пожалуйста с задачей, уже несколько дней сижу,ничего не получается. Задано число N(может быть четным или...

Заполнить матрицу по заданному рисунку
Подайте пожалуйста идею как заполнить матрицу числами от 1 до n2 по заданной схеме. Спасибо!

Заполнить квадратную матрицу по заданному правилу
Заполнить массив размерностью 7*7 по правилу: 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 1 1...

Заполнить квадратную матрицу согласно заданному правилу
помогите пожалуйста Заполнить двумерный массив размером 7 на 7 пояснением если не трудно на языке c++ заранее спасибо


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru