Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

задача 900:При работе с графическим изображением часто возникает необходимость выбрать одну или несколько точек экрана. Так, например, для того чтобы построить отрезок, следует задать два его конца, для построения окружности можно задать ее центр и любую точку на окружности и т. д. Для указывания требуемой точки обычно используют курсор. Курсор может иметь одну, из следующих конфигураций:
а) Перекрестье (рис. 95, а). Указываемая точка-это точка пересечения двух прямых.
б) Крестик (рис. 95,6). Указываемая точка-это точка пересечения двух коротких отрезков.
в) Стрелка (рис. 95, б). Указываемая точка-это точка, в которую помещается острие стрелки.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2011, 10:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Построить ломаную по заданным вершинам (C++):

Дано n точек на плоскости, за время n*logn построить (n-1)-звенную ломаную - C++
Дано n точек на плоскости, заданных своими декартовыми координатами. За время n*logn построить (n-1)-звенную не пересекающую себя ломаную,...

За время n logn построить (n-1)звенную не пресекающую себя ломаную проходящую через все точки - C++
Дано n точек на плоскости заданных своими декартовыми координатами. За время n logn построить (n-1)звенную не пресекающую себя ломаную...

По заданным ребрам построить дерево - C++
в общем, задача такова: Даны ребра как на картинке (обозначил римской цифрой один исходные). Нужно построить дерево, как на картинке. ...

Построить прямоугольник по двум заданным точкам - C++
Построить прямоугольник по двум заданным точкам: левому верхнему и правому нижнему углам. Обе точки указываются с клавиатуры, а именно:...

Code::Blocks Построить 3 графика по заданным уравнениям - C++
Заранее спасибо откликнувшимся. // Требовалось решить задачу Коши ур-ием Даламбера. Задачу решил, получил 3 ур-ия, для которых...

Построить вектор, имеющий с заданным углом -45 градусов - C++
помогите пожалуйста сделать задачу в с++ построить вектор имеющий с заданным угол -45 градусов спасибо

40
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 12:42 #16
Цитата Сообщение от Deviaphan Посмотреть сообщение
Да я понял. Думал, что разложение дольше корня работает.)
Так это не вам ответ был А вы думали, что корни в компьютере так легко вычисляются, раз и все
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.08.2011, 12:47 #17
Цитата Сообщение от Olga_ Посмотреть сообщение
корни в компьютере так легко вычисляются, раз и вс
Есть подозрение, что на аппаратном уровне разложение эффективнее происходит, чем ручками.)))
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 13:15 #18
Цитата Сообщение от Deviaphan Посмотреть сообщение
Есть подозрение, что на аппаратном уровне разложение эффективнее происходит, чем ручками.)))
Про аппаратный уровень никто не спорит, речь о программном.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.08.2011, 13:28 #19
Цитата Сообщение от Olga_ Посмотреть сообщение
речь о программном
Но ведь корень вычисляется аппаратно. Сопроцессором.
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 13:33 #20
Цитата Сообщение от Deviaphan Посмотреть сообщение
Но ведь корень вычисляется аппаратно. Сопроцессором.
Ну ладно, спорить не буду, просто не всегда и все делает аппаратура, для полноты мышления надо разные варианты рассматривать, но это мое мнение.
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
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
}
0
Olga_
842 / 184 / 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
}
А доказать сможете?
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
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 минуты
Но проверка не позволяет распознать числа, которые точно являются квадратами нечётных. Она позволяет распознать числа, которые точно такими квадратами не являются. Дальше пока не придумывается
3
Olga_
842 / 184 / 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
Что-то знакомое очень, не помню откуда. Правда вы не доказали, что эта последовательность исчерпывает все нужные числа (или ссылки не дали), Но все равно спасибо.
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
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}
Справа сумма арифметической прогрессии, откуда несложно и рекуррентную формулу вывести.
2
Olga_
842 / 184 / 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, ваш метод лучше моего, корни на аппаратном уровне в сотни раз быстрее вычисляются, чем самое оптимальное программное разложение.
1
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.08.2011, 15:16 #27
Цитата Сообщение от Olga_ Посмотреть сообщение
ваш метод лучше моего
В своё оправдание могу сказать, что я ни разу математики не знаю и разложения просто не смог бы сделать.) Надо восполнять пробелы... пошёл читать.)
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,018
23.08.2011, 15:18 #28
Но такой метод подходит только для процессоров, где есть аппаратный корень и плавучка. Хотя ТС вроде не ограничивали заданием
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.08.2011, 15:21 #29
Цитата Сообщение от grizlik78 Посмотреть сообщение
где есть аппаратный корень
x87 и старше
0
Olga_
842 / 184 / 16
Регистрация: 01.08.2011
Сообщений: 502
23.08.2011, 15:22 #30
Цитата Сообщение от grizlik78 Посмотреть сообщение
Но такой метод подходит...
А если абстрагироваться от аппаратуры, вот Вы каким бы методом проверяли?
0
23.08.2011, 15:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2011, 15:22
Привет! Вот еще темы с ответами:

Написать условие: Можно ли по заданным координатам построить трапецию? - C++
... в 72 строке ЗЫ Я весь код скинул т.к. возможно понадобится остальное. Заранее благодарю Вас! :) #include<iostream> ...

Матрицы. По трём заданным матрицам А, В и С построить матрицу Х того же размера - C++
По трём заданным матрицам А(m,m), В(m,m) и С(m,m) построить матрицу Х того же размера, каждый элемент которой вычисляется по формуле xi j...

Определить, можно ли из отрезков, длины которых равны заданным числам, построить прямоугольник - C++
Заданы 4 вещественных числа. Определить, можно ли из отрезков, длины которых равны заданным числам, построить прямоугольник помогите...

Построить матрицу В такого же размера, как А, элементы которой обладают заданным свойством - C++
Построить матрицу В такого же размера, как А, элементы которой обладают следующим свойством: элемент В равен максимальному из элементов...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

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