Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 76
1

Удалить из матрицы А (7х5) все строки, сумма элементов которых четная

13.01.2023, 16:09. Показов 781. Ответов 4

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, как в задаче с условием: Удалить из матрицы А (7х5) все строки, сумма элементов которых четная, а из матрицы В (6х8) – строки, сумма элементов которых нечетная, передвинув на их место следующие строки без нарушения порядка их следования  — работать с массивом и матрицей, если нужно задавать их одной функцией, а также обрабатывать. То есть, создавать отдельные функции для работы с массивом и отдельный для работы с матрицей нельзя.

По аналогии пыталась решить похожую задачу, но не совсем получилось.

Условие было такое: Поменять местами максимальные элементы массива А (45) и матрицы В (6х9). Если в массиве максимальное значение имеют несколько элементов, массив считается некорректным.

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
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define L 14 // Количество элементов массива
#define M 6 // Количество строк матрицы
#define N 9 // Количество столбцов матрицы
#define W 3 // Поле вывода
 
int *v_random(int *a, int n);
int *v_max(int *a, int n);
void v_print(int *a, int n);
void m_print(int *b, int m, int n);
void swap(int *a, int *b);
int v_count(int *a, int n, int x);
 
int main (){
    int a[L], b[N*M];
    srand(time(0));
    v_random(a,L);
    v_random(b,M*N);
    printf("A = ");
    v_print(a,L);
    printf("B = ");
    m_print(b,M,N);
    printf("\n");
    swap(v_max(a,L),v_max(b,M*N));
    printf("A'= ");
    v_print(a,L);
    printf("B'= ");
    m_print(b,M,N);
    return 0;
}
 
int *v_random(int *a, int n) {
    for (int i = n; i-->0;)
        a[i] = rand()%100;
    return a;
}
int *v_max(int *a, int n) {
    int k = n - 1;
    for (int i = n - 1; i-->0;)
    {
        if (a[k] < a[i])
        {
            k = i;
        }
    }
 
    return a + k;
}
void swap(int *a, int *b) {
    int t =* a;
    *a = *b;
    *b = t;
}
void v_print(int *a, int n) {
    for (int i = 0; i < n; ++i)
        printf("%*d", W, a[i]);
    printf("\n");
}
void m_print(int *a, int m, int n){
    for (int i = 0; i < m; ++i) {
        for (int j = 0; j < n; ++j)
            printf(" %*d", W, a[n*i+j]);
        printf("\n");
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2023, 16:09
Ответы с готовыми решениями:

Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) – строки, сумма элементов которых нечетна
Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) –...

Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) – строки, сумма элементов которых нечетна
Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) –...

Удалить из матрицы все строки, сумма элементов которых четная
Здраствуйте! никак не могу решить задачку(( вот кое-чего накидала для неё Удалить из матрицы А...

Удалить из матрицы A все строки, сумма элементов которых четна, а из матрицы B – строки, сумма элементов которых нечетна(функции)
Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) –...

Удалить из матрицы А все строки, сумма элементов которых четна, а из матрицы – строки, сумма элементов которых нечетна.
Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) –...

4
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 76
13.01.2023, 17:19  [ТС] 2
Здравствуйте, помогите пожалуйста порешать задачу. Условие: Удалить из матрицы А (7х5) все строки, сумма элементов которых четная, а из матрицы В (6х8) – строки, сумма элементов которых нечетная, передвинув на их место следующие строки без нарушения порядка их следования.

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
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 7
#define M 5
#define L 6
#define K 8
 
int rand_matrix (int a[][M], int n, int m){
    int i, j;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            a[i][j] = rand()%100;
        }
    }
    return a;
}
 
void print_matrix (int a[][M], int n, int m){
    int i, j;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++){
            printf("%d\t", a[i][j]);
        }
        printf("\n");
    }
 
}
 
