PashaMorgan 0 / 0 / 1 Регистрация: 03.06.2013 Сообщений: 13 |
||||
1 |
||||
Определить четные значения в матрице05.11.2013, 17:07. Показов 1213. Ответов 4 Метки нет (Все метки)
В целочисленной матрице размерами N*M определить количество элементов, которые имеют четные значения (N и M не больше 10). Матрицу сформировать из случайных чисел в диапазоне от 0 до 100.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
05.11.2013, 17:07 |
Ответы с готовыми решениями: В матрице определить четные элементы, имеющие нечетную сумму индексов. В заданной матрице определить среднее арифметическое значение положительных элементов столбиков, имеющих четные индексы Определить количество элементов, имеющих четные значения Определить произведение элементов матрицы, имеющих четные значения Задания на двумерные массивы 4 |
Anton_Kretov 89 / 51 / 15 Регистрация: 26.06.2013 Сообщений: 179 |
||||
05.11.2013, 17:42 |
2 |
|||
Вот, протестите мой вариант, код выполняет ваше условие.
1 |
PashaMorgan 0 / 0 / 1 Регистрация: 03.06.2013 Сообщений: 13 |
||||
05.11.2013, 17:45 [ТС] |
3 |
|||
Вот, протестите мой вариант, код выполняет ваше условие.
Спасибо Большое,буду изучать)
0 |
89 / 51 / 15 Регистрация: 26.06.2013 Сообщений: 179 |
|
05.11.2013, 17:46 |
4 |
Спасибо Большое,буду изучать) Рад помочь! :3
0 |
TSed 20 / 20 / 15 Регистрация: 22.01.2013 Сообщений: 76 |
||||
05.11.2013, 18:01 |
5 |
|||
0 |
Есть матрица 10*10
с целыми числами. Необходимо узнать количество чётных чисел в ней:
#include <stdio.h>
#include <stdlib.h>
#define ROWS 10
#define COLS 10
int main(void)
{
int array[ROWS][COLS];
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLS; j++)
{
printf("array[%d][%d]=", i, j);
scanf("%d", &array[i][j]);
}
}
printf("n");
for(int i = 0; i < ROWS; i++)
{
for(int j = 0; j < COLS; j++)
{
printf("%d ", array[i][j]);
}
printf("n");
}
}
Duracell
1,9913 золотых знака16 серебряных знаков33 бронзовых знака
задан 30 дек 2022 в 17:05
1
- Добавляем в начало переменную, например
int count = 0;
- Во втором цикле (вместо этого
printf("%d ", array[i][j]);
) проверяем делится ли число на 2 (array[i][j] % 2 == 0
) - Если число делится на 2:
count++;
- Выводим
count
ответ дан 30 дек 2022 в 17:26
SurfaceStackSurfaceStack
8574 серебряных знака23 бронзовых знака
Чтобы узнать количество четных чисел в матрице, нужно добавить счетчик, который будет увеличиваться каждый раз, когда встречается четное число. После того, как матрица будет просканирована, можно вывести результат счетчика.
Ниже приведен пример кода, который решает задачу:
#include <stdio.h>
#include <stdlib.h>
#define ROWS 10
#define COLS 10
int main(void)
{
int array[ROWS][COLS];
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLS; j++)
{
printf("array[%d][%d]=", i, j);
scanf("%d", &array[i][j]);
}
}
printf("n");
int evenCount = 0; // счетчик четных чисел
for(int i = 0; i < ROWS; i++)
{
for(int j = 0; j < COLS; j++)
{
if (array[i][j] % 2 == 0) // если число четное
{
evenCount++; // увеличиваем счетчик
}
}
}
printf("Количество четных чисел: %dn", evenCount);
return 0;
}
ответ дан 30 дек 2022 в 17:30
hedgehogueshedgehogues
9,2218 золотых знаков44 серебряных знака93 бронзовых знака
Второй цикл не нужен
#include <stdio.h>
#include <stdlib.h>
#define ROWS 10
#define COLS 10
int evenCount = 0; // счетчик четных чисел
int main(void)
{
int array[ROWS][COLS];
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLS; j++)
{
printf("array[%d][%d]=", i, j);
scanf("%d", &array[i][j]);
if (array[i][j] % 2 == 0) evenCount++; // если число четное увеличиваем счетчик
}
}
printf("nКоличество четных чисел: %dn", evenCount);
return 0;
}
ответ дан 31 дек 2022 в 14:52
In this function I want to get even numbers in matrix. My parameters are a bidimensional pointer and the dimensions of matrix.
Anyone could help me? Where I got wrong…
subl $12, %esp # 12 bytes to local variables
movl $0, -12(%ebp) # counter = 0
movl 8(%ebp), %esi # **m
movl $0, %ebx # i = 0
it_rows:
cmpl 12(%ebp), %ebx # while(i != y)
jz end # if not equal jump
leal (%esi, %ebx, 4), %edi # m+i
movl $0, %ecx # j = 0
it_col:
cmpl 16(%ebp), %ecx # while(j != k)
jz next_row
movl (%edi, %ecx, 4), %eax # *(*(m+i)+j)
andl $0x1, %eax # LSB
cmpl $0, %eax # LSB == 0
jnz not_even
movl -12(%ebp), %eax # counter
incl %eax # counter++
movl %eax, -12(%ebp) # update local variable
not_even:
incl %ecx # j++
jmp it_col
next_row:
incl %ebx # i++
jmp it_rows
My implementation in C:
int count_even_matrix(int **m, int y, int k) {
int i, j;
int c = 0;
for(i = 0; i < y; i++) {
for(j = 0; j < k; j++) {
if(*(*(m+i)+j)%2 == 0) {
c++;
}
}
}
return c;
}
Задача:
Напишите программу, которая принимает с клавиатуры число N, создает матрицу размера N на N, заполненную случайными числами, и выводит ее на экран. Затем определите количество четных чисел в этой матрице.
Все просто. Сначала стандартные операции по заполнению массива и выводу его на экран, а весь смысл в этом условии:
if (a[i][j] % 2 == 0 && a[i][j] !=0) { sum++; }
Если число делится на 2 без остатка и оно не 0, то прибавляем единичку, таким образом полный код будет такой:
#include <iostream> #include <ctime> using namespace std; int main() { srand(time(NULL)); int n = 0; int sum = 0; cin >> n; // Считываем с клавиатуры n int **a = new int* [n]; // Создаем массив указателей for (int i = 0; i < n; i++) { a[i] = new int [n]; // Создаем элементы } // А дальше работа как с обычным массивом. for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { a[i][j] = rand() % 10; cout << a[i][j] << " "; // Вывести элементы на консольку if (a[i][j] % 2 == 0 && a[i][j] !=0) { sum++; } } cout << endl; // Двумерный массив. Строка кончилась, переводим строку и на консоли } cout << "sum =" << sum << endl; // Удаление массива for (int i = 0; i < n; i++) { delete[]a[i]; // Удаляем каждый элемент } delete [] a; // А потом массив return 0; }
class Program { static Random rnd = new Random(); public static void Main() { while (true) { int m, n, min = 46; Console.Write("nвведите размер матрицыnчисло строкtm = "); m = Int32.Parse(Console.ReadLine()); Console.Write("число столбцовtn = "); n = Int32.Parse(Console.ReadLine()); int[,] array = new int[m, n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if ((array[i, j] = rnd.Next(-65, 46)) < min && array[i, j] % 2 == 0) min = array[i, j]; } } if (min != 46) Console.Write("наименьший чётный элемент матрицыt" + min); else Console.Write("Вы "везучий"! В матрице не оказалось ни одного чётного числа!"); } } }