Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 25.06.2013
Сообщений: 5
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте всем,эту задачу надо решить следующим образом:
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2013, 21:18
Ответы с готовыми решениями:

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

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

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

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

2
39 / 39 / 24
Регистрация: 13.05.2010
Сообщений: 282
Записей в блоге: 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
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
27.06.2013, 09:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2013, 09:01
Помогаю со студенческими работами здесь

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

Дан двумерный массив. Составить программу вычисления среднего арифметического каждой строки
Дан двумерный массив. Составить программу вычисления среднего арифметического каждой строки....

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru