singlepost

Переворачивание матрицы на си: в чем ошибка? << На главную или назад  

(переворачивание матрицы)

#include <stdafx.h>
void transp(int **a, int *n, int *m);
void main()
{
int i,n,m,a[100][100];
printf("vvedite razmer massiva ");
scanf("%d %d",&n,&m);
printf("vvedite elementbl massiva ");
for (int i=0;i<n;i++){
for (int j=0;j<m;j++)
scanf("%d",&a[i][j]);}
for (i=0;i<n;i++){
for (int j=0;j<m;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
printf("\n");
transp(a,&n,&m);
for ( i=0;i<n;i++){
for (int j=0;j<m;j++)
printf("%d\t",a[i][j]);
printf("\n");}

}

void transp(int **b,int *k,int *l)
{
int temp;
for(int i=0; i < *k/2; i++)
for (int j = 0; j < *l; j++){
temp = *(*(b+i)+j);
*(*(b+i)+j) = *(*(b+*k-1-i)+j);
*(*(b+*k-1-i)+j) = temp;
}
}

4 ответов в теме “Переворачивание матрицы на си: в чем ошибка?”

  1. 1
    Станислав Марков ответил:

    та была ж только что тема…или это опять ты)))

  2. 2
    Нету Нету ответил:

    это опять я))
    я сдал ту прогу. мне теперь надо обязательно использовать адреса указатели… чтото не получается)

  3. 3
    Нету Нету ответил:

    ошибка тут
    transp(a,&n,&m);

    cannot convert parameter1'from int[100][100]' to'int**'

  4. 4
    Павел Потапов ответил:

    Надо динамически выделять память под массивы. После ввода количества элементов делаем примерно так:

    int **a = new int[n];

    for (int i = 0; i < n; ++i)
    a[i] = new int[m];

    Далее все, как у тебя. Главное, перед выходом из программы не забыть освободить память:

    for (int i = 0; i < n; ++i)
    delete[] a[i];

    delete[] a;

    ЗЫ не проверял – могут быть ошибки.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.