Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти сумму квадратов тех элементов Срочно нужно сделать до завтра задачку: "Найти сумму квадратов тех элементов aij матрицы, {a}_{i,j=1...10} для которых выполнено 2\leq i\leq 9,\; 2\leq j \leq 9,\; {a}_{ij} \geq \frac{{a}_{i-1j}... https://www.cyberforum.ru/ cpp-beginners/ thread1282162.html C++ Вывод сообщений, через один if
Всем привет, я не знаю есть такая тема или нет, запрос не могу правильно составвить! Но такая проблема: Нужно вывести сообщения: cout << "Выгоднее купить большую пиццу.\n"; cout << "Выгоднее...
C++ Блок-схемы к задачам https://www.cyberforum.ru/ cpp-beginners/ thread1282147.html
Помогите пожалуйста нарисовать блок-схему к задаче.Очень срочно.Заранее спасибо. #include <iostream> #include <cmath> #include <conio.h> using namespace std; int main(){ setlocale(LC_ALL,...
C++ Блок-схемы к задачам Помогите пожалуйста нарисовать блок-схему к задаче.Очень срочно.Заранее спасибо. #include "stdafx.h" #include <iostream> #include <conio.h> #include <iomanip> using namespace std; void... https://www.cyberforum.ru/ cpp-beginners/ thread1282144.html
Блок-схемы к задачам C++
Помогите пожалуйста нарисовать блок-схемы к задаче.Очень срочно.Заранее спасибо. #include <iostream> #include <iomanip> #define N 6 #define M 9 using namespace std; int main() { int i, j,...
C++ Блок-схемы к задачам https://www.cyberforum.ru/ cpp-beginners/ thread1282141.html
Помогите пожалуйста нарисовать блок-схемы к задаче.Очень срочно.Заранее спасибо. #include <stdio.h> #include <conio.h> #include <math.h> #include <iostream> #define N 3 using namespace std;...
C++ игнорируется ввод строки Перестаньте создавать новые темы по одной и той же задаче! почему игнорируется cin.getline(found, 30) void main (){ int qy=0; quantity (qy); stud **folio= new stud* ; for (int i=0; i<qy;... https://www.cyberforum.ru/ cpp-beginners/ thread1282120.html Найти минимальный среди элементов, лежащих ниже главной диагонали C++
Ввести матрицу размером NxM. Память для массива выделить динами-чески. Выполнить в соответствии с номером варианта индивидуальное зада -ние и вывести на экран исходные данные и...
C++ Перевод в динамический массив https://www.cyberforum.ru/ cpp-beginners/ thread1282107.html
Помогите перевести в динамически массив. #include<iostream> #include<iomanip> #include<ctime> #define N 10 using namespace std; int main() { srand(time(NULL));
C++ Построить отрезок между двумя точками, определенными как экземпляры класса Point помогите пожалуйста. класс с координатами есть осталось построить отрезок между двумя точками, определенными как экземпляры класса «точка». #include <iostream> class Point { float x; ... https://www.cyberforum.ru/ cpp-beginners/ thread1282106.html
Ошибка кода (switch) C++
Помогите пожалуйста. void __fastcall TForm1::Button1Click(TObject *Sender) { float x, y, k, r, s; int n, i; x=StrToFloat(Edit1->Text); i=1; Memo1->Clear(); sw: switch (i)
C++ Определить наименьший элемент каждой четной строки матрицы A[N,N] https://www.cyberforum.ru/ cpp-beginners/ thread1282083.html
Определить наименьший элемент каждой четной матрицы A кто поможет?
шКодер самоучка
2171 / 1878 / 912
Регистрация: 09.10.2013
Сообщений: 4,125
Записей в блоге: 7
23.10.2014, 13:16 0

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

23.10.2014, 13:16. Показов 5224. Ответов 2
Метки (Все метки)

Ответ

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


Вернуться к обсуждению:
Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент C++
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2014, 13:16
Готовые ответы и решения:

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

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

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

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

2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2014, 13:16
Помогаю со студенческими работами здесь

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

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

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

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

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