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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2015, 23:43   #1
TotEnot
Пользователь
 
Регистрация: 28.09.2015
Сообщений: 11
По умолчанию Объявление массива СИ

Здравствуйте!

Вопрос вот в чем.
Создаю массив, например, float mass[100][100]
затем считываю число строк n, столбцов m , циклами for считываю в массив элементы типа float. Все ок.
Но я хочу иметь четко массив float mass[n][m].
И это объявление массива я вставляю после функций считки
fscanf (fl,"%d",&n);
fscanf (fl,"%d",&m);

И вот тогда возникает ошибка, пишет, что мой массив undeclared.

Как решить проблему?
А может, проблема и не здесь, а более глобальная)

код:

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





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


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

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

    if ( fl )
        {
            fscanf (fl,"%d",&n);
            fscanf (fl,"%d",&m);
            printf ("%d\n", n);
            printf ("%d\n", m);

            float mass[n][m];


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

        else
        printf( "Error!" );

        fclose(fl);

        for (i=0;i<n;i++)
         {
            for (j=0;j<m;j++)
            printf ("%5f\t", mass[i][j]);
            printf ("\n");
         }

    return 0;
}

Последний раз редактировалось TotEnot; 06.10.2015 в 17:29. Причина: добавлен код
TotEnot вне форума Ответить с цитированием
Старый 05.10.2015, 23:49   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

гугл по фразе С динамические массивы все расскажет... познакомьтесь с функциями типа malloc
p51x вне форума Ответить с цитированием
Старый 05.10.2015, 23:51   #3
TotEnot
Пользователь
 
Регистрация: 28.09.2015
Сообщений: 11
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
гугл по фразе С динамические массивы все расскажет... познакомьтесь с функциями типа malloc
Та же самая проблема и с malloc
Тот же самый пример, только с дин. массивом, ошибка в том же месте

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


int main()
{
    char finame[25];
    int n,m,i,j;


    printf( "Enter the name of file: \n" );
    scanf( "%s", finame );
    FILE *fl = fopen( finame, "r" );
    if ( fl )
        {
            fscanf (fl,"%d",&n);
            fscanf (fl,"%d",&m);
            printf ("%d\n", n);
            printf ("%d\n", m);


               float **matrica=(float **)malloc(n * sizeof(float *));
               for (i=0;i<n;i++)
                    matrica[i]=(float *)malloc(m * sizeof(float));
                    srand(time(NULL));


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




        }
       else
            printf( "Error!" );
            fclose(fl);

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

                printf("\n");
            }



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

    getch();
    return 0;
}

Последний раз редактировалось Stilet; 06.10.2015 в 09:38.
TotEnot вне форума Ответить с цитированием
Старый 06.10.2015, 00:16   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

А вы знаете такое понятие, как область видимости? Вы в курсе, что переменная объявленная в блоке, например в {}, "умирает" после }. Вот вам и андефайнет... выносите за блок.
p51x вне форума Ответить с цитированием
Старый 06.10.2015, 00:42   #5
TotEnot
Пользователь
 
Регистрация: 28.09.2015
Сообщений: 11
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А вы знаете такое понятие, как область видимости? Вы в курсе, что переменная объявленная в блоке, например в {}, "умирает" после }. Вот вам и андефайнет... выносите за блок.
Спасибо! буду знать...
TotEnot вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странное объявление массива Smitt&Wesson Общие вопросы C/C++ 7 06.02.2015 17:54
объявление динамического массива katena88 Общие вопросы C/C++ 45 19.06.2012 21:53
Объявление размерности массива. iCaesy Паскаль, Turbo Pascal, PascalABC.NET 2 22.10.2011 14:42
объявление массива в VBA Cannibal Помощь студентам 0 14.04.2011 08:23
объявление массива Crasty Помощь студентам 7 05.11.2008 17:18