Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
TheZimbabve
1 / 1 / 2
Регистрация: 10.06.2013
Сообщений: 71
1

Объявить двумерный массив динамически, заполнить его с клавиатуры и отсортировать

12.09.2013, 19:14. Просмотров 848. Ответов 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
#include <stdio.h>
#include <conio.h>
main()
{
    int i,n,j,elements,tmp;
    int **min, **max;
    int *lin;
    printf("Input razmernost massiva\n");
    scanf("%d",&n);
    int A[n][n];
    for(i=0;i<n;i++){
                     for(j=0;j<n;j++){
                                      printf("Input A[%d][%d] ",i,j);
                                      scanf("%d",&elements);
                                      A[i][j]=elements;
                                      }}
    for (i=0;i<n-1;i++){
                     for(j=n-1; j>i; j--){
                               if(A[j][n-j-1]<A[j-1][n-j])
                               { 
                                                          tmp=A[j][n-j-1];
                                                          A[j][n-j-1]=A[j-1][n-j];
                                                          A[j-1][n-j]=tmp;
                                                          }}}
       printf("\n\nPosle sortirovki:\n\n");
       for(i=0; i<n; i++)
       {
                for(j=0; j<n; j++)
                printf("%8.2d", A[i][j]);
                printf("\n");
                                }
             getch();}
Тут представлен вариант, в котором массив объявлен статически и он успешно сортируется.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <conio.h>
#include <stdlib.h>
main()
{
    int i,n,j,elements,tmp;
    printf("Input razmernost massiva\n");
    scanf("%d",&n);
    float **matr;
    matr=(float **)malloc(n* sizeof(float *));
    for(i=0;i<n;i++)
    {
                    matr[i]=(float *)malloc(n*sizeof(float *));}                
    
    for(i=0;i<n;i++){
                                      printf("Input matr[%d]",i);
                                      scanf("%d",&elements);
                                      matr[i]=elements;
                                      }
Я начал объявление динамически, но теперь не знаю, как заполнить массив и отсортировать его. Если пользоваться стандартным заполнением, как было раньше, и использовать сортировку из верхнего кода, то программа выдает нули. Что делать, куда копать и как все-таки заполняется двумерный динамический массив?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2013, 19:14
Ответы с готовыми решениями:

Объявить символьный массив из 10 элементов. Заполнить его буквами от a до j
Нужно написать программу, состоящую из трех функций – main(), fun1(), fun2(). В функции main()...

Заполнить двумерный массив с клавиатуры
помогите пожалуйста, как заполнить двумерный массив в ручную ? лазил по сайтам ничего не понял ....

Создать двумерный массив заполнить его рандомом
Помогите с задачей, Cоздать двумерный массив заполнить его рандомом, и обработать след образом для...

Как создать динамический двумерный массив и самому его заполнить?
Как создать динамический двумерный массив и самому его заполнить?

Переписать двумерный массив в одномерный и отсортировать его в порядке убывания (методом выбора)
Разработать программу, что переписывает двумерный массив в одномерный и сортирует его в порядке...

2
UranFlex
131 / 129 / 51
Регистрация: 25.05.2013
Сообщений: 233
12.09.2013, 19:31 2
1. Автоматическое заполнение квадратной матрицы псевдослучайными числами
Кликните здесь для просмотра всего текста
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 <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
 
//функция заполняет матрицу псевдослучайными данными
void FillMatrix( int** matrix, const int size, const unsigned randRange, const int shift );
//функция печатает матрицу
void PrintMatrix( int** matrix, const int size );
 
int main( void ) {
 
    srand( time( 0 ) ); // засеять генератор случайных чисел
 
    // запрашиваем у пользователя данные для матрицы
    int size;
    printf( "Введите размер квадратной матрицы " );
    scanf( "%u", &size );
 
    // объявляем нашу матрицу как указатель на int и выделяем необходимую память для нее
    int** a = ( int** ) calloc( size, sizeof(int*) );
    int i;
    for ( i = 0; i < size; ++i )
        a[ i ] = ( int* ) calloc( size, sizeof(int) );
 
    // заполняем матрицу псевдослучайными значениями типа int
    FillMatrix( a, size, 100, 0 );
 
    // выводим матрицу на экран
    puts( "Исходная матрица" );
    PrintMatrix( a, size );
 
    // освобождаем память, выделенную под матрицу
    for ( i = 0; i < size; ++i )
        free( a[ i ] );
 
    free( a );
 
    return EXIT_SUCCESS;
}
 
void FillMatrix( int** matrix, const int size, const unsigned randRange, const int shift ) {
    int i, j;
    for ( i = 0; i < size; ++i )
        for ( j = 0; j < size; ++j )
            // shift - начальное значение диапазона, randRange - диапазон значений
            matrix[ i ][ j ] = shift + rand() % randRange;
}
 
void PrintMatrix( int** matrix, const int size ) {
    int i, j;
    for ( i = 0; i < size; ++i ) {
 
        for ( j = 0; j < size; ++j )
            printf( "%4d ", matrix[ i ][ j ] );
 
        puts( "" );
    }
}


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
#include <stdio.h>
#include <stdlib.h>
 
//функция заполняет матрицу данными с пользовательского ввода
void FillMatrix( int** matrix, const int size );
//функция печатает матрицу
void PrintMatrix( int** matrix, const int size );
 
int main( void ) {
 
    // запрашиваем у пользователя данные для матрицы
    int size;
    printf( "Введите размер квадратной матрицы " );
    scanf( "%u", &size );
 
    // объявляем нашу матрицу как указатель на int и выделяем необходимую память для нее
    int** a = ( int** ) calloc( size, sizeof(int*) );
    int i;
    for ( i = 0; i < size; ++i )
        a[ i ] = ( int* ) calloc( size, sizeof(int) );
 
    // заполняем матрицу вручную значениями типа int
    FillMatrix( a, size );
 
    // выводим матрицу на экран
    puts( "Исходная матрица" );
    PrintMatrix( a, size );
 
    // освобождаем память, выделенную под матрицу
    for ( i = 0; i < size; ++i )
        free( a[ i ] );
 
    free( a );
 
    return EXIT_SUCCESS;
}
 
void FillMatrix( int** matrix, const int size ) {
    int i, j;
    for ( i = 0; i < size; ++i )
        for ( j = 0; j < size; ++j ) {
            printf( "%s [ %d ] [ %d ] ", "Введите элемент матрицы", i, j );
            scanf( "%d", &matrix[ i ][ j ] );
        }
}
 
void PrintMatrix( int** matrix, const int size ) {
    int i, j;
    for ( i = 0; i < size; ++i ) {
 
        for ( j = 0; j < size; ++j )
            printf( "%4d ", matrix[ i ][ j ] );
 
        puts( "" );
    }
}
}
1
TheZimbabve
1 / 1 / 2
Регистрация: 10.06.2013
Сообщений: 71
12.09.2013, 19:40  [ТС] 3
Спасибо, принялся к детальному изучению.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2013, 19:40

Заполнить массив из 10 элементов случайными числами в интервале [0..100] и отсортировать его по последней цифре
Заполнить массив из 10 элементов случайными числами в интервале и отсортировать его по последней...

Одномерный массив, состоящий из 5 элементов. Заполнить с клавиатуры и вывести на экран его значения
Привет, знатокам!!! Есть начало программы, нужна оконцовка. Не получается. Подскажите пожалуйста. ...

Массив: Подскажите, как задать размерность массива с клавиатуры и заполнить этот массив с клавиатуры?
Всем привет! Подскажите как задать размерность массива с клавиатуры и заполнить этот массив с...


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

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

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