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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2021, 20:32   #1
Roberttt
Пользователь
 
Регистрация: 30.05.2018
Сообщений: 56
По умолчанию Двумерные массивы в СИ

Здравствуйте! Подскажите, пожалуйста, что я делаю неправильно? Задача состоит в том, чтобы написать функцию marray_read, которая считывает количество строк массива и количество столбцов и выделяет под них память. Функция marray_print выводит весь массив без количества строк и столбцов на экран. (У меня на выходе получается
123 -99292 245 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 )

Sample Input:

3
9 3 2 4 54 9 2 1 872 123
8 123 12354 23 232 43412 534 8237 -99292
3 45 2 245

Sample Output:

3 2 4 54 9 2 1 872 123
123 12354 23 232 43412 534 8237 -99292
45 2 245

Код:
int64_t** marray_read( size_t* rows, size_t** sizes ) {
    scanf("%zu", rows);
    int64_t** marray = (int64_t**)malloc( *rows * sizeof(int64_t*) );
    *sizes = (size_t*)malloc( *rows * sizeof(size_t) );

    for (size_t i = 0; i < *rows; i++) {
        scanf( "%zu", (*sizes + i) );  // Здесь вводится количество элементов, которое складывается в массив size
        marray[i] = (int64_t*)malloc( *(*sizes + i) * sizeof(int64_t) ); // Выделяется память под кажудю строку
        for (size_t j = 0; j < *(*sizes + i); j++) {
            scanf( "%" SCNd64, (*marray + i) );
        }
    }
    return marray;
}

void marray_print(int64_t** marray, size_t* sizes, size_t rows) {
    for( size_t i = 0; i < rows; i = i + 1 ) {
        array_int_print( marray[i], sizes[i] );
        print_newline();
    }
}
Roberttt вне форума Ответить с цитированием
Старый 15.07.2021, 20:41   #2
Roberttt
Пользователь
 
Регистрация: 30.05.2018
Сообщений: 56
По умолчанию

Количество элементов в строке совпадает с введенными числами, что уже хорошо, а вот сами элементы куда-то пропадают. По этой причине мне, кажется, что я неправильно прохожу по элементам строк и неправильно записываю значения в столбцы во втором for в функции marray_read.

Последний раз редактировалось Roberttt; 15.07.2021 в 20:57.
Roberttt вне форума Ответить с цитированием
Старый 15.07.2021, 21:20   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
scanf( "%" SCNd64, &marray[i][j] );
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.07.2021, 21:34   #4
Roberttt
Пользователь
 
Регистрация: 30.05.2018
Сообщений: 56
По умолчанию

Огромное спасибо! Все получилось!
Roberttt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы Dimcha Паскаль, Turbo Pascal, PascalABC.NET 2 21.04.2017 22:58
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16
Двумерные массивы(массивы указателей на массивы) krytishka99 Помощь студентам 1 29.12.2011 19:51
Двумерные массивы Flaky Паскаль, Turbo Pascal, PascalABC.NET 6 29.09.2011 20:02