Вопрос № 147196: <b> Здравствуйте! </b> Помогите,пожалуйста, реализовать задачу в С: <i> Пройдет ли кирпич размером AxBxC в прямоугольное отверстие NxM ? </i> Заранее спасибо!...Вопрос № 147221: Помогите решить, пожалуйста В матрице A(m,n) каждый элемент aij заменить минимальным среди элементов подматрицы A’(i,j), расположенной в левом верхнем углу матрицы A....Вопрос № 147229:
Хм:) А как на С++ сделать свой тип данных? Мне вообще нужно что б функция возращала строку, я думаю просто надо функции указать строковый тип, а как иначе чем создать свой тип я незнаю....Вопрос № 147283: Здравствуйте уважаемые эксперты. Как в Visual C++ можно определить кол-во цифр в числе, т.е. аналог функции LEN в Visual Basic. Пример 1000 должна возвращать 4, 12 - 2. И еще необходима функция, дописывающая опр
еделеное заданое кол-во нулей ...
Вопрос № 147.196
Здравствуйте! Помогите,пожалуйста, реализовать задачу в С: Пройдет ли кирпич размером AxBxC в прямоугольное отверстие NxM ?
Отвечает: Sergey A. Wedensky
Здравствуйте, Елена Сергеевна!
Он туда пройдет, если наименьшее из его измерений не превышает наименьшее из измерений дырки, а наименьшее из оставшихся двух - не превосходит наибольшего измерения дырки...
Код функции в приложении.
Приложение:
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 14.10.2008, 18:32 Оценка за ответ: 4 Комментарий оценки: Все равно я очень довольна вашим ответом
Отвечает: Николай // МMM
Здравствуйте, Озерова Елена Сергеевна!
Предполагаем, что A = высота, B = ширина и C = высота кирпича. N и M - соответственно тоже высота и ширина отверстия. Код в приложении, скомпилировано в MS Visual Studio 2005. Т.к. он достаточно прост - думаю в комментариях нет необходимости.
Удачи Вам!!!
Приложение:
--------- Не ошибается лишь тот, кто ничего не делает. Не бойтесь ошибаться. Бойтесь повторять ошибки. (Теодор Рузвельт, 1858 - 1919)
Ответ отправил: Николай // МMM (статус: Студент)
Ответ отправлен: 14.10.2008, 19:03 Оценка за ответ: 5 Комментарий оценки: Спасибо,Николай, за вашу работу
Вашим творчеством я просто восхищаюсь
Отвечает: realbustard
Здравствуйте, Озерова Елена Сергеевна! Код в приложении. Не учтен вариант, когда одна из сторон кирпича длиннее, чем одна из сторон отверстия. Если кирпич двигать, чтоб его стенки были параллельны стенкам отверстия, он не пройдет. Но возможен вариант его движения под углом, когда вполне может получиться его туда просунуть. Правда это скорей будет не кирпич, ближе к плитке. Удачи!
Приложение:
--------- Учись так, как-будто собираешься жить вечно; живи так, как-будто завтра умрешь (Отто фон Бисмарк)
Ответ отправил: realbustard (статус: 5-ый класс)
Ответ отправлен: 14.10.2008, 20:49 Оценка за ответ: 5 Комментарий оценки: Спасибо вам за ответ и ваши логические расуждения
Вопрос № 147.221
Помогите решить, пожалуйста В матрице A(m,n) каждый элемент aij заменить минимальным среди элементов подматрицы A’(i,j), расположенной в левом верхнем углу матрицы A.
Отправлен: 14.10.2008, 22:44
Вопрос задал: Sdamr (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Verena
Здравствуйте, Sdamr! Можно решить эту задачу так. Вводим функцию для нахождения минимума произвольной матрицы. В цикле прогоняем исходную матрицу, передавая в эту функцию координаты элементов (каждая +1, поскольку нумерация с нуля), и присваиваем элементу новой матрицы полученное значение. Таким образом, функция будет обрабатывать каждый раз только кусочек исходной матрицы от координаты (0,0) до координаты (i,j). Вспомогательная матрица используется для результатов потому, что иначе результат для части элементов
будет рассчитан уже по изменённой матрице, чего, предполагаю, делать не следует. Код в приложении. Удачи!
Приложение:
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Практикант)
Ответ отправлен: 15.10.2008, 00:33
Отвечает: realbustard
Здравствуйте, Sdamr! Код в приложении! Удачи!!!
Приложение:
--------- Учись так, как-будто собираешься жить вечно; живи так, как-будто завтра умрешь (Отто фон Бисмарк)
Ответ отправил: realbustard (статус: 5-ый класс)
Ответ отправлен: 15.10.2008, 12:32
Вопрос № 147.229
Хм:) А как на С++ сделать свой тип данных? Мне вообще нужно что б функция возращала строку, я думаю просто надо функции указать строковый тип, а как иначе чем создать свой тип я незнаю.
Отправлен: 14.10.2008, 23:27
Вопрос задал: Immortal (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: realbustard
Здравствуйте, Immortal! Чтобы функция возвращала строку, нужно воспользоваться классом string. Для этого необходимо подключить соответствующую библиотеку: #include "string" функция будет выглядеть например так:
string func(/*Аргументы*/) { /*....*/} Лучше использовать уже имеющийся класс строк, а не придумывать велосипед. Этот класс удобен и надежен.
А для того, чтобы создать свой класс(или тип), можно воспользоваться объявлением:
class Name {/*...*/}; или struct
Name{/*...*/};
Создавая новый класс, для него необходимо определить необходимые операторы: +,-,=,+=,[] и т.д. а так же множество других нюансов.
Но если есть готовое решение, которое уже отточено, лучше использовать его.
Определение простого строкового класса описано в книге Джесс Либерти, Брэдли Джонс "Освой самостоятельно С++" , есть желание посмотрите.
--------- Учись так, как-будто собираешься жить вечно; живи так, как-будто завтра умрешь (Отто фон Бисмарк)
Ответ отправил: realbustard (статус: 5-ый класс)
Ответ отправлен: 14.10.2008, 23:53 Оценка за ответ: 4
Вопрос № 147.283
Здравствуйте уважаемые эксперты. Как в Visual C++ можно определить кол-во цифр в числе, т.е. аналог функции LEN в Visual Basic. Пример 1000 должна возвращать 4, 12 - 2.
И еще необходима функция, дописывающая определеное заданое кол-во нулей к имеющемуся числу. Заранее спасибо.
Отвечает: Владимир (C4tnt)
Здравствуйте, Горбунов Алексей Николаевич!
int t=число; int len=0;
while(t/10) len++;
Вот и вся функция, ноль считает за отсутствие числа.
--------- Теперь к нашим ответам осталось лишь найти вопросы
Ответ отправил: Владимир (C4tnt) (статус: 5-ый класс)
Ответ отправлен: 15.10.2008, 14:32 Оценка за ответ: 5 Комментарий оценки: Я так и делал, но решил что есть специальные встроеные функции. Только у вас ошибка в 3 строке.
Отвечает: Rockie
Здравствуйте, Горбунов Алексей Николаевич!
Imho наиболее ресурсоемкий способ - перегнать число в строку функцией itoa и узнать длину строки функцией strlen. С нулями - наоборот - проще в функции умножать число на 10, в цикле. http://ru.wikipedia.org/wiki/Itoa http://www.google.ru/search?complete=1&hl=ru&newwindow=1&q=strlen+site%3Amicrosoft.com&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=&aq=f&oq=
Удачи!
Ответ отправил: Rockie (статус: 7-ой класс)
Ответ отправлен: 15.10.2008, 15:56 Оценка за ответ: 5 Комментарий оценки: Но это съест больше ресурсов чем вариант вашего коллеги
Отвечает: Alexandr A. Rakunov
Здравствуйте, Горбунов Алексей Николаевич! len возвращает длину строки, в C есть аналогичная функция для работы со строками strlen, но количество знаков в целом числе можно посчитать быстрее: см функцию int getLenght(int num) из приложения. Дописывать нули (я так понял перед числом до достижения нужной длины) можно указав при выводе соответствующее форматирование в printf, например: printf("%07d
", -12); выведет: -000012 аналог для вывода в строку, а не на экран _snprintf или дописывать самостоятельно: см. const char* appendZero(int num, int need_len, char* buf)
Приложение:
Ответ отправил: Alexandr A. Rakunov (статус: 7-ой класс)
Ответ отправлен: 15.10.2008, 16:37 Оценка за ответ: 5 Комментарий оценки: Как то слишком сложно для такого простого задания