Матрицу 10×20 заполнить случайными числами от 0 до 15. Вывести на экран саму матрицу и номера строк, в которых число 5 встречается три и более раз.
Для хранения номеров строк, в которых число 5 встречается более двух раз, предусмотрим одномерный массив размерностью, равной количеству строк матрицы.
При заполнении каждой строки матрицы следует проверять очередное число, не является ли оно пятеркой. Если так, то увеличивать счетчик. После того, как строка заполнена, проверить, не больше или не равен ли счетчик трем. Если это так, то следует записать в очередную ячейку одномерного массива номер текущей строки.
Вывод матрицы можно осуществлять в том же цикле, что и ее заполнение. Вывод же номеров строк следует выполнить в отдельном цикле по одномерному массиву до того индекса, на котором остановилось его заполнение.
Pascal
const
M = 20; N = 10;
var
a: array[1..N,1..M] of integer;
row: array[1..N] of byte;
i,j,k,qty: byte;
begin
randomize;
k := 0;
for i:=1 to N do begin
qty := 0;
for j:=1 to M do begin
a[i,j] := random(15);
write(a[i,j]:4);
if a[i,j] = 5 then qty := qty + 1;
end;
if qty >= 3 then begin
k := k + 1;
row[k] := i;
end;
writeln;
end;
write('Строки, в которых 3 и больше пятерок: ');
for i:=1 to k do
write(row[i],' ');
writeln;
end.
Пример(ы) выполнения программы на языке Pascal:
5 13 0 14 12 11 8 11 8 11 12 7 12 8 6 8 1 2 12 1
5 11 3 6 11 9 4 10 9 6 9 3 0 8 5 9 12 13 1 10
3 7 7 7 7 0 9 10 7 7 11 11 2 3 3 12 10 0 3 1
10 11 9 1 8 9 1 0 12 6 0 5 6 11 2 13 12 7 2 10
11 13 4 2 2 3 4 10 10 9 6 3 8 13 1 8 4 7 10 7
6 0 12 5 5 10 6 1 11 3 11 5 3 3 5 3 3 10 11 10
6 1 7 1 10 14 5 7 5 6 12 10 4 0 11 0 3 13 6 8
6 2 2 9 14 12 2 2 4 10 3 6 11 2 3 10 13 12 4 9
9 8 7 0 0 6 14 4 5 7 5 11 5 3 13 13 14 10 13 3
6 0 2 1 9 4 13 2 5 11 7 5 4 4 3 4 13 5 0 5
Строки, в которых 3 и больше пятерок: 6 9 10
Язык Си
#include < stdio.h>
#define M 20
#define N 10
main() {
int a[N][M], row[N], i, j, k, qty;
srand(time(NULL));
k = 0;
for (i=0; i< N; i++) {
qty = 0;
for (j=0; j< M; j++) {
a[i][j] = rand()%15;
printf("%4d", a[i][j]);
if (a[i][j] == 5) qty += 1;
}
if (qty >= 3) {
row[k] = i+1;
k += 1;
}
printf("\n");
}
printf("Строки, в которых три и более чисел 5: ");
for (i=0; i< k; i++) {
printf("%d ", row[i]);
}
printf("\n");
}
Python
from random import random
N = 10
M = 20
a = []
row = []
for i in range(N):
z = []
qty = 0
for j in range(M):
n = int(random() * 15)
z.append(n)
print("%3d" % n, end='')
if n == 5: qty += 1
print()
if qty >= 3: row.append(i+1)
a.append(z)
print("Строки, в которых три и более чисел 5:", row)
КуМир
алг
нач
цел N=10, M=20
цел таб a[1:N,1:M], row[1:N]
цел i, j, k, qty
k := 0
нц для i от 1 до N
qty := 0
нц для j от 1 до M
a[i,j] := int(rand(0,15))
вывод a[i,j], " "
если a[i,j] = 5 то qty := qty + 1 все
кц
если qty >= 3 то
k := k + 1
row[k] := i
все
вывод нс
кц
вывод "Строки, в которых три и более чисел 5: "
нц для i от 1 до k
вывод row[i], " "
кц
кон
Basic-256
M = 20
N = 10
dim a(N,M)
dim row(N)
k = 0
for i=0 to N-1
qty = 0
for j=0 to M-1
a[i,j] = int(rand*15)
print a[i,j] + " ";
if a[i,j]=5 then qty=qty+1
next j
if qty >= 3 then
row[k] = i+1
k = k+1
endif
print
next i
print "Строки, в которых 5 встречается 3 и более раз: ";
if k<>0 then
for i=0 to k-1
print row[i] + " ";
next i
endif
14 14 13 4 3 3 14 14 5 0 14 3 9 3 7 7 2 1 9 12
2 5 10 0 13 10 1 6 4 9 0 4 8 2 12 1 2 2 11 13
4 8 7 3 8 10 14 11 6 11 0 4 4 14 10 11 7 7 3 12
7 6 6 14 2 2 8 4 14 13 3 11 14 10 14 0 14 14 9 4
10 14 14 2 8 10 10 7 10 12 10 2 4 0 2 10 12 2 13 11
5 4 13 11 0 4 7 4 10 9 10 10 14 5 1 5 9 8 7 2
14 3 14 2 13 7 2 2 0 0 11 9 0 14 7 1 8 12 11 2
12 4 12 2 0 14 9 2 10 3 3 10 8 4 8 0 2 6 11 11
13 8 4 2 12 3 9 13 6 8 10 5 13 12 7 6 5 12 10 9
5 9 11 2 11 2 4 5 6 12 13 4 2 13 2 6 6 7 9 5
Строки, в которых 5 встречается 3 и более раз: 6 10
Цикл, выводящий номера строк, "обрамлен" в конструкцию if, т.к. если строк нет, то k остается равно нулю и в происходит ошибка в цикле for из-за того, что начальное значение оказывается больше конечного.