void delete_even(int a[][M], int n, int m){
    int i, j, k = 0, sum = 0;
    int u = N;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            sum += a[i][j];
 
        }
        if (sum % 2 == 0)
        {
            for (j = 0, k = 0; j < m; j++, k++)
            {
                a[k][j] = a[i][j];
            }
 
 
        }
        printf("%d\t", sum);
 
    }
 
}
 
int main() {
    int a[N][M], b[L][K];
    rand_matrix(a, N, M);
    rand_matrix(b, L, K);
    print_matrix(a, N, M);
    printf("\n");
    print_matrix(b, L, K);
    printf("\n");
    delete_even(a, N, M);
    print_matrix(a, N, M);
    printf("\n");
    return 0;
}
0
Лежебока
328 / 244 / 95
Регистрация: 12.05.2021
Сообщений: 1,429
Записей в блоге: 2
13.01.2023, 19:02 3
строка 38 как по мне не имеет смысла

Цитата Сообщение от Boiycha Посмотреть сообщение
По аналогии пыталась решить похожую задачу, но не совсем получилось.
Как вариант, использовать косвенную адресацию

Цитата Сообщение от Boiycha Посмотреть сообщение
swap(v_max(a,L),v_max(b,M*N));
Этот вызов функции не имеет смысла, так как вы возвращаете какие-то числа(по сути константы) которые не принадлежат массиву и меняете местами

C
1
swap(a[v_max(a,L)],b[v_max(b,M*N)]);
не знаю корректо ли так gbcfnm
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7794 / 4617 / 2830
Регистрация: 22.11.2013
Сообщений: 13,112
Записей в блоге: 1
13.01.2023, 23:31 4
А если так?
Не могу до конца добить задачку с матрицами
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7794 / 4617 / 2830
Регистрация: 22.11.2013
Сообщений: 13,112
Записей в блоге: 1
14.01.2023, 00:52 5
Donkix,
a+k это &a[k], поэтому про какие-то числа заявление столь же смелое, сколь и неверное.
v_max() возвращает указатель на максимальный элемент, swap() принимает указатели на обмениваемые элементы.

Строка 38 имеет простой смысл - позволяет написать
C
1
  swap(v_max(v_rand(a,L),L),v_max(v_rand(b,M*N),M*N));
Добавлено через 1 минуту
А в вашем предложении ошибка. Даже две

Добавлено через 3 минуты
Про уникальность там тоже есть:
Поменять местами максимальные элементы массива А (45) и матрицы В (6х9)

Boiycha,
на кой ляд нужна была новая тема? Что мешало продолжить обсуждение в той теме, где этот код был вам дан?

Добавлено через 34 минуты
По поводу матриц и удаления строк:
Не могу до конца добить задачку с матрицами
0
14.01.2023, 00:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2023, 00:52
Помогаю со студенческими работами здесь

Удалить из матрица строки, сумма элементов которых четная
Удалить из матрицы А (7х5) все строки, сумма элементов которых четна, а из матрицы В (6х8) –...

Удалить из матрицы А (7×5) все строки, сумма элементов которых четна, а из матрицы В (6×8) – строки, сумма эле
Удалить из матрицы А (7×5) все строки, сумма элементов которых четна, а из матрицы В (6×8) –...

Удалить из матрицы А (7×5) все строки, сумма элементов которых четна, а из матрицы В (6×8) – строки, сумма эле
2. Удалить из матрицы А (7×5) все строки, сумма элементов которых четна, а из матрицы В (6×8)...

Переписать элементы матрицы А в матрицу В, обнуляя все столбцы, сумма элементов которых четная
Здравствуйте,проблема с двумерным массивом,при выводе массива нужные числа заменяются на 0 или...

Вывести номера строк матрицы у которых сумма элементов четная
1. Создать две динамические переменные, ввести значения с клавиатуры, определяющие номер дня и...

Определить кол-во столбцов матрицы, сумма элементов в которых четная
Матрицу задал, сумму столбцов нашел, а понять как вывести кол-во столбцов матрицы, сумма элементов...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru