Дан двумерный массив. Составить программу,которая меняет местами две любые строки - 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;
}

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. В функции Change2Lines передается двумерный массив a и два индекса first и second.
  2. Создается временная переменная t, которая содержит указатель на начало строки first.
  3. Значение t присваивается a[first], то есть a теперь содержит указатель на начало первой строки.
  4. Значение a[second], которое изначально содержит указатель на начало второй строки, присваивается t, то есть a теперь содержит указатель на начало второй строки.
  5. Значение t присваивается a[second], то есть a снова содержит исходные значения указателей на строки.
  6. Функция завершается, и измененный массив a возвращается в основную программу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы