Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 63, средняя оценка - 4.73
chulkov-93
1 / 1 / 0
Регистрация: 19.11.2010
Сообщений: 10
#1

Построить ломаную по заданным вершинам - C++

23.08.2011, 10:46. Просмотров 8520. Ответов 40

Помогите решить несколько задач по Си:

1.Дан файл f, компоненты которого являются целыми числами. Найти:количество квадратов нечетных чисел среди компонент.

2.Дан текстовый файл f. Записать в перевернутом виде строки файла f в файл g. Порядок строк в файле g должен быть обратным по оношению к порядку строк исходного файла.

3.Построить ломаную по заданным вершинам. Вершины указываются с клавиатуры (см. задачу 900).

задача 900:При работе с графическим изображением часто возникает необходимость выбрать одну или несколько точек экрана. Так, например, для того чтобы построить отрезок, следует задать два его конца, для построения окружности можно задать ее центр и любую точку на окружности и т. д. Для указывания требуемой точки обычно используют курсор. Курсор может иметь одну, из следующих конфигураций:
а) Перекрестье (рис. 95, а). Указываемая точка-это точка пересечения двух прямых.
б) Крестик (рис. 95,6). Указываемая точка-это точка пересечения двух коротких отрезков.
в) Стрелка (рис. 95, б). Указываемая точка-это точка, в которую помещается острие стрелки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2011, 10:46     Построить ломаную по заданным вершинам
Посмотрите здесь:
C++ Дано n точек на плоскости, за время n*logn построить (n-1)-звенную ломаную
За время n logn построить (n-1)звенную не пресекающую себя ломаную проходящую через все точки C++
Построить прямоугольник по двум заданным точкам C++
Code::Blocks Построить 3 графика по заданным уравнениям C++
Построить вектор, имеющий с заданным углом -45 градусов C++
Написать условие: Можно ли по заданным координатам построить трапецию? C++
C++ Матрицы. По трём заданным матрицам А, В и С построить матрицу Х того же размера
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 12:42     Построить ломаную по заданным вершинам #16
Цитата Сообщение от Deviaphan Посмотреть сообщение
Да я понял. Думал, что разложение дольше корня работает.)
Так это не вам ответ был А вы думали, что корни в компьютере так легко вычисляются, раз и все
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.08.2011, 12:47     Построить ломаную по заданным вершинам #17
Цитата Сообщение от Olga_ Посмотреть сообщение
корни в компьютере так легко вычисляются, раз и вс
Есть подозрение, что на аппаратном уровне разложение эффективнее происходит, чем ручками.)))
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 13:15     Построить ломаную по заданным вершинам #18
Цитата Сообщение от Deviaphan Посмотреть сообщение
Есть подозрение, что на аппаратном уровне разложение эффективнее происходит, чем ручками.)))
Про аппаратный уровень никто не спорит, речь о программном.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.08.2011, 13:28     Построить ломаную по заданным вершинам #19
Цитата Сообщение от Olga_ Посмотреть сообщение
речь о программном
Но ведь корень вычисляется аппаратно. Сопроцессором.
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 13:33     Построить ломаную по заданным вершинам #20
Цитата Сообщение от Deviaphan Посмотреть сообщение
Но ведь корень вычисляется аппаратно. Сопроцессором.
Ну ладно, спорить не буду, просто не всегда и все делает аппаратура, для полноты мышления надо разные варианты рассматривать, но это мое мнение.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
23.08.2011, 14:20     Построить ломаную по заданным вершинам #21
Прежде чем каким-либо образом вычислять корень или проводить разложение, стоит сделать простую проверку, которая отсеит 87,5% чисел:
C
1
2
3
4
if (x % 8 != 1) // или (x & 7 != 1)
{
    // x is not square of odd
}
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 14:23     Построить ломаную по заданным вершинам #22
Цитата Сообщение от grizlik78 Посмотреть сообщение
Прежде чем каким-либо образом вычислять корень или проводить разложение, стоит сделать простую проверку, которая отсеит 87,5% чисел:
C
1
2
3
4
if (x % 8 != 1) // или (x & 7 != 1)
{
    // x is not square of odd
}
А доказать сможете?
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
23.08.2011, 14:28     Построить ломаную по заданным вершинам #23
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Конечно.
Но я даже больше скажу. Последовательность квадратов нечётных чисел можно получить такой рекуррентной формулой:
http://www.cyberforum.ru/cgi-bin/latex.cgi?x_i = x_{i-1}+8i

http://www.cyberforum.ru/cgi-bin/latex.cgi?x_0 = 1

Добавлено через 2 минуты
Но проверка не позволяет распознать числа, которые точно являются квадратами нечётных. Она позволяет распознать числа, которые точно такими квадратами не являются. Дальше пока не придумывается
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 14:35     Построить ломаную по заданным вершинам #24
Цитата Сообщение от grizlik78 Посмотреть сообщение
Конечно.
Но я даже больше скажу. Последовательность квадратов нечётных чисел можно получить такой рекуррентной формулой:
http://www.cyberforum.ru/cgi-bin/latex.cgi?x_i = x_{i-1}+8i

http://www.cyberforum.ru/cgi-bin/latex.cgi?x_0 = 1
Что-то знакомое очень, не помню откуда. Правда вы не доказали, что эта последовательность исчерпывает все нужные числа (или ссылки не дали), Но все равно спасибо.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
23.08.2011, 14:42     Построить ломаную по заданным вершинам #25
Ну да, я сказал, что могу, но не доказывал
Если число x является квадратом нечётного, то можно его записать так:
http://www.cyberforum.ru/cgi-bin/latex.cgi?x^2 = (2a+1)^2 = 4a^2 + 4a + 1
откуда видно, что
http://www.cyberforum.ru/cgi-bin/latex.cgi?4 | (x^2 - 1)
и при этом
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{x^2 - 1}{4}=a(a+1)
то есть
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{x^2 - 1}{8}=\frac{a(a+1)}{2}
Справа сумма арифметической прогрессии, откуда несложно и рекуррентную формулу вывести.
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 15:08     Построить ломаную по заданным вершинам #26
grizlik78, доказательство очевидное

Добавлено через 1 минуту
Можно проще:
http://www.cyberforum.ru/cgi-bin/latex.cgi?(2i+1)^2-(2i-1)^2=8i

Добавлено через 25 минут
Deviaphan, ваш метод лучше моего, корни на аппаратном уровне в сотни раз быстрее вычисляются, чем самое оптимальное программное разложение.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.08.2011, 15:16     Построить ломаную по заданным вершинам #27
Цитата Сообщение от Olga_ Посмотреть сообщение
ваш метод лучше моего
В своё оправдание могу сказать, что я ни разу математики не знаю и разложения просто не смог бы сделать.) Надо восполнять пробелы... пошёл читать.)
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
23.08.2011, 15:18     Построить ломаную по заданным вершинам #28
Но такой метод подходит только для процессоров, где есть аппаратный корень и плавучка. Хотя ТС вроде не ограничивали заданием
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.08.2011, 15:21     Построить ломаную по заданным вершинам #29
Цитата Сообщение от grizlik78 Посмотреть сообщение
где есть аппаратный корень
x87 и старше
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2011, 15:22     Построить ломаную по заданным вершинам
Еще ссылки по теме:
C++ Построить матрицу В такого же размера, как А, элементы которой обладают заданным свойством
Определить, можно ли из отрезков, длины которых равны заданным числам, построить прямоугольник C++
C++ Найти площадь треугольника по его вершинам
C++ По трем вершинам прямоугольника найти координаты четвертой
C++ Множество точек определяет ломаную. Имеет ли она самопересечения?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 15:22     Построить ломаную по заданным вершинам #30
Цитата Сообщение от grizlik78 Посмотреть сообщение
Но такой метод подходит...
А если абстрагироваться от аппаратуры, вот Вы каким бы методом проверяли?
Yandex
Объявления
23.08.2011, 15:22     Построить ломаную по заданным вершинам
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru