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

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

Войти
Регистрация
Восстановить пароль
 
Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
#1

Действия с матрицей вещественных чисел NxM - C++

06.11.2013, 01:34. Просмотров 707. Ответов 7
Метки нет (Все метки)

Дана матрица вещественных чисел N х М. Количество строк N и столбцов М задается пользователем. Найти максимальный и минимальный элемент в каждой строке и поменять их местами. Найти сумму элементов на главной диагонали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 01:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Действия с матрицей вещественных чисел NxM (C++):

Описать класс для работы с матрицей вещественных чисел. - C++
Здравствуйте. Помогите пожалуйста разработать программу с классами. Задание: Описать класс CFMATRIX2 для работы с матрицей ...

Описать класс CFMATRIX1 для работы с матрицей вещественных чисел - C++
Описать класс CFMATRIX1 для работы с матрицей вещественных чисел. Класс должен реализовывать следующие операции над матрицами: сложение,...

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

Действия с прямоугольной матрицей - C++
Здравствуйте уважаемые программисты. Помогите решить задачку или натолкнуть на правильный алгоритм. Задана прямоугольная матрица B...

Среди 5 вещественных чисел найти количество чисел, принадлежащих отрезку от -5 до 7 - C++
Написать программу которая среди 5 вещественных чисел находит кол-во чисел принадлежащих отрезку от -5 до 7

Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. - C++
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20.

7
dalay_lama
77 / 77 / 16
Регистрация: 22.09.2012
Сообщений: 481
06.11.2013, 04:43 #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
#include <iostream>
void inputArray(double **arr, int rows, int columns);
void showArray(double **arr, int rows, int columns);
using std::cout;
using std::cin;
using std::endl;
int main()
{
    int N, M;
    cout <<"Enter the number of lines: ";
    cin >>N;
    cout <<"Enter the number of columns: ";
    cin >>M;
    
    double **array = new double* [N];
    for (int i = 0; i < N; i++)
        array[i] = new double[M];
    
    inputArray(array, N, M);
    showArray(array, N, M);
    
    int indexMax = 0, indexMin = 0;
    double temp;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            indexMax = array[i][indexMax] < array[i][j]? j:indexMax;
            indexMin = array[i][indexMin] > array[i][j]? j:indexMin;
        }
        temp = array[i][indexMax];
        array[i][indexMax] = array[i][indexMin];
        array[i][indexMin] = temp;
    }
    
    showArray(array, N, M);
    return 0;
    
}
void inputArray(double **arr, int rows, int columns)
{
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < columns; j++)
        {
            cout <<"Enter the element array #[" <<i <<"][" <<j <<"]: ";
            cin >>arr[i][j];
        }
}
void showArray(double **arr, int rows, int columns)
{
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < columns; j++)
            cout <<arr[i][j] <<" ";
        cout <<endl;
    }
    cout <<endl;
}
Добавлено через 6 минут
Забыл про сумму диагоналей
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
#include <iostream>
void inputArray(double **arr, int rows, int columns);
void showArray(double **arr, int rows, int columns);
using std::cout;
using std::cin;
using std::endl;
int main()
{
    int N, M;
    cout <<"Enter the number of lines: ";
    cin >>N;
    cout <<"Enter the number of columns: ";
    cin >>M;
    
    double **array = new double* [N];
    for (int i = 0; i < N; i++)
        array[i] = new double[M];
    
    inputArray(array, N, M);
    cout <<"BEFORE....\n";
    showArray(array, N, M);
 
    int indexMax = 0, indexMin = 0;
    double temp, sum = 0;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            indexMax = array[i][indexMax] < array[i][j]? j:indexMax;
            indexMin = array[i][indexMin] > array[i][j]? j:indexMin;
            if (i == j)
                sum += array[i][j];
        }
        temp = array[i][indexMax];
        array[i][indexMax] = array[i][indexMin];
        array[i][indexMin] = temp;
    }
    
    cout <<"AFTER....\n";
    showArray(array, N, M);
    cout <<"Sum of the elements of the main diagonal = " <<sum <<endl;
    return 0;
    
}
void inputArray(double **arr, int rows, int columns)
{
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < columns; j++)
        {
            cout <<"Enter the element array #[" <<i <<"][" <<j <<"]: ";
            cin >>arr[i][j];
        }
}
void showArray(double **arr, int rows, int columns)
{
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < columns; j++)
            cout <<arr[i][j] <<" ";
        cout <<endl;
    }
    cout <<endl;
}
1
Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
06.11.2013, 22:41  [ТС] #3
Я переписал его так:
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
#include <iostream>
void inputArray(double **arr, int rows, int columns);
void showArray(double **arr, int rows, int columns);
int main()
{
    int N, M;
    printf ("Enter the number of lines: ");
    scanf ("%d", &N);
    printf ("Enter the number of columns: ");
    scanf ("%d", &M);
    
    double **array = new double* [N];
    for (int i = 0; i < N; i++)
        array[i] = new double[M];
    
    inputArray(array, N, M);
    printf ("BEFORE....\n");
    showArray(array, N, M);
 
    int indexMax = 0, indexMin = 0;
    double temp, sum = 0;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            indexMax = array[i][indexMax] < array[i][j]? j:indexMax;
            indexMin = array[i][indexMin] > array[i][j]? j:indexMin;
            if (i == j)
                sum += array[i][j];
        }
        temp = array[i][indexMax];
        array[i][indexMax] = array[i][indexMin];
        array[i][indexMin] = temp;
    }
    
    printf ("AFTER....\n");
    showArray(array, N, M);
    printf ("Sum of the elements of the main diagonal = ");
    return 0;
    
}
void inputArray(double **arr, int rows, int columns)
{
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < columns; j++)
        {
            printf ("Enter the element array #[" <<i <<"][" <<j <<"]: ");
            scanf ("%f", &arr[i][j]);
        }
}
void showArray(double **arr, int rows, int columns)
{
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < columns; j++)
            printf (" ", arr[i][j]);
    }
}
Я это правильно сделал? что записать вместо строчки:
C++
1
printf ("Enter the element array #[" <<i <<"][" <<j <<"]: ");
Вообще хотел заменить cout и cin на printf и scanf соответственно, можно ли это сделать?
0
dalay_lama
77 / 77 / 16
Регистрация: 22.09.2012
Сообщений: 481
07.11.2013, 03:16 #4
Да, можно канешно, если при этом никаких синтаксических ошибок не допустили то все верно, я по крайней мере с первого взгляда ошибок не увидел

Добавлено через 7 минут
Наврал, ошибка есть
функция вывода на экран сообщения о том какой элемент ввести не правильно написанна, что-бы отборозить переменную через printf нужно в строковом литрале указать её тип в данном случае %d и после него уже указать какую переменную отобразить, примерно так:
C++
1
printf("element [%d][%d]: ", i, j);
Как scanf, только без знака & указывается какие переменные отобразить
1
Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
07.11.2013, 04:38  [ТС] #5
Цитата Сообщение от dalay_lama Посмотреть сообщение
Да, можно канешно, если при этом никаких синтаксических ошибок не допустили то все верно, я по крайней мере с первого взгляда ошибок не увидел

Добавлено через 7 минут
Наврал, ошибка есть
функция вывода на экран сообщения о том какой элемент ввести не правильно написанна, что-бы отборозить переменную через printf нужно в строковом литрале указать её тип в данном случае %d и после него уже указать какую переменную отобразить, примерно так:
C++
1
printf("element [%d][%d]: ", i, j);
Как scanf, только без знака & указывается какие переменные отобразить
Изменил, добавил в код, все равно что-то не получается, после ввода элементов в массив ничего не выводит, ни До, ни После, ни Сумму. В чем еще ошибка?
Может cout <<endl; Может эту строчку не вставил, я просто не понимаю ее.
0
dalay_lama
77 / 77 / 16
Регистрация: 22.09.2012
Сообщений: 481
07.11.2013, 04:44 #6
Цитата Сообщение от Vonka Посмотреть сообщение
cout <<endl; я просто не понимаю ее.
- это перевод на новую строку. Выложите пожалуйста полной код того, что у вас получилось

Добавлено через 1 минуту
если вы в функции showArray ничего не меняли, то там таже ошибка что и в функции inputArray
1
Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
07.11.2013, 22:35  [ТС] #7
Цитата Сообщение от dalay_lama Посмотреть сообщение
- это перевод на новую строку. Выложите пожалуйста полной код того, что у вас получилось

Добавлено через 1 минуту
если вы в функции showArray ничего не меняли, то там таже ошибка что и в функции inputArray
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
#include <iostream>
void inputArray(double **arr, int rows, int columns);
void showArray(double **arr, int rows, int columns);
int main()
{
    int N, M;
    printf ("Enter the number of lines: ");
    scanf ("%d", &N);
    printf ("Enter the number of columns: ");
    scanf ("%d", &M);
    
    double **array = new double* [N];
    for (int i = 0; i < N; i++)
        array[i] = new double[M];
    
    inputArray(array, N, M);
    printf ("BEFORE....\n");
    showArray(array, N, M);
 
    int indexMax = 0, indexMin = 0;
    double temp, sum = 0;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            indexMax = array[i][indexMax] < array[i][j]? j:indexMax;
            indexMin = array[i][indexMin] > array[i][j]? j:indexMin;
            if (i == j)
                sum += array[i][j];
        }
        temp = array[i][indexMax];
        array[i][indexMax] = array[i][indexMin];
        array[i][indexMin] = temp;
    }
    
    printf ("AFTER....\n");
    showArray(array, N, M);
    printf ("Sum of the elements of the main diagonal = ");
    return 0;
    
}
void inputArray(double **arr, int rows, int columns)
{
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < columns; j++)
        {
            printf("element [%d][%d]: ", i, j);
            scanf ("%d", &arr[i][j]);
        }
}
void showArray(double **arr, int rows, int columns)
{
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < columns; j++)
            printf (" ", arr[i][j]);
    }
}
0
dalay_lama
77 / 77 / 16
Регистрация: 22.09.2012
Сообщений: 481
08.11.2013, 16:32 #8
в общем вариант с printf у тебя такой будет
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
#include <iostream>
#include <cstdio>
void inputArray(float **arr, int rows, int columns);
void showArray(float **arr, int rows, int columns);
int main()
{
    int N, M;
    printf ("Enter the number of lines: ");
    scanf ("%d", &N);
    printf ("Enter the number of columns: ");
    scanf ("%d", &M);
    
    float **array = new float* [N];
    for (int i = 0; i < N; i++)
        array[i] = new float[M];
    
    inputArray(array, N, M);
    printf ("BEFORE....\n");
    showArray(array, N, M);
    
    int indexMax = 0, indexMin = 0;
    double temp, sum = 0;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            indexMax = array[i][indexMax] < array[i][j]? j:indexMax;
            indexMin = array[i][indexMin] > array[i][j]? j:indexMin;
            if (i == j)
                sum += array[i][j];
        }
        temp = array[i][indexMax];
        array[i][indexMax] = array[i][indexMin];
        array[i][indexMin] = temp;
    }
    
    printf ("AFTER....\n");
    showArray(array, N, M);
    printf ("Sum of the elements of the main diagonal = %.2f", sum);
    return 0;
    
}
void inputArray(float **arr, int rows, int columns)
{
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < columns; j++)
        {
            printf("enter the element [%d][%d]: ", i, j);
            scanf ("%f", &arr[i][j]);
        }
}
void showArray(float **arr, int rows, int columns)
{
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < columns; j++)
            printf ("%.2f ", arr[i][j]);
        printf("\n");
    }
}
если изменить количество цифр после запятой то оперируй этим здесь - printf ("%.2f ", arr[i][j]); - сейчас указанно 2 цифры после запятой, можешь поменять на то число которое тебе нужно
1
08.11.2013, 16:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 16:32
Привет! Вот еще темы с ответами:

Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20 - C++
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. Добавлено через 53 секунды...

Дано n вещественных чисел, которые вводятся с клавиатуры. Вычислить сумму чисел, кратных 3 - C++
Помогите, пожалуйста. Дано n вещественных чисел, которые вводятся с клавиатуры. Вычислить сумму чисел, кратных 3.

Ввести целое число и набор из вещественных чисел, вывести сумму и произведение чисел из набора - C++
ввести целое число N (больше 0) и набор из N вещественных чисел вывести сумму и произведение чисел из данного набора

В последовательности вещественных чисел подсчитать произведение чисел, кратных 3 - C++
В последовательности вещественных чисел подсчитать произведение чисел, кратных 3.


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

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

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