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

Дан двумерный массив. Составить программу,которая меняет местами две любые строки

25.06.2013, 21:18. Просмотров 1728. Ответов 2
Метки нет (Все метки)

Здравствуйте всем,эту задачу надо решить следующим образом:
1. Размерность исходного массива вводит пользователь
2. Исходный массив заполняется при помощи датчика случайный чисел (равномерный закон распределения) в отдельной программной функции.
4. После ввода размерности исходного массива вывести на экран его в матричном виде
5. Если результатом программы является массив - вывести его (или их) в матричном виде.

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

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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int rzr()
{
    int z=rand()%9-0;
    return z;
}
 
int main()
{
    int i,j,n,m;
    
    printf("vvedite kolichestvo strok ");
    scanf("%d", &n);
    printf("vvedite kolichestvo stolbcov ");
    scanf("%d", &m);
    
    int **M=(int**)malloc(n* sizeof(int*));
    for(i=0;i<n;i++)
    {
        M[i]=(int*) malloc(m*sizeof(int));
    }
    
    for(i=0;i<=n-1;i++)
    {
        for(j=0;j<=m-1;j++)
        {
            M[i][j]=rzr();
        }
    }
    printf("nachalniy massiv:");
    
    for(i=0;i<=n-1;i++)
    {
        printf("\n ");
        for(j=0;j<=m-1;j++)
        {
            printf(" %d",M[i][j]);
        }
    }
    
 
}
Добавлено через 1 минуту
Кстати,я делал на NetBeans 7.2
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2013, 21:18
Ответы с готовыми решениями:

Сформировать двумерный массив и поменять местами две строки
Сформировать случайным образом целочисленный двумерный массив и поменять местами две строки

Написать функцию, которая делит список элементов на две равные части и меняет их местами
написать функцию, которая делит список элементов на две равные части(если нечетное количество...

Составить программу, которая меняет местами две любые строки массива
Дан двумерный массив. Составить программу, которая меняет местами две любые строки массива.

Составить программу, которая переставляет две любые строки массива;
Дан двумерный массив. Составить программу, которая переставляет две любые строки массива с...

Составить программу, которая меняет местами i -й и j -й строки целочисленной матрицы A [ 1.3,1.4 ]
Составить программу, которая меняет местами i -й и j -й строки цилочисельной матрицы A Помогите...

2
Khelleos
39 / 39 / 25
Регистрация: 13.05.2010
Сообщений: 283
Записей в блоге: 1
27.06.2013, 08:27 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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
 
int rzr()
{
    int z=rand()%9-0;
    return z;
}
 
void print_massive(int **M, int n, int m)
{
    int i, j;
    for(i=0;i<=n-1;i++)
    {
        printf("\n ");
        for(j=0;j<=m-1;j++)
        {
            printf(" %d",M[i][j]);
        }
    }
}
 
int main()
{
    int i,j,n,m;
    
    printf("vvedite kolichestvo strok ");
    scanf("%d", &n);
    printf("vvedite kolichestvo stolbcov ");
    scanf("%d", &m);
    
    int **M=(int**)malloc(n* sizeof(int*));
    for(i=0;i<n;i++)
    {
        M[i]=(int*) malloc(m*sizeof(int));
    }
    
    for(i=0;i<=n-1;i++)
    {
        for(j=0;j<=m-1;j++)
        {
            M[i][j]=rzr();
        }
    }
    printf("nachalniy massiv:");
    print_massive(M, n, m);
 
    int l,k;
    int temp;
    printf("\nvvedite nomera strok, kotorii nado pomenat mestami cherez probel:");  // с учётом того, что нумерация начинается с 0
    scanf("%d %d", &l, &k);
    for(j = 0; j < m; j++)
    {
        temp = M[l][j];
        M[l][j] = M[k][j];
        M[k][j] = temp;
    }
    print_massive(M, n, m);
 
    for(i = 0; i < n; i++)
        free(M[i]);
    free(M);
 
    getch();
    return 0;
}
0
0_graf
6 / 6 / 7
Регистрация: 26.06.2013
Сообщений: 16
27.06.2013, 09:01 3
Можно воспользоваться тем, что M[i] это указатель и поэтому обменять только значения указателей.

Не совсем понятно, что значит меняет местами 2 любые строки.
Первая функция меняет местами 2 случайные строки.
C
1
2
3
4
5
6
7
8
9
10
11
// Меняет местами 2 случайно выбранные строки в матрице "a"
//n - количество строк
void Change2Lines(int **a, int n){
    int first, second;
    int *t;
    while((first = rand()%n) == (second = rand()%n))
        ;// исключает возможность обмена строки с собой
    t = a[first];
    a[first] = a[second];
    a[second] = t;
}
А вот эта меняет местами заданные строки.
C
1
2
3
4
5
6
7
// Меняет местами строки "first" и "second" в матрице "a"
void Change2Lines(int **a, int first, int second){
    int *t;
    t = a[first];
    a[first] = a[second];
    a[second] = t;
}
Как вызвать и передать параметры думаю разберешься сам.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2013, 09:01

Дан одномерный массив А, состоящий из N целых чисел. Составить программу, которая меняет порядок следования элементов на обратный
Дан одномерный массив А, состоящий из N целых чисел. Составить программу, которая меняет порядок...

Дан одномерный массив А, состоящий из N целых чисел. Составить программу, которая меняет порядок следования элементов на обратный.
Дан одномерный массив А, состоящий из N целых чисел. Составить программу, которая меняет порядок...

Составить программу которая меняет местами значения типа char
Помогите с заданием я не понимаю что тут надо делать. Это я перевела с латышского языка на русский,...


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

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

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