С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
druger
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 57
1

Функция формирования новой матрицы

16.02.2012, 16:21. Просмотров 823. Ответов 1
Метки нет (Все метки)

Помогите составить функцию NewMatr, у меня она не правильная.
Вот условие задачи:Составить прогу,которая получает матрицу Х размерностью mxn. Прога в каждой строке определяет наименьший элемент и его индексы и формирует из этих чисел матрицу, расположив в первом её столбце наименьшие элементы строк, а во 2 и 3 столбцах их индексы.
P.S.то что выделено жирным, эту функцию нужно составить
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
#include <iostream.h>
#include <conio.h>
 
void MinElement (int A[][m],int n, int m, int imin, int jmin)
{
int imin=0; int jmin=0;
for (int i=0; i<n; i++)
   {
   int min=A[i][0];
   for (j=0; j<m; j++)
     {
     if (min>a[i][j])
       {
       min=A[i][j];
       imin=i;
       jmin=j;
}  } } }
 
void NewMatr (int B[][3], int n)
 {
 for (int x=0; x<n; x++)
 B[x][o]=min;
 for (int x=0; x<n; x++)
 for (int y=1; y<2; y++)
 B[x][2]=imin;
 B[x][3]=jmin;
 }
int ** input (int &n, int &m)
 {
 cout<<"\n vvedite n,m elementov\n";
 cin>>n>>m;
 int i,j;
 int **A=new int *[n];
 for (i=0;i<n;i++)
  A[i]=new int[m];
  cout<<"\n vvedite"<<n<<" strok po "<<m<<" elementam\n";
   for (i=0;i<n;i++)
    for (j=0;j<m;j++)
    cin>>A[i][j];
 return A;
 }
void output (int B[][3])
 {
 for (int x=0; x<N; x++)
 for (int y=0; y<M; y++)
 cout<<B[N][3]<<endl;
 
void main ()
 {
 clrscr ();
 int A[n][m], B[n][3];
 input(A);
 cout<<endl;
 cout<<"min,imin,jmin"<<endl;
 MinElement(A,n,m,imim,jmin);
 cout<<"Matr B"<<endl;
 output (B);
 getch();
 }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2012, 16:21
Ответы с готовыми решениями:

Функция формирования массива
Дано натуральное число n. Разработать функцию формирования массива, элементами...

Алгоритм для формирования матрицы
Необходимо сформировать матрицу по заданному образцу. Не могу придумать...

Программа формирования квадратной матрицы
Напишите программу формирования квадратной матрицы в c++ Такой вид: 1 1 1 1...

На главной диагонали новой матрицы разместить элементы заданного столбца исходной матрицы
У меня вот небольшой ступр, помогите, пожалуйста. Дана квадратная матрица...

Матрицы[макс. элементы, получение новой матрицы]
6. В данной квадратной целочисленной матрице порядка 17 указать индексы всех...

1
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
16.02.2012, 18:04 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
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
 
void
print_matrix(int** matrix, size_t lines, size_t cols)
{
    size_t i, j;
    for(i = 0; i < lines; ++i)
    {
        for(j = 0; j < cols; ++j)
            printf("%5d ", matrix[i][j]);
        putchar('\n');
    }
}
 
void
get_matrix(int** matrix, size_t lines, size_t cols, FILE* fp)
{
    size_t i, j;
    for(i = 0; i < lines; ++i)
        for(j = 0; j < cols; ++j)
            scanf("%d", &matrix[i][j]);
}
 
int**
alloc_matrix(size_t lines, size_t cols)
{
    int** matrix;
    size_t i;
    matrix = malloc(lines * sizeof(int*));
    for(i = 0; i < lines; ++i)
        matrix[i] = malloc(cols * sizeof(int));
    return matrix;
}
 
void
free_matrix(int** matrix, size_t lines)
{
    size_t i;
    for(i = 0; i < lines; ++i)
        free(matrix[i]);
    free(matrix);
}
 
size_t min_element_index(int* line, size_t length)
{
    size_t i;
    size_t idx = 0;
    int min = INT_MAX;
    for(i = 0; i < length; ++i)
        if(line[i] < min)
        {
            min = line[i];
            idx = i;
        }
    return idx;
}
 
void
fill_out_matrix(int** in, int** out, size_t lines, size_t cols)
{
    size_t i, j;
    for(i = 0; i < lines; ++i)
    {
        j = min_element_index(in[i], cols);
        out[i][0] = in[i][j];
        out[i][1] = i;
        out[i][2] = j;
    }
}
 
int
main()
{
    size_t m;
    size_t n;
    int** in_matrix;
    int** out_matr;
    
    printf("%s", "Enter dimensions:\n#lines=");
    scanf("%u", &m);
    printf("%s", "#columns=");
    scanf("%u", &n);
 
    in_matrix = alloc_matrix(m, n);
    printf("Input matrix elements (%ux%u):\n", m, n);
    get_matrix(in_matrix, m, n, stdin);
 
    out_matr = alloc_matrix(m, 3);
    fill_out_matrix(in_matrix, out_matr, m, n);
    print_matrix(out_matr, m, 3);
 
    free_matrix(out_matr, m);
    free_matrix(in_matrix, m);
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2012, 18:04

Построение новой матрицы по части заданой матрицы
Доброго времени суток, уважаемые форумчане!:) Не могу реализовать свою идею,...

Транспонировать квадратную матрицу, используя только оператор for. Новой матрицы не создавать. Вывести исходную и транспониро-ванную матрицы
Транспонировать квадратную матрицу, используя только оператор for. Новой...

Написать программу для формирования матрицы по ее внешнему виду.
Написать программу для формирования матрицы по ее внешнему виду. 5 4 3 2 1 6...


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

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

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