Дан двумерный массив. Составить программу,которая меняет местами две любые строки - C (СИ)
Формулировка задачи:
Здравствуйте всем,эту задачу надо решить следующим образом:
1. Размерность исходного массива вводит пользователь
2. Исходный массив заполняется при помощи датчика случайный чисел (равномерный закон распределения) в отдельной программной функции.
4. После ввода размерности исходного массива вывести на экран его в матричном виде
5. Если результатом программы является массив - вывести его (или их) в матричном виде.
У меня получилось создать матрицу,в котором элементы массива выбираются случайным образом,а дальше программу которая меняет местами две любые строки,мне составить не удается помогите люди добрые пожалуйста,очень надо...
А собственно,вот и начало программы:
#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]); } } }
Кстати,я делал на NetBeans 7.2
Решение задачи: «Дан двумерный массив. Составить программу,которая меняет местами две любые строки»
textual
Листинг программы
// Меняет местами строки "first" и "second" в матрице "a" void Change2Lines(int **a, int first, int second){ int *t; t = a[first]; a[first] = a[second]; a[second] = t; }
Объяснение кода листинга программы
В данном коде происходит следующее:
- В функции
Change2Lines
передается двумерный массивa
и два индексаfirst
иsecond
. - Создается временная переменная
t
, которая содержит указатель на начало строкиfirst
. - Значение
t
присваиваетсяa[first]
, то естьa
теперь содержит указатель на начало первой строки. - Значение
a[second]
, которое изначально содержит указатель на начало второй строки, присваиваетсяt
, то естьa
теперь содержит указатель на начало второй строки. - Значение
t
присваиваетсяa[second]
, то естьa
снова содержит исходные значения указателей на строки. - Функция завершается, и измененный массив
a
возвращается в основную программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д