0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 5
1

Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент

22.10.2014, 22:33. Показов 5022. Ответов 2
Метки нет (Все метки)

помогите с задачей,надо написать код на с++

Дана действительная матрица размером m×n, в которой не все
элементы равны нулю. Получить новую матрицу путем деления всех эле-
ментов данной матрицы на ее наибольший по модулю элемент.

надо в статическом и динамическом вариантах
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2014, 22:33
Ответы с готовыми решениями:

Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент
Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю...

Получить новую матрицу путем деления всех элементов данной матрицы на её наибольший по модулю элемент
Дана действительная матрица размера n*m, в которой не все элементы равны нулю. Получить новую...

Получить матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент
Задание: написать программу согласно заданию. Дана целочисленная матрица размера 5х5. Получить...

Получить новую матрицу путем деления всех элементов исходной матрицы на ее наибольший по модулю элемент
2)Задан двумерный массив А. Получить новую матрицу путем деления всех элементов исходной матрицы...

2
385 / 279 / 478
Регистрация: 09.05.2014
Сообщений: 769
23.10.2014, 12:15 2
Лучший ответ Сообщение было отмечено Eugeniia как решение

Решение

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
#include <iostream>
#include <math.h>
void main()
{
    const int m=3, n=4;
    int i, j;
    float A[m][n], max=0;
    for (i=0; i<m; i++)
        for (j=0; j<n; j++)
        {
            std::cin>>A[i][j];
            if (fabs(A[i][j])>fabs(max))
                max=A[i][j];
        }
    for (i=0; i<m; i++)
    {
        std::cout<<std::endl;
        for (j=0; j<n; j++)
        {
            A[i][j]/=max;
            std::cout<<A[i][j]<<"\t";
        }
    }
}
0
шКодер самоучка
2153 / 1862 / 910
Регистрация: 09.10.2013
Сообщений: 4,085
Записей в блоге: 7
23.10.2014, 13:16 3
extern_c.h
C
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef EXTERN_C_H
#define EXTERN_C_H
 
#ifdef __cplusplus
#define extern_c_start extern "C" {
#define extern_c_stop }
#else
#define extern_c_start
#define extern_c_stop
#endif // C++
 
#endif
matrix_t.h
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
#ifndef MATRIX_T_H
#define MATRIX_T_H
 
#include <stdlib.h>
#include <stdio.h>
#include "extern_c.h"
 
extern_c_start
 
typedef double number_t;
typedef struct{
    number_t** data;
    size_t row_count, col_count;
} matrix_t;
 
matrix_t* matrix_sq_create(size_t size);
matrix_t* matrix_create(size_t row_count, size_t col_count);
matrix_t* matrix_read(FILE* in);
void matrix_free(matrix_t* m);
void matrix_print(const matrix_t* m, FILE* out);
matrix_t* matrix_multi(const matrix_t* a, const matrix_t* b);
 
extern_c_stop
 
#endif
matrix_t.c
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
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
#include "matrix_t.h"
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable : 4996)
 
matrix_t* matrix_sq_create(size_t size) {
    return matrix_create(size, size);
}
matrix_t* matrix_create(size_t row_count, size_t col_count) {
    matrix_t* m = NULL;
    void* mem_block = NULL;
    size_t    row = 0;
 
    m = (matrix_t*)malloc(sizeof(matrix_t));
    if (m) {
        m->row_count = row_count;
        m->col_count = col_count;
        // выделяем один блок под ссылки на строки и собственно данные, т.е. матрица у нас выходит одномерная
        //    память: под ссылки                   под данные
        m->data = (number_t**)mem_block = malloc(row_count*sizeof(number_t*) + row_count*col_count*sizeof(number_t));
        if (m->data) {
            mem_block = m->data + m->row_count;
            for (row = 0; row < row_count; ++row) {
                m->data[row] = ((number_t*)mem_block) + row*col_count; // запоминаем ссылки на начало строк, приводим матрицу к 2-мерному массиву
            }
        }
        else {
            free(m);
            m = NULL;
        }
    }
    return m;
}
 
void matrix_free(matrix_t* m) {
    if (m) {
        if (m->data) {
            free(m->data);
        }
        free(m);
    }
}
 
void matrix_print(const matrix_t* m, FILE* out) {
    size_t j, i;
    // для квадратной матрицы выводим только колво строк
    fprintf(out, "%z", m->row_count);
    if (m->row_count != m->col_count)
        fprintf(out, " %z", m->col_count);
    fprintf(out, "\n");
 
    for (i = 0; i < m->row_count; i++) {
        for (j = 0; j < (m->col_count - 1); j++) {
            fprintf(out, "%lf ", m->data[i][j]);
        }
        fprintf(out, "%lf\n", m->data[i][j]);
    }
}
 
static int is_endl(FILE* in) {
    int c;
    if ((c = fgetc(in)) == '\n')
        return 1;// ignore it
    else // push it back
        ungetc(c, in);
    return 0;
}
 
matrix_t* matrix_read(FILE* in) {
    matrix_t* m;
    size_t i, j, row, col;
 
    fscanf(in, "%z", &row);
    if (is_endl(in))
        col = row;
    else {
        fscanf(in, "%z", &col);
        is_endl(in);
    }
    if (m = matrix_create(row, col)){
        for (i = 0; i < m->row_count; ++i) {
            for (j = 0; j < m->col_count; ++j) {
                fscanf(in, "%ld", m->data[i]+j);
            }
            is_endl(in);
        }
    }
    return m;
}
matrix_t* matrix_multi(const matrix_t* a, const matrix_t* b) {
    matrix_t* result = NULL;
    size_t i, j, k;
 
    if (a->col_count != b->row_count)
        return NULL;
    if (result = matrix_create(a->row_count, b->col_count)) {
        for (i = 0; i < result->row_count; ++i) {
            for (j = 0; j <result->col_count; ++j) {
                result->data[i][j] = 0;
                for (k = 0; k < a->col_count; ++k) {
                    result->data[i][j] += a->data[i][k] * b->data[k][j];
                }
            }
        }
    }
    return result;
}
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
#include "extern_c.h"
extern_c_start
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "matrix_t.h"
 
number_t matrix_amax(const matrix_t* m) {
    number_t result;
    size_t i, j;
    result = m->data[0][0];
    for (i = 0; i < m->row_count; ++i) {
        for (j = 0; j < m->col_count; ++j) {
            if (fabs(m->data[i][j]) > fabs(result))
                result = m->data[i][j];
        }
    }
    return result;
}
void matrix_foreach(matrix_t* m) {
    number_t amax;
    size_t i, j;
 
    amax = matrix_amax(m);
    for (i = 0; i < m->row_count; ++i) {
        for (j = 0; j < m->col_count; ++j) {
            m->data[i][j] /= amax;
        }
    }
}
int main() {
    matrix_t* m;
    m = matrix_read(stdin);
    matrix_foreach(m);
    matrix_print(m, stdout);
    matrix_free(m);
    return 0;
}
 
extern_c_stop
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2014, 13:16
Помогаю со студенческими работами здесь

Получить новую матрицу путем умножения всех элементов данной матрицы на ее наибольший по модулю элемент
Помогите написать код для следующей программы, пожалуйста, ++реп гарантирован. Составить...

Получить новую матрицу путём деления всех элементов данной матрицы на наибольший по модулю элемент
Дана действительная матрица размером n*m. Получить новую матрицу путём деления всех элементов...

Получить новую матрицу путем деления всех элементов на ее наибольший по модулю элемент
Помогите написать программу на c++, задание: Дана действительная матрица размера n×m , в...

Получить новую матрицу путем умножения всех элементов данной матрицы на ее наименьший по модулю элемент
Получить новую матрицу путем умножения всех элементов данной матрицы на ее наименьший по модулю...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru