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

Функции, операции над двумерными массивами - C++

Восстановить пароль Регистрация
 
flesabro
Сообщений: n/a
27.12.2012, 09:29     Функции, операции над двумерными массивами #1
Задача : Дана матрица разрема NxM. Каждый элемент этой матрицы заменить числом , равным количеству элементов матрицы ,которые не превышают данного элемента.После этого отсортировать каждый столбец получившейся матрицы по убыванию и вывести ее на экран.
Наработки:
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
//Подключение стандартной библиотеки
#include <stdio.h>
//подключение библиотеки, в которой есть функция setlocale
#include <locale>
//функция вывода B
void B_write(int n,int m,float B[100][100])
{
    int i,j;    
    printf("матрица B\n");
    //вывод B,значение i j того элемента-количество элементов матрицы A, не превышающих значение A[i][j]
    //считая сам элемент i j 
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            if(j==m-1)
        printf("%f\n",B[i][j]);
            else printf("%f",B[i][j]);
}
//функция сортирующая столбцы матрицы B по убыванию и выводящая окончательную матрицу на экран
void finish(int n,int m,float B[100][100])
{
    int j,i,k,l;
j=0;
    float puzirek=0;
    do
    {
        for(i=0;i<n;i++)
            for(k=0;k<n;k++)
                if((B[i][j]>B[k][j])&&(i>k))
                    {
                        puzirek=B[i][j];
                        B[i][j]=B[k][j];
                        B[k][j]=puzirek;
                    }
                j++;
    }
 
    while(j!=m);
        printf("Полученная матрица\n");
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            if(j==m-1)
        printf("%f\n",B[i][j]);
            else printf("%f",B[i][j]);
    
}
//основная программа
int main()
{
    //введение переменной-основной матрицы
    float A[100][100];
    //введение переменной-матрицы, значение i j того элемента-количество элементов матрицы A, не превышающих значение A[i][j]
    //считая сам элемент i j
    float B[100][100];
    int n,m;
    int i,j,k,l;
    setlocale(LC_ALL,"Russian");
    scanf("%d\n%d",&n,&m);
//считывание А из файла
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            scanf("%f",&A[i][j]);
 
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        B[i][j]=0;
    //заполнение матрицы B
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        for(k=0;k<n;k++)
        for(l=0;l<m;l++)
                if(A[k][l]<=A[i][j])
                    B[i][j]++;
    
    B_write(n,m,B);
    finish(n,m,B);
    system("PAUSE");
}
Прошу помочь доработать , сделал в основном все но программа работает не правильно ,помогите ... надо сдать сегодня

Добавлено через 5 часов 23 минуты
Все поменял , разобрался
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 <stdio.h>
//подключение библиотеки, в которой есть функция setlocale
#include <locale>
void vivod(int n,int m,float A[100][100])
{
    int i,j;
 
    printf("Полученная матрица\n");
    for(j=0;j<m;j++)
        for(i=0;i<n;i++)
            if(i==n-1)
        printf("%f\n",A[i][j]);
            else printf("%f",A[i][j]);
}
void obrabotka(int n,int m,float A[100][100])
{
    float puzirek=0;
    int i,j,k,zamena;
 
    zamena=n*m;
    //Условие 1 
    for(i=0;i<n;i++)    
            for(k=0;k<m;k++)
                if (A[i][k]<zamena)
                    A[i][k]=zamena;
    //Условие 2
    for(i=0;i<n;i++)
    {
            for(j=0;j<n;j++)
                if((A[i][k]>A[i][k++])&&(k<j))
                    {
                        puzirek=A[i][k];
                        A[i][k++]=A[i][k];
                        A[i][k]=puzirek;
                    }
                k++;
    }
    vivod(n,m,A);
}
void vvod()
{
    
    float A[100][100];
    int i,j,m,n;
 
    printf("Введите n ");
    scanf("%d",&n);
    printf("Введите m ");
    scanf("%d",&m);
//считывание А 
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            scanf("%f",&A[i][j]);
    obrabotka(n,m,A);
}
//основная программа
float main()
{
    setlocale(LC_ALL,"Russian");
    vvod();
    system("PAUSE");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2012, 09:29     Функции, операции над двумерными массивами
Посмотрите здесь:

C++ операции над одномер.массивами:)
C++ операции над массивами
C++ операции над одномерными массивами
Операции над одномерными и двумерными массивами C++
Операции над двумерными массивами C++
C++ Операции над вещественными массивами, считываемыми из файла
Операции над одномерными массивами C++
Операции с двумерными массивами C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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