2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3
 
 Re: Си передача указателя между функциями
Сообщение29.10.2021, 04:15 
Заслуженный участник


31/12/05
1520
Vladimir-80 в сообщении #1536798 писал(а):
Почему жульничество? На глобальные переменные в задаче запрета нет.
По смыслу. Я не могу представить разумного решения этой задачи с глобальными переменными.

А вообще советую выкинуть всё полностью и посмотреть, что такое массив строк в C. Выражение "количество столбцов" забудьте, оно про другое.

Изображение

И вот примерно как с этим работать: https://stackoverflow.com/a/5935956

-- Пт окт 29, 2021 04:22:20 --

Vladimir-80 в сообщении #1536674 писал(а):
Но в данном случае, на мой взгляд, проще и эффективней выделить память сразу под весь результат.
Вы возвращаете этот результат в чужой код, который ожидает его в определенном виде (как на картинке), а не в таком, который вы придумали. Вы делаете двумерный массив, где элемент i, j лежит в *(pins+i*m+j), а снаружи ожидают массив указателей на одномерные массивы, где этот элемент лежит в в pins[i][j]. Вот все и падает.

-- Пт окт 29, 2021 04:33:21 --

Vladimir-80 в сообщении #1536740 писал(а):
Переформатировал вывод под массив указателей на строки и всё заработало.
"Всё заработало" означает, что на локальной машине работает комбинация вашего решения и кода из правого нижнего окна "Sample Tests"?

 Профиль  
                  
 
 Re: Си передача указателя между функциями
Сообщение29.10.2021, 05:06 
Аватара пользователя


28/10/21
100
tolstopuz в сообщении #1536815 писал(а):
А вообще советую выкинуть всё полностью и посмотреть, что такое массив строк в C. Выражение "количество столбцов" забудьте, оно про другое.


Вы привели пример реализации массива строк, как классического "рваного" двумерного массива. Но это совсем не обязательно делать так. Никто вам не запрещает реализовать "массив строк" через обычный двумерный массив, с фиксированным "количеством столбцов". Хозяин-барин. Поэтому мне не совсем понятно, почему вы приводите этот пример с комментарием "посмотреть, что такое массив строк". Если уж быть совсем педантичным, то то, что вы привели - это на самом деле массив указателей на строки, а не массив строк. В формальной терминологии языков С и С++ не принято смешивать эти понятия.

Разумеется, никто не спорит с тем фактом, что в большинстве приложений использование массива указателей на строки - существенно более уместное и разумное решение.

 Профиль  
                  
 
 Re: Си передача указателя между функциями
Сообщение29.10.2021, 10:06 
Заблокирован


19/02/13

2388
tolstopuz в сообщении #1536815 писал(а):
"Всё заработало" означает, что на локальной машине работает комбинация вашего решения и кода из правого нижнего окна "Sample Tests"?


Это означает, что программа корректно работает на локальной машине (вызываемая моей main() ) и без ошибок проходит все тесты на сайте. Действительно, проблема была в том, что я выводил ответ не в том формате, который ожидал сервер.

tolstopuz в сообщении #1536815 писал(а):
посмотреть, что такое массив строк в C


Я это знаю. Просто по сути этой задачи было бы удобней и логичней работать с символьным массивом, а не со строковым - вот я и недоглядел. На вход получаем $n$ цифр, на выход выдаём $x$ комбинаций по $n$ цифр и само количество комбинаций $x$ - никакой нужды занимать память и время терминирующими нулями нет.

 Профиль  
                  
 
 Re: Си передача указателя между функциями
Сообщение29.10.2021, 11:13 
Заслуженный участник


31/12/05
1520
TheRuinedMap в сообщении #1536817 писал(а):
Хозяин-барин. Поэтому мне не совсем понятно, почему вы приводите этот пример с комментарием "посмотреть, что такое массив строк".
Хозяин здесь автор задания и тестов, который ожидает увидеть array of c-strings.

 Профиль  
                  
 
 Re: Си передача указателя между функциями
Сообщение29.10.2021, 17:54 
Аватара пользователя


28/10/21
100
tolstopuz в сообщении #1536846 писал(а):
TheRuinedMap в сообщении #1536817 писал(а):
Хозяин-барин. Поэтому мне не совсем понятно, почему вы приводите этот пример с комментарием "посмотреть, что такое массив строк".
Хозяин здесь автор задания и тестов, который ожидает увидеть array of c-strings.


Да, в задании по ссылке действительно ожидается именно jagged/ragged массив, то есть массив указателей на С-строки.

Но когда речь идет не об этом задании, а о том, "что такое массив строк в C", то вот вам вот вам прекрасный массив строк в C:

Используется синтаксис C
char array_of_c_strings[][20] = { "Vasya", "Lena", "Petya", "Kolyan" };


И, еще раз, с педантично-формальной терминологической точки зрения именно это - "array of c-strings", а не то, что требуется в задании.

 Профиль  
                  
 
 Re: Си передача указателя между функциями
Сообщение29.10.2021, 18:32 
Заслуженный участник


31/12/05
1520
TheRuinedMap в сообщении #1536898 писал(а):
И, еще раз, с педантично-формальной терминологической точки зрения именно это - "array of c-strings", а не то, что требуется в задании.
Да уж.

(Оффтоп)

Изображение

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2, 3

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group