Есть массив:
int[][] array = new int[2][3]; array[0][0] = 1; array[0][1] = 2; array[1][0] = 3; array[1][1] = 4; array[0][2] = 5; array[1][2] = 6;
Используя цикл for, вычислите сумму каждой строки первого массива и запишите результат в новый массив.
Можете помочь кодом для новичка, т.е простое решение предложить?
Kromster
13.5k12 золотых знаков43 серебряных знака72 бронзовых знака
задан 15 июл 2018 в 13:43
2
Если легкий вариант и не использую Stream API, то вам подойдет такой вариант:
public class Application {
public static void main(String[] args) {
int[][] array = new int[2][3];
array[0][0] = 1;
array[0][1] = 2;
array[1][0] = 3;
array[1][1] = 4;
array[0][2] = 5;
array[1][2] = 6;
int[] newArray = new int[array.length];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
newArray[i] += array[i][j];
}
}
Arrays.stream(newArray).forEach(System.out::println);
}
}
ответ дан 15 июл 2018 в 14:17
3
Вот например мы заполняем массив, так же и складывайте элементы массива.
Вот пример заполнения и вывода.
package array;
/**
*
* @author vvm
*/
public class ArrayCount {
public static void main(String[] args) {
int[][] array = new int[2][3];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
array[i][j] = i+1;
}
}
for (int i = 0; i < 2; i++) {
System.out.println("");
for (int j = 0; j < 3; j++) {
System.out.print(" array[" + i + "]" + "[" + j + "]" + " = " + array[i][j]);
}
}
}
}
array[i][j] – это ваш элемент массива, то что хранится в ячейке массива с номером ячейки [i][j]. Как в табличке. Только это условно. В памяти компьютера массив хранится по другому. Строки и столбцы – это условность.
ответ дан 15 июл 2018 в 15:20
попробуйте так
int rowsCount = array[0].length;
for(int row = 0; row < rowsCount; row++)
{
int sum = 0;
for(int i = 0; i < array.length; i++)
{
int cell = array[i][row];
sum += cell;
// debug (remove next line if not needed!)
System.out.print(cell + (i < array.length - 1 ? " + " : " = "));
}
System.out.println(sum);
}
ответ дан 16 июл 2018 в 6:49
RamizRamiz
1,6049 серебряных знаков16 бронзовых знаков
Можно проще сделать с помощью stream
:
int[][] array = new int[2][3];
array[0] = new int[]{1, 2, 5};
array[1] = new int[]{3, 4, 6};
int[] sums = Arrays.stream(array)
// получаем сумму каждой строки
.mapToInt(row -> Arrays.stream(row).sum())
// возвращаем массив
.toArray();
System.out.println(Arrays.toString(sums)); // [8, 13]
ответ дан 10 дек 2020 в 21:35
0 / 0 / 0 Регистрация: 04.03.2009 Сообщений: 23 |
|
1 |
|
Найти сумму элементов в каждой строке двумерного массива06.03.2009, 11:33. Показов 52358. Ответов 12
Здравствуйте) Помогите пожалуйста решить несколько задач) Заранее огромнейшее спасибо)
0 |
ZigmundFr 7 / 7 / 4 Регистрация: 17.01.2009 Сообщений: 32 |
||||
08.03.2009, 02:41 |
2 |
|||
Ответ на первый вопрос:
Только я не проверил работу!
1 |
Puporev Почетный модератор 64285 / 47584 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||
08.03.2009, 10:10 |
3 |
|||
Вот поправил первую чтоб работала.
1 |
schdub 3069 / 1407 / 425 Регистрация: 19.01.2009 Сообщений: 3,851 |
||||
08.03.2009, 10:30 |
4 |
|||
Вторая
0 |
0 / 0 / 0 Регистрация: 04.03.2009 Сообщений: 23 |
|
10.03.2009, 23:30 [ТС] |
5 |
Огромнейшее спасибо! Вы мне Очень помогли!
0 |
192 / 0 / 1 Регистрация: 23.04.2009 Сообщений: 20 |
|
23.04.2009, 20:19 |
6 |
помогите пл3 решить подобную первой задаче.
0 |
Puporev Почетный модератор 64285 / 47584 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||||||
23.04.2009, 20:23 |
7 |
|||||||
Находишь минимальный и строку где он находится.
Сейчас в этой строке считаешь сумму.
0 |
192 / 0 / 1 Регистрация: 23.04.2009 Сообщений: 20 |
|
23.04.2009, 20:26 |
8 |
это же надо вставить перед тем как считаю сумму ???
0 |
Почетный модератор 64285 / 47584 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
|
23.04.2009, 20:38 |
9 |
Что вставить? Ты здесь как раз и считаешь сумму в строке.
0 |
192 / 0 / 1 Регистрация: 23.04.2009 Сообщений: 20 |
|
23.04.2009, 20:59 |
10 |
мне даже так собрать сложно ( Код uses crt; var s,min,imin,n,m,i,j,sum,x:integer; a:array[1..50,1..50] of integer; begin clrscr; randomize; write('koli4estvo strok n='); readln(n); write('koli4estvo stolbov m='); readln(m); min:=a[1,1]; imin:=1; for i:=1 to n do for j:=1 to n do if a[i,j]<min then begin min:=a[i,j]; imin:=i; end; begin s:=0; for j:=1 to m do s:=s+a[imin,j]; writeln('summa',s); readln(s); end; end.
0 |
Puporev Почетный модератор 64285 / 47584 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||
23.04.2009, 21:11 |
11 |
|||
Я Вам просто поражаюсь, чем Вы думаете. Не создав матрицу, не введя никих значений в программу, Вы ищете какой-то минимум, какую-то сумму. Вообще полное безмыслие.
1 |
192 / 0 / 1 Регистрация: 23.04.2009 Сообщений: 20 |
|
24.04.2009, 11:26 |
12 |
спасибо )) я просто только на днях начал изучать все это )) Добавлено через 14 часов 10 минут 29 секунд
0 |
Puporev Почетный модератор 64285 / 47584 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||
24.04.2009, 11:48 |
13 |
|||
сколько процедур будет Думаю 3х хватит. Добавлено через 3 минуты 41 секунду
1 |
program massiv;
uses crt;
type matr= array[1..100,1..100] of integer;
var
j,i,n,m:integer;
a:matr;
s:array[1..100] of integer;
fl:boolean;
procedure eqv3(d:matr;k:integer;var f:boolean);
var
c:array[1..100] of integer;
i,j,w,ch:integer;
begin
for i:=1 to n do
c[i]:=d[i,k];
for i:=1 to n-1 do
for j:=i+1 to n do
if c[i]>c[j] then begin
w:=c[i]; c[i]:=c[j]; c[j]:=w end;
//for i:=1 to n do write(c[i]:3); // writeln;
ch:=0;
for i:=1 to n-2 do begin
if (c[i]=c[i+1]) and (c[i]=c[i+2]) then
begin inc(ch);end;
end;
f:=ch=1;
end;
BEGIN
randomize;
clrscr;
writeln(‘решение задачи на массив ‘);
writeln(‘—————————‘);
writeln;
write(‘Ввксти число строк–> ‘); readln(n);
write(‘Ввксти число столбцов–> ‘); readln(m);
writeln(‘Имсходный массив ‘);
writeln(‘——————‘);
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=random(8);
write(a[i,j]:4);
end;
writeln;
end;
writeln(‘Сумма строк’);
for i:=1 to n do begin
s[i]:=0;
for j:=1 to m do
s[i]:= s[i]+a[i,j];
write( s[i]:4); end;
writeln;
for j:=1 to m do begin
if not odd(j) then
begin eqv3(a,j,fl);
if fl then begin
writeln(‘Вектор Х: ‘,’ столбец ‘,j);
writeln;
for i:=1 to n do write(a[i,j]:3);
writeln; break; end;
end;
end;
writeln;
writeln(‘конец задачи ‘);
readln;
END.
program
sumstr;
Var
a: array[1..50,1..50] of integer;
i,
j, n, m,sum: integer;
Begin
Write(‘сколько
строк?’); Readln(m);
Write(‘сколько
столбцов?’); Readln(n);
For
i:=1 to m do
begin
For
j:=1 to n do
begin
a[i,j]:=int(rnd*50)-19;
write(a[i,j],’ ‘);
end;
writeln;
end;
for
i:=1 to m do
begin
sum:=0;
for
j:=1 to n do sum:=sum+a[i,j];
writeln(‘сумма
элементов в ‘,i,’ строке: ‘,sum);
end;
end.
6. Подсчитать количество положительных элементов в каждой строке матрицы размером МхN, элементы которой вводятся с клавиатуры.
program
kolpolvstr;
Var
a: array[1..50,1..50] of integer;
i,
j, m, n, kol: integer;
Begin
Write(‘сколько
строк?’); Readln(m);
Write(‘сколько
столбцов?’); Readln(n);
For
i:=1 to m do
begin
For
j:=1 to n do
begin
write(‘a[‘,i,’,’,j,’]=’); readln (a[i,j]); end;
for
i:=1 to m do
begin
kol:=0;
for
j:=1 to n do if a[i,j]>0 then kol:=kol+1;
writeln(‘количество
положительных элементов в ‘,i,’ строке:
‘,kol);
end;
writeln;
end;
end.
7. Сформировать матрицу типа 1 0 0 0
0
1 0 0
0
0 1 0
0
0 0 1
program
formir;
Var
a: array[1..50,1..50] of integer;
i,
j, m, n: integer;
Begin
Write(‘сколько
строк?’); Readln(m);
Write(‘сколько
столбцов?’); Readln(n);
For
i:=1 to m do
begin
For
j:=1 to n do
begin
if
i=j then a[i,j]:=1 else a[i,j]:=0;
write(a[i,j]);
end;
writeln;
End.
8.
Найти номер столбца массива размером
МхN, в котором находится наибольшее
количество отрицательных элементов.
Элементы вводятся с клавиатуры.
program
nomerstolb;
Var
a: array[1..50,1..50] of integer;
b:
array[1..50] of integer;
i,
j, m, n, max, jmax: integer;
Begin
Write(‘сколько
строк?’); Readln(m);
Write(‘сколько
столбцов?’); Readln(n);
For
i:=1 to m do
begin
For
j:=1 to n do
begin
write(‘a[‘,i,’,’,j,’]=’);
readln (a[i,j]);
end;
for
j:=1 to m do
begin
b[j]:=0;
for
i:=1 to n do
if
a[i,j]<0 then b[j]:=b[j]+1;
end;
max:=b[1];
jmax:=1;
For
j:=2 to n do
begin
if
b[j]>max then
begin
max:=b[j];
jmax:=j;
end;
end;
writeln(‘Наибольшее
количество отрицательных элементов в
‘;jmax ; ‘столбце’);
end;
end.
9. Упорядочить каждый столбец матрицы по возрастанию. Массив размером МхN, элементы которого задаются датчиком случайных чисел на интервале [-17;26].
program
porydok;
Var
a: array[1..50,1..50] of integer;
i,
j, n, m,t,r: integer;
Begin
Write(‘сколько
строк?’); Readln(m);
Write(‘сколько
столбцов?’); Readln(n);
For
i:=1 to m do
begin
For
j:=1 to n do
begin
a[i,j]:=int(rnd*44)-17;
write(a[i,j],’
‘);
end;
Writeln;
end;
For
j:=1 to n do
For
r:=1 to m do
For
i:=1 to m-1 do
if
a[i,j]> a[i+1,j] then
begin
t:=
a[i,j];
a[i,j]:=
a[i+1,j];
a[i+1,j]:=
t;
end;
For
i:=1 to m do
begin
For
j:=1 to n do write(a[i,j],’ ‘);
Writln;
end;
End.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Данная тема основывается на теме: Массивы. Одномерные массивы. Инициализация массива
Содержание
- 1. Нахождение сумм и произведений элементов массива. Примеры
- 2. Нахождение максимального (минимального) элемента массива. Примеры
- 3. Сортировка массива методом вставки
- 4. Поиск элемента в массиве. Примеры
- Связанные темы
Поиск на других ресурсах:
1. Нахождение сумм и произведений элементов массива. Примеры
Пример 1. Задан массив A, содержащий 100 целых чисел. Найти сумму элементов этого массива. Фрагмент кода, решающего эту задачу
// сумма элементов массива A из 100 целых чисел int A[100]; int suma; // переменная, содержащая сумму int i; // дополнительная переменная // ввод массива A // ... // Вычисление суммы suma = 0; // обнулить сумму for (i=0; i<100; i++) suma += A[i];
Перебор всех элементов массива выполняется в цикле for.
Переменная sum сохраняет результирующее значение суммы элементов массива. Переменная i есть счетчиком, определяющим индекс элемента массива A[i].
Пример 2. Задан массив B, содержащий 20 вещественных чисел. Найти сумму элементов массива, которые лежат на парных позициях. Считать, что позиции 0, 2, 4 и т.д. есть парными.
// сумма элементов массива B // лежащих на парных позициях float B[20]; float sum; // переменная, содержащая сумму int i; // дополнительная переменная // ввод массива // ... // Вычисление суммы sum = 0; // обнулить сумму for (i=0; i<20; i++) if ((i%2)==0) sum += B[i];
В этом примере выражение
(i%2)==0
определяет парную позицию (парный индекс) массива B. Если нужно взять нечетные позиции, то нужно написать
(i%2)==1
Пример 3. Задан массив, который содержит 50 целых чисел. Найти сумму положительных элементов массива.
// сумма положительных элементов массива int A[50]; int sum; // переменная, содержащая сумму int i; // дополнительная переменная // ввод массива // ... // Вычисление суммы sum = 0; // обнулить сумму for (i=0; i<50; i++) if (A[i]>0) sum = sum + A[i];
Пример 4. Задан массив из 50 целых чисел. Найти произведение элементов массива, которые есть нечетными числами.
// произведение нечетных элементов массива int A[50]; int d; // переменная, содержащая произведение int i; // вспомогательная переменная // ввод массива // ... // Вычисление произведения d = 1; // начальная установка переменной d for (i=0; i<50; i++) if ((A[i]%2)==1) d = d * A[i];
Чтобы определить, есть ли элемент массива A[i] нечетным, нужно проверить условие
(A[i]%2)==1
Если условие выполняется, то элемент массива есть нечетное число.
⇑
2. Нахождение максимального (минимального) элемента массива. Примеры
Пример 1. Задан массив из 30 вещественных чисел. Найти элемент (индекс), имеющий максимальное значение в массиве.
// поиск позиции (индекса), содержащего максимальное значение float B[30]; float max; // переменная, содержащая максимум int index; // позиция элемента, содержащего максимальное значение int i; // дополнительная переменная // ввод массива // ... // поиск максимума // установить максимум как 1-й элемент массива index = 0; max = B[0]; for (i=1; i<30; i++) if (max<B[i]) { max = B[i]; // запомнить максимум index = i; // запомнить позицию максимального элемента }
В вышеприведенном примере переменная max содержит максимальное значение. Переменная index содержит позицию элемента, который имеет максимальное значение. В начале переменной max присваивается значение первого элемента массива. Затем, начиная со второго элемента, происходит прохождение всего массива в цикле for. Одновременно проверяется условие
if (max<B[i])
Если условие выполняется (найден другой максимум), тогда новое значение максимума фиксируется в переменных max и index.
Вышеприведенный пример находит только один максимум. Однако, в массивах может быть несколько максимальных значений. В этом случае для сохранения позиций (индексов) максимальных значений нужно использовать дополнительный массив как показано в следующем примере.
Пример 2. Задан массив содержащий 50 целых чисел. Найти позицию (позиции) элемента, который имеет минимальное значение. Если таких элементов несколько, сформировать дополнительный массив индексов.
// поиск позиций (индексов), содержащих минимальное значение int A[50]; int min; // переменная, содержащая минимальное значение int INDEXES[50]; // позиции элементов, содержащих минимальное значение int n; // число одинаковых минимальных значений int i; // дополнительная переменная // ввод массива // ... // 1. Поиск минимального значения // установить минимальное значение в первом элементе массива min = A[0]; for (i=1; i<50; i++) if (min>A[i]) min = A[i]; // запомнить минимальное значение // 2. Формирование массива n = 0; // обнулить счетчик в массиве INDEXES for (i=0; i<50; i++) if (min == A[i]) { n++; // увеличить число элементов в INDEXES INDEXES[n-1] = i; // запомнить позицию } listBox1->Items->Clear(); // 3. Вывод массива INDEXES в listBox1 for (i=0; i<n; i++) listBox1->Items->Add(INDEXES[i].ToString());
В вышеприведенном листинге сначала ищется минимальное значение min.
На втором шаге формируется массив INDEXES, в котором число элементов записывается в переменную n. Происходит поиск минимального значения в массиве A с одновременным формированием массива INDEXES.
На третьем шаге приведен пример, как вывести массив INDEXES в элементе управления listBox1(ListBox).
⇑
3. Сортировка массива методом вставки
Пример. Пусть дан массив A, содержащий 10 целых чисел. Отсортировать элементы массива в нисходящем порядке с помощью метода вставки.
// сортировка массива методом вставки int A[10]; int i, j; // дополнительные переменные - счетчики int t; // дополнительная переменная // ввод массива A // ... // сортировка for (i=0; i<9; i++) for (j=i; j>=0; j--) if (A[j]<A[j+1]) { // поменять местами A[j] и A[j+1] t = A[j]; A[j] = A[j+1]; A[j+1] = t; }
⇑
4. Поиск элемента в массиве. Примеры
Пример 1. Определить, находится ли число k в массиве M состоящем из 50 целых чисел.
// определение наличия заданного числа в массиве чисел int M[50]; int i; int k; // искомое значение bool f_is; // результат поиска, true - число k есть в массиве, иначе false // ввод массива M // ... // ввод числа k // ... // поиск числа в массиве f_is = false; for (i=0; i<50; i++) if (k==M[i]) { f_is = true; // число найдено break; // выход из цикла, дальнейший поиск не имеет смысла } // вывод результата if (f_is) label1->Text = "Число " + k.ToString() + " есть в массиве M."; else label1->Text = "Числа " + k.ToString() + " нет в массиве M.";
Пример 2. Найти все позиции вхождения числа k в массиве M состоящим из 50 целых чисел.
// определение всех позиций заданного числа в массиве чисел int M[50]; // массив чисел int i; // вспомогательная переменная int k; // искомое значение int INDEXES[50]; // искомый массив позиций вхождения числа k int n; // количество найденных позиций или количество элементов в массиве INDEXES // ввод массива M // ... // ввод числа k // ... // поиск числа k в массиве M и одновременное формирование массива INDEXES n = 0; for (i=0; i<50; i++) if (k==M[i]) { // число найдено n++; INDEXES[n-1] = i; } // вывод результата в listBox1 listBox1->Items->Clear(); for (i=0; i<n; i++) listBox1->Items->Add(INDEXES[i].ToString());
⇑
Связанные темы
- Массивы. Часть 1. Определение массива в C++. Одномерные массивы. Инициализация массива
- Массивы. Часть 2. Двумерные массивы. Массивы строк. Многомерные массивы
⇑