Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Упорядочить столбцы матрицы по неубыванию характер 
:(
    Опции темы
manichka2009
Дата 30.3.2014, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.3.2014

Репутация: нет
Всего: нет



Дана целочисленная матрица A(M,N). Характеристикой j –го столбца матрицы назовем значение элемента, который встречается максимальное число раз в j–ом столбце. Если таких элементов в строке несколько, то взять наименьший из них. Упорядочить столбцы матрицы по неубыванию характеристик. В программе предусмотреть динамическое выделение памяти.

У меня есть написанный код к этой задаче, только в ней не выделена динамическая память.


Код

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    srand( time( NULL ) );
    int a[100][100], b[100][2], N, M, i, j, t, k;
    printf("M= ");
    scanf("%d", &M);
    printf("N= ");
    scanf("%d", &N);
    printf("Ishodn matr:\n");
    for(i=0; i<M; i++)
    {
        for(j=0; j<N; j++)
        {
            a[i][j]=rand()%7;
            printf("%2d", a[i][j]);
        }
        printf("\n");
    }
    for(j=0; j<N; j++)
    {
        b[j][0]=a[0][j];
        b[j][1]=1;
        for(i=0; i<M; i++)
        {
            t=0;
            for(k=0; k<M; k++)
                if(a[i][j]==a[k][j])
                    t++;
            if(t>b[j][1] || (t==b[j][1] && b[j][0]>a[i][j]))
            {
                b[j][1]=t; b[j][0]=a[i][j];
            }
        }
    }
    for(j=0; j<N-1; j++)
    {
        t=j;
        for(i=j; i<N; i++)
            if(b[i][0]<b[t][0])
                t=i;
        for(i=0; i<M; i++)
        {
            k=a[i][j];
            a[i][j]=a[i][t];
            a[i][t]=k;
        }
        k=b[j][0]; b[j][0]=b[t][0]; b[t][0]=k;
    }
    printf("Preobr matr:\n");
    for(i=0; i<M; i++)
    {
        for(j=0; j<N; j++)
            printf("%2d", a[i][j]);
        printf("\n");
    }
    return 0;
}


PM MAIL   Вверх
borisbn
Дата 2.4.2014, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



меняешь
Код
int a[100][100], b[100][2]

на
Код
int **a;
int **b;
a = malloc( M * sizeof( int* ) );
b = malloc( M * sizeof( int* ) );
for ( i = 0; i < M; i++ ) {
    a[ i ] = malloc( N * sizeof( int ) );
    b[ i ] = malloc( 2 * sizeof( int ) );
}

строки, начиная с a = malloc( ... нужно поставить после строки scanf("%d", &N);
В самом конце (перед return 0) нужно добавить
Код
for ( i = 0; i < M; i++ ) {
    free( a[ i ] );
    free( b[ i ] );
}
free( a );
free( b );

Сам код/алгоритм не смотрел/не проверял


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
manichka2009
Дата 3.4.2014, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.3.2014

Репутация: нет
Всего: нет



Спасибо, помогло. smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0415 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.