Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 939
от 18.12.2007, 03:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 474, Экспертов: 57
В номере:Вопросов: 7, Ответов: 10


Вопрос № 113595: Помогите, пожалуйста, переделать программу, точнее, сделать ее с функциями, что бы не три раза вводить массив, и не три раза считать, и не три раза выводить, а сделать это один раз с использованием функций (Программа для определения местоположения (н...
Вопрос № 113606: Уважаемые експерты помогите решить задачу на плюсах суть в том что функция print (в примере) должна использовать арифметику указателей (если возможно) б иначе придется 800 сторок проги переписывать. суть примера в том что создаеться 2 (хотя м...
Вопрос № 113665: Даны вещественные массивы A[3][5],V[3][5].Для каждого массива определить номер столбца с наибольшим количеством положительных элементов. Я знаю что задача уже была на сайте, но мне нужно чтобы все было сделано с функциями и самым наипростей...
Вопрос № 113667: Описать процедуру SumDigit(N,S), находящую сумму цифр S целого числа N (N — входной, S — выходной параметр). Используя эту процедуру, найти суммы цифр пяти данных чисел. Помогите написать на Си....
Вопрос № 113676: Добрый вечер!У меня небольшие затруднения с бинарными деревьми... не могу организовать простейшее добавление...а что уж говорить обо всем остальном... я вообще не понимаю для чего они нужны(((...
Вопрос № 113683: 1) Описать нерекурсивную функцию NOD2(A,B) целого типа, находящую наибольший общий делитель (НОД) двух натуральных чисел A и B, используя алгоритм Евклида: НОД(A,B) = НОД(B mod A,A), если A <> 0; НОД(0,B) = B. С помощью этой функции найти наибо...
Вопрос № 113716: Здравствуйте, уважаемые эксперты! Задали мне написать программу с использованием подпрограмм, но, прочитав учебник и лекции, я все равно не понял, как же её писать и в чем суть использования подпрограмм. Условие задачи пока приводить не буду, но,...

Вопрос № 113.595
Помогите, пожалуйста, переделать программу, точнее, сделать ее с функциями, что бы не три раза вводить массив, и не три раза считать, и не три раза выводить, а сделать это один раз с использованием функций (Программа для определения местоположения (номер столбца и номера строки) минимального элемента)

Приложение:

Отправлен: 12.12.2007, 14:16
Вопрос задал: Superman (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Superman!
Практически идентичная задача поставлена в вопросе №111117 (под номером 2). В моем ответе содержится код отвечающий вашим требованиям. В приложении привожу его повторно.

Приложение:

Ответ отправил: Терсков Сергей (статус: Практикант)
Ответ отправлен: 13.12.2007, 04:10

Отвечает: Титов Михаил Анатольевич
Здравствуйте, Superman!

В приложении код в котором организованы две функции - одна для ввода значений массива с одновременным определением минимального элемента, другая - для форматированного вывода информации о минимальном элементе.
Обратите внимание на то, как передается в функцию параметр - многомерный массив. Мы использовали наиболее гибкий подход - передать указатель на начало массива и отдельно его размерности. Но теперь внутри функции он превратился просто в указатель на значение float. Двухмерную индексацию к нему применять уже нельзя! Можно либо, как у нас, вычислять один индекс, либо пользоваться адресной арифметикой: *(A+i+j) то же самое, что A[i+j].
Разделение на две функции довольно условно. При желании, я думаю, вы легко сможете объединить код в одну функцию.

P.S.
В моем компиляторе нет gotoxy, пример проверялся без них. На экране будут "наползания", но я думаю, Вы с ними справитесь!

Приложение:

Ответ отправил: Титов Михаил Анатольевич (статус: 4-ый класс)
Ответ отправлен: 13.12.2007, 05:23
Оценка за ответ: 5
Комментарий оценки:
Спасибо! все правильно


Вопрос № 113.606
Уважаемые експерты помогите решить задачу на плюсах
суть в том что функция print (в примере) должна использовать арифметику указателей (если возможно) б иначе придется 800 сторок проги переписывать.
суть примера в том что создаеться 2 (хотя мой масив 8 размерный)размерный масив в динамической памяти , и функции изменяют его с помощю указателей

Приложение:

Отправлен: 12.12.2007, 15:26
Вопрос задал: serjuar (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лясин Александр Владимирович
Здравствуйте, serjuar!
Навряд ли Вам удасться при таком выделении памяти корректно использовать арифметику с указателями в Вашем виде. Всё дело в том - что изначально выделяется массив указателей, каждый из которых указывает на "свою" область памяти, и далеко не факт - что это какое-то цельное пространство памяти, скорее даже наоборот - каждый из трёх массивов будет распологаться в своём адресном пространстве. По сему арифметику в данном случае использовать некорректно. Вот в каждом отдельно взятом массиве такое возможно, но в Вашем варианте это неменуемо приведёт в исключительной ситуации. Либо используйте статические массивы - в которых фокус с арифметикой "прокатит", либо используйте структуры или какие-то другие организации памяти. Вот что первое пришло в голову для ф-ии принт - так работать будет (см. приложение). P.S> Компилятору необходимо сообщить передачей параметра в ф-ю void print_ (int *value[]) - что он адресует не сплошное адресное пространство, а массив указате лей на массиве

Приложение:

Ответ отправил: Лясин Александр Владимирович (статус: 4-ый класс)
Ответ отправлен: 13.12.2007, 13:18


Вопрос № 113.665
Даны вещественные массивы A[3][5],V[3][5].Для каждого массива определить номер столбца с наибольшим количеством положительных элементов.

Я знаю что задача уже была на сайте, но мне нужно чтобы все было сделано с функциями и самым наипростейшим образом...(если можесте с пояснениями...)

Заранее спасибо Уважаемые эксперты...когда ни будь и я пополню ваши ряды)

В приложении вариант задачи без массивов...

Приложение:

Отправлен: 12.12.2007, 19:49
Вопрос задал: Кощеев Никита Иванович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Кощеев Никита Иванович!
Вы правы подобная задача встречалась не раз. Код для вашей задачи смотрите в приложении...

Приложение:

Ответ отправил: Терсков Сергей (статус: Практикант)
Ответ отправлен: 13.12.2007, 04:21
Оценка за ответ: 4


Вопрос № 113.667
Описать процедуру SumDigit(N,S), находящую сумму цифр S целого числа N (N — входной, S — выходной параметр). Используя эту процедуру, найти суммы цифр пяти данных чисел.

Помогите написать на Си.
Отправлен: 12.12.2007, 20:00
Вопрос задала: Петров Василий Фёдорович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ross
Здравствуйте, Петров Василий Фёдорович!

void SumDigit(int N,int *S)
{
*S = 0; if (N < 0) N = -N;

while (N)
{
*S += N%10; N /= 10;
}
}
---------
Доступно только то, что видимо (c) Б. Керниган
Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 12.12.2007, 21:26


Вопрос № 113.676
Добрый вечер!У меня небольшие затруднения с бинарными деревьми... не могу организовать простейшее добавление...а что уж говорить обо всем остальном... я вообще не понимаю для чего они нужны(((
Отправлен: 12.12.2007, 20:53
Вопрос задала: lyubkin (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, lyubkin!
Ничего себе "небольшие затруднения". Для начала нужна теория:

Дерево (теория графов), Двоичное деревоru.wikipedia.org),

а затем можно переходить к исходникам

Работа с деревьями
Ответ отправил: Терсков Сергей (статус: Практикант)
Ответ отправлен: 13.12.2007, 03:56

Отвечает: Титов Михаил Анатольевич
Здравствуйте, lyubkin!

Вряд ли в рамках ответа можно рассказать все о бинарных деревьях - для чего нужны и как работают. Существует масса литературы по динамическим структурам. Для начала можно посмотреть у классиков:

http://www.proklondike.com/contentview.php?content=20
Брайан Керниган, Деннис Ритчи: Язык программирования C
раздел 6.5 "Структуры со ссылками на себя"

там как раз пример для чего нужны и как сделать добавление. В приложении компилирующийся код из этой главы. Ну а дальше практически любой учебник по С/С++.

Приложение:

Ответ отправил: Титов Михаил Анатольевич (статус: 4-ый класс)
Ответ отправлен: 13.12.2007, 04:06


Вопрос № 113.683
1) Описать нерекурсивную функцию NOD2(A,B) целого типа, находящую наибольший общий делитель (НОД) двух натуральных чисел A и B, используя алгоритм Евклида: НОД(A,B) = НОД(B mod A,A), если A <> 0; НОД(0,B) = B. С помощью этой функции найти наибольшие общие делители пар A и B, A и C, A и D, если даны числа A, B, C, D.
2) описать нерекурсивную функцию Fib(N) целого типа, вычисляющую N-е число Фибоначчи F(N) по формуле: F(1) = F(2) = 1, F(k) = F(k–2) + F(k–1), k = 3, 4, ... . С помощью этой функции вычислить 10 чисел Фибоначчи с указанными номерами.
Отправлен: 12.12.2007, 21:38
Вопрос задала: Петров Василий Фёдорович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Петров Василий Фёдорович!
Классические примеры решения этих задач рекурсивны. Рекурсию чаще всего иллюстрируют с помощью этих примеров (ну и еще вычисление факториала). Но об обычной реализации почему то забывают. Код функций смотрите в приложении...

Приложение:

Ответ отправил: Терсков Сергей (статус: Практикант)
Ответ отправлен: 13.12.2007, 04:46


Вопрос № 113.716
Здравствуйте, уважаемые эксперты!
Задали мне написать программу с использованием подпрограмм, но, прочитав учебник и лекции, я все равно не понял, как же её писать и в чем суть использования подпрограмм. Условие задачи пока приводить не буду, но, не могли бы Вы привести код подпрограммы ввода (можно еще и вывода)?
А именно, нужно организовать ввод координат точек попарно, т.е. (x1,y1), (x2,y2) и т.д., чтобы они хранились в памяти. Как мне кажеться, для этого нужно использовать матрицу, но как это сделать - не представляю.
Думаю, после этого мне станет понятнее что и как и основную часть программы я напишу сам ;)
Спасибо всем, кто откликнется!
Отправлен: 13.12.2007, 00:58
Вопрос задал: LexXx (статус: Практикант)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Verena
Здравствуйте, LexXx!
Подпрограмма, как я понимаю, в данном случае - функция. Тогда можно сделать, например, так: задать структуру "кооринаты", которая будет иметь два числовых поля, и создать из них массив ( в моём примере динамический). В функцию ввода передаём элемент по ссылке (знак &), в него запишется значение. Смотрите пример в приложении.
Удачи!

Приложение:

---------
Эта история - не для истории, понимаешь?

Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 13.12.2007, 01:39
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Титов Михаил Анатольевич
Здравствуйте, LexXx!

Я думаю вам интересно будет посмотреть вопрос 113595. В приложении немного измененный пример из этого вопроса. В основе примера код, написаный задававшим вопрос читателем, так что, я думаю, вам не трудно будет в нем разобраться.
В отличии от примера из вопроса 113595 мы применили другой способ передачи в функцию параметра-двухмерного массива. Так, как мы точно знаем, что в массиве будут храниться координаты, то вторая размерность всегда равна 2. Пользуясь этим мы можем описать параметр функции как float [][2], то есть как массив двухмерных массивов значений float. И теперь мы можем ограничится только одним значением размерности, передаваемой в функцию в качестве второго параметра.

Приложение:

Ответ отправил: Титов Михаил Анатольевич (статус: 4-ый класс)
Ответ отправлен: 13.12.2007, 06:08
Оценка за ответ: 5
Комментарий оценки:
Благодарю!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.65 от 04.12.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное