Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Александр Агиба
-12 / 0 / 0
Регистрация: 21.05.2017
Сообщений: 28
#1

Написать программу, которая вводит с файла элементы прямоугольной матрицы - C++

03.06.2017, 18:52. Просмотров 113. Ответов 1
Метки нет (Все метки)

Написать программу, которая вводит с файла элементы прямоугольной матрицы произвольного размера, рассчитывает среднее арифметическое для каждой строки и упорядочивает строки по этому показателю за ниспаданням. Результат сортировки выводится на экран.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2017, 18:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Написать программу, которая вводит с файла элементы прямоугольной матрицы (C++):

Написать программу, которая вводит с файла текст и переписывает его в новый файл - C++
Написать программу, которая вводит с файла текст и переписывает его в новый файл. При этом каждое слово записывается сзади наперед, но...

Написать программу, которая увеличивает положительные элементы матрицы - C++
Написать программу, которая увеличивает положительные элементы матрицы A(m*x) на 5 Переписывайте задачу непосредственно в сообщение!

Написать программу, которая вводит координаты точки (x, y) - C++
Вот не совсем понимаю после if, что писать по рисунку. 6 рисунок который квадратнообразный Нарушение правил форума п 5.18...

Написать программу, которая вводит две даты в формате «дд.мм.гг» - C++
Написать программу, которая вводит две даты в формате «дд.мм.гг» и выводит старшую дату.

Написать программу, которая вводит двумерный массив с клавиатуры... - C++
1.Написать программу, которая вводит двумерный массив с клавиатуры и вычисляет среднее арифметическое его элементов. 2.Написать...

Написать программу, которая вводит фактические данные из таблицы - C++
Написать программу, которая вводит фактические данные из таблицы, и выводит на экран таблицу, подобную той, таблице снизу изображение...

1
Геомеханик
763 / 569 / 392
Регистрация: 26.06.2015
Сообщений: 1,360
04.06.2017, 10:42 #2
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
#include <iostream>
#include <sstream>
#include <fstream>
int** matrix_alloc(int N, int M);
void  matrix_free(int** mat, int N);
bool  output_sort_avg(std::ostream& _out, std::istream& _in);
void  matrix_ssort(int** mat, int N, int M, double* avg);
 
int main(void){
    char s[] = 
    "5 4\n"\
    "1 2 3 4\n"\
    "2 2 2 2\n"\
    "8 9 0 1\n"\
    "1 1 1 1\n"\
    "3 2 4 6";
    std::istringstream sp(s);
    output_sort_avg(std::cout, sp);
 
/*     из файла
    std::ifstream fp("matrix.txt");
    output_sort_avg(std::cout, fp);
    fp.close();
*/
    std::cin.get();
    return 0;
}
 
bool output_sort_avg(std::ostream& _out, std::istream& _in){
    int r, c, N, M;
    if(!(_in >> N >> M) || (N <= 0) || (M <= 0))
        return false;
 
    int** mat = matrix_alloc(N, M);
    if(mat == NULL)
        return false;
 
    double* avg = new (std::nothrow) double[N];
    if(avg == NULL){
        matrix_free(mat, N);
        return false;
    }
    //ввод
    for(r = 0; r < N; ++r){
        for(c = 0; c < M; ++c)
            _in >> mat[r][c];
    }
 
    double sum;
    for(r = 0; r < N; ++r){
        sum = 0.0;
        for(int c = 0; c < M; ++c)
            sum += mat[r][c];
        avg[r] = sum / static_cast<double>(M);
    }
    matrix_ssort(mat, N, M, avg);
 
    for(r = 0; r < N; ++r){
        for(c = 0; c < M; ++c)
            _out << mat[r][c] << ' ';
        _out << std::endl;
    }
    delete[] avg;
    matrix_free(mat, N);
    return true;
}
 
//сортировка
void matrix_ssort(int** mat, int N, int M, double* avg){
    int j;
    for(int i = 0; i < N; ++i){
        j = i;
        for(int r = i + 1; r < N; ++r){
            if(avg[r] < avg[j])
                j = r;
        }
 
        if(i != j){
            std::swap(avg[i], avg[j]);
            for(int c = 0; c < M; ++c)
                std::swap(mat[i][c], mat[j][c]);
        }
    }
}
 
int** matrix_alloc(int N, int M){
    int** mat = new (std::nothrow) int*[N];
    if(mat == NULL)
        return NULL;
 
    for(int i = 0; i < N; ++i){
        if((mat[i] = new (std::nothrow) int[M]) == NULL){
            matrix_free(mat, i);
            mat = NULL;
            break;
        }
    }
    return mat;
}
 
void matrix_free(int** mat, int N){
    for(int i = 0; i < N; ++i)
        delete[] mat[i];
    delete[] mat;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2017, 10:42
Привет! Вот еще темы с ответами:

Написать программу, которая вводит целое число n и выделяет память - C++
3. Написать программу, которая вводит целое число n и выделяет память для массива из n данных типа: char, int, double. Перед завершением...

Написать программу, которая вводит с клавиатуры последовательность из пяти дробных чисел - C++
Помогите пожалуйста решить задачу на языке С++!!!Очень очень очень нужно!!! Написать программу, которая вводит с клавиатуры...

написать программу, которая вводит и суммирует любое количество целочисленных значений - C++
как написать программу, которая вводит и суммирует любое количество целочисленных значений. Если введено число 999, то на экран выводится...

Написать программу, которая вводит по строкам с клавиатуры двумерный масив и проводит вычисления - C++
Написать программу, которая вводит по строкам с клавиатуры двумерный масив и вычисляет его элементов по столбцам


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru