Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105

Заполнить матрицу числами, вычислить сумму заданной строки и столбца

10.01.2018, 15:06. Показов 3966. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Два дня бьюсь над этим заданием, не получается понять, как правильно задать значения и чтобы выводилось так, как нужно.

Вот полное задание:

Написать программу Java, которая инициализирует матрицу n*n заданного пользователем размера и заполняет ее нулями и предлагает пользователю меню выбора:

" Какой размер должна иметь n*n матрица (n)? (Пример: 3)

Матрица выглядит так:

0 0 0
0 0 0
0 0 0

Опции:
(1) Заполнить все числа целым числом от 0 до 9
(2) Заполнить конкретную ячейку целым числом от 0 до 9
(3) Вычислить сумму строки и столбца
(4) Обновить: Заполнить все поля нулями
(5) Завершение программы

"

При выборе опций должно выводить в зависимости от того, какая выбрана цифра:

Выбор: 1

Каким числом Вы хотите заполнить матрицу? (пример 5)

5 5 5
5 5 5
5 5 5


Выбор: 2

Какое каким числом какую ячейку Вы хотите заполнить? (строка, столбец, число) (пример 1 2 9)

5 9 5
5 5 5
5 5 5


Выбор: 3

Сумму для какого столбца и какой строки (строка, столбец)? (пример 1 2)

Матрица не изменилась, результат выглядит теперь так:

5 9 5 19
5 5 5
5 5 5
19



И т.п.

Для заполнения матрицы нужно использовать for или for each, программа должна выполняться, пока не будет нажата опция (5)

Начальное заполнение получилось легко, как и 4 опция, проблема с 1, 2 и 3. При выборе 1 у меня для заполнения матрицы требует для каждой ячейки ввод, а не заполняется сразу. Для 2 и 3 код вовсе сырой, несколько раз перекраивался, так как никак не получается с этим разобраться точнее, несмотря на то, что литературу я понимаю по этому поводу неплохо. Сделать все нужно до завтра, а времени немного. Заранее благодарю за любую помощь

Java
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package matrixfill;
import java.util.Scanner;
/**
 *
 * @author 
 */
public class MatrixFill {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
      Scanner scan = new Scanner(System.in);
        
        System.out.println("Какой размер должна иметь n*n матрица (n) (n):");
        int dimensions =scan.nextInt();
        int matrixRow = dimensions;
        int matrixCol = dimensions;
        int choice;
                              
        //defining 2D array to hold matrix data
        int[][] matrix = new int[matrixRow][matrixCol];
        // Enter Matrix Data
        matrixFirstFill(matrix, matrixRow, matrixCol);
        
        // Print Matrix Data
        printMatrix(matrix, matrixRow, matrixCol);
        
        UserChoice(scan, matrix, matrixRow, matrixCol);
                   
  }
    
  public static void UserChoice (Scanner scan,int[][] matrix, int matrixRow, int matrixCol) {
      System.out.println("Опции: ");
      System.out.println("(1) Заполнить все числа целым числом от 0 до 9");
      System.out.println("(2) Заполнить конкретную ячейку целым числом от 0 до 9");
      System.out.println("(3) Сумму для какого столбца и какой строки (строка, столбец)?  ");
      System.out.println("(4) Обновить: Заполнить все поля нулями");
      System.out.println("(5) Завершение программы");
      int choice= scan.nextInt();
      
      if ( choice==1)   { 
          System.out.println("Выбор:1 Каким числом Вы хотите заполнить матрицу? ");
          for (int i = 0; i < matrixRow; i++)
          {
              for (int j = 0; j < matrixCol; j++)
              { int secondFill = scan.nextInt();
                  matrix[i][j]= secondFill;
              }
          }
          
            System.out.println("Матрица выглядит теперь так: ");
        
           for (int i = 0; i < matrixRow; i++)
           {
            for (int j = 0; j < matrixCol; j++)
            {
            System.out.print(matrix[i][j]+"\t");
            }
            System.out.println();
                }
 
        }
      
      
        else if (choice==2) {
                    System.out.println("Какое каким числом какую ячейку Вы хотите заполнить?   (строка, столбец, число) %n");
                    for (int i = 0; i < matrixRow; i++){
                         for (int j = 0; j < matrixCol; j++){
                             matrixRow   = scan.nextInt();
                             matrixCol = scan.nextInt();
                             matrix[matrixRow][matrixCol] = scan.nextInt();
                              }
                               }
                     System.out.println("Матрица выглядит теперь так: : %n");
        
                     for (int i = 0; i < matrixRow; i++) {
            for (int j = 0; j < matrixCol; j++){
                System.out.print(matrix[i][j]+"\t");
            }           
            System.out.println();
        }
    
        }
        else if (choice==3) {
                    System.out.println("Выбор :3 %n Вычислить сумму заданной строки и столбца:%n");
                   
                       
                     for (int i = 0; i < matrixRow; i++){
                          for (int j = 0; j < matrixCol; j++){
                              
                                                 
                      }
                     }
                     
                     for (int i = 0; i < matrixRow; i++){
                          for (int j = 0; j < matrixCol; j++){
                            
                                                 
                      }
                     }
          
      System.out.println("Матрица не изменилась, результат выглядит теперь так: %n");
        
        for (int i = 0; i < matrixRow; i++){
            for (int j = 0; j < matrixCol; j++){
                System.out.print(matrix[i][j]+"\t");
            }             
            System.out.println();
        }
     }
  
        else if (choice==4) {
            System.out.println ("Обновить: Заполнить все поля нулями");
                        for (int i = 0; i < matrixRow; i++) {
                             for (int j = 0; j < matrixCol; j++){
                                matrix[i][j] = 0;                                           
                             System.out.print(matrix[i][j]+"\t");
                             }
                         System.out.println();
        }
                        }
                                 
                        
        else if (choice==5) {
            System.out.println ("");}        
      }
 
                
             
 
  
  
  
  public static void matrixFirstFill(int[][] matrix, int matrixRow, int matrixCol){        
          for (int i = 0; i < matrixRow; i++)
          {
              for (int j = 0; j < matrixCol; j++)
              {
                  matrix[i][j] = 0;
              }
          }
  }
  
  public static void printMatrix(int[][] matrix, int matrixRow, int matrixCol){
    System.out.println("Матрица выглядит так: ");        
        for (int i = 0; i < matrixRow; i++)
        {
            for (int j = 0; j < matrixCol; j++)
            {
                System.out.print(matrix[i][j]+"\t");
            }
             
            System.out.println();
        }
  }
 }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.01.2018, 15:06
Ответы с готовыми решениями:

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

Заполнить матрицу размера М*N случайными числами. Вычислить сумму минимального и максимального элементов матрицы.
Помогите пожалуйста

Заполнить матрицу случайными числами, подсчитать сумму элементов в ее строках
Помогите составить программу по заданию. Задание: Создайте двумерный массив 5*5. Заполните его случайными числами, выведите массив...

7
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
10.01.2018, 16:03
Цитата Сообщение от RednexRampage Посмотреть сообщение
При выборе 1 у меня для заполнения матрицы требует для каждой ячейки ввод, а не заполняется сразу.
а из цикла вынести ты nextInt ты догадаться не можешь?
Во втором для чего тебе циклы?
0
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105
10.01.2018, 16:08  [ТС]
Я об этом думал, но как именно это сделать, чтобы притом считывалось с клавиатуры?

Во втором, значит, цикл не нужен, а только указание адреса с клавиатуры?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
10.01.2018, 16:24
Java
1
2
3
4
5
6
int secondFill = scan.nextInt();
for (int i = 0; i < matrixRow; i++) {
              for (int j = 0; j < matrixCol; j++) { 
                  matrix[i][j]= secondFill;
              }
          }
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.01.2018, 18:36
Лучший ответ Сообщение было отмечено RednexRampage как решение

Решение

Вместо else if используй switch чтоли. А то не комильфо. Имхо

Добавлено через 38 минут
Java
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package ru.ismoke;
 
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        int[][] matrix = new int[10][10];
        matrix = fillMatrix(matrix, 0);
        UserChoice(matrix);
    }
 
    private static void UserChoice(int[][] matrix) {
        Scanner scan = new Scanner(System.in);
        int choice, n, row, col;
        do {
            System.out.println("Опции: ");
            System.out.println("(1) Заполнить все числа целым числом от 0 до 9");
            System.out.println("(2) Заполнить конкретную ячейку целым числом от 0 до 9");
            System.out.println("(3) Сумму для какого столбца и какой строки (строка, столбец)?  ");
            System.out.println("(4) Обновить: Заполнить все поля нулями");
            System.out.println("(5) Завершение программы");
            choice = scan.nextInt();
 
            switch (choice) {
                case 1:
                    System.out.println("Выбор:1 Каким числом Вы хотите заполнить матрицу?");
                    n = scan.nextInt();
                    matrix = fillMatrix(matrix, n);
                    showMatrix(matrix);
                    break;
                case 2:
                    System.out.println("Каким числом какую ячейку Вы хотите заполнить?   (строка, столбец, число)");
                    row = scan.nextInt();
                    col = scan.nextInt();
                    n = scan.nextInt();
                    matrix[row][col] = n;
                    showMatrix(matrix);
                    break;
                case 3:
                    System.out.println("Выбор :3 Вычислить сумму заданной строки и столбца:");
                    System.out.print("Введите строку и столбец: ");
                    row = scan.nextInt();
                    col = scan.nextInt();
                    sumRow(matrix, row);
                    sumCol(matrix, col);
                    System.out.println("Матрица не изменилась, результат выглядит теперь так:");
                    showMatrix(matrix);
                    break;
                case 4:
                    System.out.println("Обновить: Заполнить все поля нулями");
                    matrix = fillMatrix(matrix, 0);
                    showMatrix(matrix);
                    break;
            }
        } while (choice != 5);
    }
 
    private static int[][] fillMatrix(int[][] matrix, int x) {
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = x;
            }
        }
        return matrix;
    }
 
    private static void showMatrix(int[][] matrix) {
        for (int[] aMatrix : matrix) {
            for (int anAMatrix : aMatrix) {
                System.out.print(anAMatrix + " ");
            }
            System.out.println();
        }
    }
 
    private static void sumRow(int[][] matrix, int row) {
        int sum = 0;
        for (int i = 0; i < matrix[row].length; i++) {
            sum += matrix[row][i];
        }
        System.out.println("Сумма элементов " + row + " строки равна " + sum);
    }
 
    private static void sumCol(int[][] matrix, int col) {
        int sum = 0;
        for (int[] aMatrix : matrix) {
            sum += aMatrix[col];
        }
        System.out.println("Сумма элементов " + col + " колонки равна " + sum);
    }
}
Добавлено через 5 минут
Цитата Сообщение от RednexRampage Посмотреть сообщение
Какой размер должна иметь n*n матрица (n)?
Ну, это уж сам прибамбась
1
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105
10.01.2018, 18:45  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
2
3
4
5
6
int secondFill = scan.nextInt();
Большое спасибо, все работает) И я понял свою ошибку.

Добавлено через 1 минуту
Огромное спасибо) Я как раз поначалу именно с switch возился, но что-то не так шло, простые указания типа print шли сразу, а вот чтобы код был рабочий- была проблема)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.01.2018, 18:49
И да, весь этот конструктивизьм вынеси в отдельный класс и, соотв., static поубирай.
1
0 / 0 / 0
Регистрация: 10.01.2018
Сообщений: 105
10.01.2018, 21:52  [ТС]
Большое спасибо, матрицу доделал и все работает как надо) Все понял, в чем не так сделал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.01.2018, 21:52
Помогаю со студенческими работами здесь

Заполнить матрицу случайными числами, найти сумму отрицательных элементов
Заполнить матрицу P размерности 7х9 случайными числами из диапазона (-25;35). Вывести ее на экран. Найти сумму отрицательных элементов.

Заполнить матрицу А(N,N) числами натурального ряда в последовательности, указанной на рисунке и найти их сумму
Нужна помощь по написанию программы на Паскале. Суть задачи состоит в том, что:Заполнить матрицу А(N,N) числами натурального ряда в...

Заполнить матрицу случайными числами в диапазоне [-5;5] и найти сумму элементов, обозначенных крестиком
хооох охохо оохоо охохо хооох Вот-так

Двух мерный массив 4 на 4 заполнить числами. Поменять значение первой строки и первого столбца
Двух мерный массив 4 на 4 заполнить числами. Поменять значение первой строки и первого столбца

Заполнить два массива случайными числами, вычислить их сумму
Заполнить два массива случайными числами, вычислить их сумму. Option Explicit Sub example_02() Dim Dbl_Array(1 To n, 1 To m) As...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru