Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2015, 13:48   #1
TotEnot
Пользователь
 
Регистрация: 28.09.2015
Сообщений: 11
По умолчанию Указатели на двумерный массив

Добрый день.

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

Изначально мне неизвестны размеры массива т к я считываю всю информацию из файла. Поэтому я не могу написать, как приведено, например, у Праты:
Код:
#define COLS 3
void sum_rows (int (*ar)[COLS])
В связи с чем вопрос, как записать прототип и саму функцию в моем случае?

Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <conio.h>

double g_e(void (*matr)[], int row, int col); //прототип функции

int main()
{
    char finame[25];
    int n=0,m=0,i,j;
    double aij=0, sum=0;

    printf( "Enter the name of file: \n" );
    scanf( "%s", finame );

    FILE *fl = fopen( finame, "r" );

    if ( !fl )
       printf("Error!");

    else
    {
          fscanf (fl,"%d",&n);
          fscanf (fl,"%d",&m);

          if ((n==0) || (m==0))
          {
            printf("n=0 or m=0 in this file ");
            return 1;
          }

          printf ("%d\n", n);
          printf ("%d\n", m);

          double **matrica=(double **)malloc(n * sizeof(double *));
            for (i=0;i<n;i++)
                 matrica[i]=(double *)malloc(m * sizeof(double));

                 srand(time(NULL));


                    for (i=0; i<n; i++)
                    {
                        for (j=0; j<m; j++)
                        fscanf(fl,"%f",&matrica[i][j]);
                    }

                    for (i=0; i<n; i++)
                    {
                        for (j=0;j<m;j++)
                        {
                            aij=g_e(matrica,i,j); //обращение к функции
                            sum=sum+pow(fabs(aij),2);
                        }
                    }
                    double e_n=0;

                    e_n=sqrt(sum)
                    printf("en:%6.2f\n",e_n);


                    for (i = 0; i < n; i++)
                    free(matrica[i]);
                    free(matrica);
    }

    fclose(fl);

    getch();
    return 0;
}



double g_e(void matr[][n], int row, int col) //сама функция
{   int i,j;
    double aij;
    aij=matr[i][j];
    return aij;
}

Последний раз редактировалось TotEnot; 07.10.2015 в 13:51.
TotEnot вне форума Ответить с цитированием
Старый 07.10.2015, 14:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Изначально мне неизвестны размеры массива т к я считываю всю информацию из файла.
Храни размерность массива в самом массиве, как тут: http://www.programmersforum.ru/showp...4&postcount=27
Не смотря на то, что я всетки передаю при вводе массива его размер, дальнейшие функции (тот же вывод на экран) сами определяют размерность.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2015, 14:14   #3
TotEnot
Пользователь
 
Регистрация: 28.09.2015
Сообщений: 11
По умолчанию

спасибо, интересный вариант.

Последний раз редактировалось TotEnot; 07.10.2015 в 15:14.
TotEnot вне форума Ответить с цитированием
Старый 07.10.2015, 15:24   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да не за что )
пользуйся.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
Двумерный динамический массив и указатели Yaroma Общие вопросы Delphi 7 03.02.2014 07:31
Двумерный массив развернуть в одномерный массив по строкам[QBASIC] TrueStyle777 Помощь студентам 3 29.05.2013 21:56
Функции, указатели, двумерный массив MovsesIV Общие вопросы C/C++ 8 18.12.2010 23:19
массив и указатели SkrudjMakdak Общие вопросы Delphi 11 25.09.2010 13:07