Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
06.11.2013, 01:34     Действия с матрицей вещественных чисел NxM #1
Дана матрица вещественных чисел N х М. Количество строк N и столбцов М задается пользователем. Найти максимальный и минимальный элемент в каждой строке и поменять их местами. Найти сумму элементов на главной диагонали.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dalay_lama
 Аватар для dalay_lama
65 / 65 / 7
Регистрация: 22.09.2012
Сообщений: 434
06.11.2013, 04:43     Действия с матрицей вещественных чисел NxM #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;
}
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
06.11.2013, 22:41  [ТС]     Действия с матрицей вещественных чисел NxM #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 соответственно, можно ли это сделать?
dalay_lama
 Аватар для dalay_lama
65 / 65 / 7
Регистрация: 22.09.2012
Сообщений: 434
07.11.2013, 03:16     Действия с матрицей вещественных чисел NxM #4
Да, можно канешно, если при этом никаких синтаксических ошибок не допустили то все верно, я по крайней мере с первого взгляда ошибок не увидел

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

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

Добавлено через 1 минуту
если вы в функции showArray ничего не меняли, то там таже ошибка что и в функции inputArray
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
07.11.2013, 22:35  [ТС]     Действия с матрицей вещественных чисел NxM #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]);
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 16:32     Действия с матрицей вещественных чисел NxM
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
dalay_lama
 Аватар для dalay_lama
65 / 65 / 7
Регистрация: 22.09.2012
Сообщений: 434
08.11.2013, 16:32     Действия с матрицей вещественных чисел NxM #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 цифры после запятой, можешь поменять на то число которое тебе нужно
Yandex
Объявления
08.11.2013, 16:32     Действия с матрицей вещественных чисел NxM
Ответ Создать тему
Опции темы

Текущее время: 13:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru