Вопрос № 151835: Здравствуйте уважаемые эксперты, помогите пожалуйстя с написанием програм по матрицам. Задана квадратная матрица порядка 2Nx2N. Получить новую матрицу, переставляя ее блоки размера NxN в соответствии (Исходная матрица |А11, А12 | Полученная |A21,...
Вопрос № 151838: Здравствуйте уважаемые эксперты! Подскажите как сделать? В файле содержатся координаты(х,у) для N точек. Значение координат положительное. Структура файла
с координатами какую предложите. Как построить график отображения точек и вывести его на ви...Вопрос № 151849: Здравствуйте. Исправьте, пожалуста, коды программ, или скажите, как их исправить. Большое спасибо....Вопрос № 151872: Здравствуйте уважаемые эксперты, подскажите, как можно в наиболее простом коде, изобразить бугущую строку( цикличное обновление дисплея, с перемещением
символа на 5 пикселей вправо). Большое спасибо....
Вопрос № 151.835
Здравствуйте уважаемые эксперты, помогите пожалуйстя с написанием програм по матрицам. Задана квадратная матрица порядка 2Nx2N. Получить новую матрицу, переставляя ее блоки размера NxN в соответствии (Исходная матрица |А11, А12 | Полученная |A21,A11| A21, A22 A22,A12 )
Отвечает: Verena
Здравствуйте, Коренев Кирилл Игоревич! Матрица разбивается на 4 области с координатами: 1 область i: 0..n j: 0..n 2 область i: 0..n j: n..2n 3 область i: n..2n j: n..2n 4 область i: n..2n j: 0..n где i, j - строка и столбец соответственно Иначе говоря, см. рисунок в приложении. Смысл задачи, как я понимаю, сформировать новую матрицу, где бы эти области были перемещены по часовой стрелке а одну позицию. Для этого каждую область необходимо сдвинуть на n позициий по одной из координат. Так,
для перемещения области 1 на место 2 надо сдвинуть элементы области 1 на n по координате j, для перемещения 2 в 3 - элементы 2 на n по координате i, для перемещения 3 в 4 - элементы 3 на -n по координате j, для перемещения 4 в 1 - элементы 4 на -n по координате i. Перемещение по i/j чередуется через раз, поэтому его можно выразить коэффициентом, который через раз будет то 0, то 1. Также добавим переменные для обозначения координат областей и для текущего сдвига. Матриц
ы будем создавать динамически, в зависимости от введённого n. Один из вариантов решения - в приложении (скомпилирован под VS 2005). Удачи!
Приложение:
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Практикант)
Ответ отправлен: 28.11.2008, 00:26
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 236938 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 151.838
Здравствуйте уважаемые эксперты! Подскажите как сделать? В файле содержатся координаты(х,у) для N точек. Значение координат положительное. Структура файла с координатами какую предложите. Как построить график отображения точек и вывести его на визуализацию. Спасибо заранее!
Отправлен: 25.11.2008, 20:12
Вопрос задал: Sp3ct0r (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: Verena
Здравствуйте, Sp3ct0r! Рисовать в консоли можно, в общем-то, также, как и в любом другом окне. Надо получить его контекст (DC), и с его помощью рисовать api-функциями. Чтобы получить контекст консоли, надо иметь его описатель (hwnd), в простейшем случае его можно получить так: GetConsoleTitle (pszWindowTitle, 1024); //получаем заголовок окна консоли hwnd=FindWindow(NULL, pszWindowTitle); //Ищем окно с таким заголовком В общем случае следовало бы сначала поменять заголовок окна на уникальный
(например, использовав для этого системное время), а затем искать его уже по этому заголовку. Формат файла возьмём такой: на каждой строке пишем координаты x и y через пробел. Учитывая, что размерность координат ограничена, не будем заморачиваться с масштабированием, просто выводя точки по их координатам, а сосредоточимся на выводе на экран. Чтобы не рисовать на границах окна, что выглядит довольно некрасиво, будем к каждой координате y прибавлять 50 (чтобы пропусти
ть заголовок окна), а к х будем прибавлять 10 (чтобы пропустить саму границу). Точки выводим зелёным, а линии - красным. Почти никаких проверок я не делаю, добавите сами, что захотите, например, при неправильном вводе n будет ошибка чтения файла. При вот таких входных данных: 10 10 50 20 30 50 90 90 70 10 0 0 100 100 Получается вот такой рисунок:
Остальное должно быть ясно из комментариев. PS: Если создавать оконное приложение,
то можно рисовать точно также на самом окне или его элементе, получив по его описателю контекст, после чего всё аналогично. Удачи!
Приложение:
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Практикант)
Ответ отправлен: 25.11.2008, 23:26
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 236709 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Спасибо огромное вы мне очень помогли! У меня немного другой вопросик. Например из файла берется координаты N точек и вносятся в массив. Можно ли сделать объем массива зависимый от N. Т.е. чтобы размер массив был который необходим?
Вопрос № 151.849
Здравствуйте.
Исправьте, пожалуста, коды программ, или скажите, как их исправить. Большое спасибо.
Отвечает: Verena
Здравствуйте, Радников А. С.! В первых трёх программах ошибка в задании границ циклов. Цикл for задаётся так: for (счётчик=начальное_значение; условие_до_исполнения_которого_работает_цикл; изменение_счётчика) У Вас неправильно задано условие - Вы написали присвоение, а надо i <= arv, т.е. for ( i=1; i <= arv; i=i+1 ) Во второй и третьей задаче использование циклов верно, но в условии надо ставить несторогое равенстсво, т.е. while (i<=arv ) В четвёртой задаче у Вас выводится всё
наоборот, надо поменять в if условие на противоположное: if(arv == 100) //Если параметр равен 100 { printf("Sa sisestasid 100!!!
") //Выводится это } else //Если не равен { printf("Sa ei sisestanud 100...
"); //То это } Так что в целом ход мыслей верный, только будьте аккуратней с условиями. Удачи!
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Практикант)
Ответ отправлен: 25.11.2008, 21:52
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 236700 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Отвечает: Olegzp
Здравствуйте, Радников А. С.! Предыдущий эксперт видимо просмотрел, на задание №3 правильно: do { printf("number: %d
",i); i++; } while (i<=(arv+1)) <<<<<<< так как сначала происходит увеличение переменной (i), а только потом сравнение
Ответ отправил: Olegzp (статус: 7-й класс)
Ответ отправлен: 26.11.2008, 15:14
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 236779 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 151.872
Здравствуйте уважаемые эксперты, подскажите, как можно в наиболее простом коде, изобразить бугущую строку( цикличное обновление дисплея, с перемещением символа на 5 пикселей вправо). Большое спасибо.
Отправлен: 26.11.2008, 00:21
Вопрос задал: glock (статус: 8-й класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Dr_Andrew
Здравствуйте, glock! Пример бегущей строки в консольной программе - см. в приложении. Используются функции перемещения курсора в заданную позицию (gotoxy) и очистки экрана (clrscr), подключаемые директивой #include <conio.h>. Поскольку эти функции - творчество компании Borland, то соответственно, пример будет компилироваться лишь в средах разработки этой фирмы (Turbo C++, Borland C++ и т.п.)
Приложение:
Ответ отправил: Dr_Andrew (статус: Студент)
Ответ отправлен: 26.11.2008, 11:55
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 236748 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: огромное спасибо. под Borland C++ скомпилировался.
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.