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

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

Войти
Регистрация
Восстановить пароль
 
Roker++
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 6
#1

Не могу решить .... - C++

23.11.2009, 17:49. Просмотров 800. Ответов 5
Метки нет (Все метки)

Я некак не могу решыть ...... Вот ети задачи :
Задача №1
Васе на день рождения подарили много шариков и игрушечный лазер.Шарики надуты и раскиданы по комнате. Вася заинтересовался,сколько шариков он собьет, выстрелив в выбранном им направлении (если б еще лазер был настоящий!!!). Луч, проходя через шарик,идет дальше.Размеры Васи считать пренебрежительно малыми,а шарики считать окружностями. Помогите Васе.


Технические условия.
Программа читает с клавиатуры количество шариков n (1<=n<=1000), затем два целых числа dx, dy, не равных одновременно нулю (-1000<=dx,dy<=1000) – координаты точки, через которую пройдет луч лазера. Далее программа читает n троек целых чисел, не превосходящих 1000 по модулю. Каждая тройка – координаты центра и радиус очередного шарика (всегда положительное число). Вася находится в начале координат. Никакие два шарика не имеют общих точек, а Вася не находится внутри шарика. Программа выводит на экран количество пробитых лучом лазера шариков. Если луч касается шарика, такой шарик не считается пробитым.

Пример
Ввод
4 4 3 -4 -4 2 2 1 1 1 7 5 12 9 3
Вывод
2

Задача №2
Компания Megasoft организовала телевикторину. На табло появляется натуральное число. Участник должен дописать к нему справа несколько цифр (обязательно хотя бы одну) так,чтобы получилось простое число и прислать SMS с полученным числом в студию. Участник, приславший свое число первым, эту сумму и выигрывает. Владелец компании Megasoft Гилл Бейтс известен своей жадностью и не хочет платить лишние деньги. Поэтому он решил негласно изменить правила. Теперь выигрыш получит тот участник викторины, который первым пришлет наименьшее возможное число. Помогите Г.Бейтсу определить сумму выигрыша согласно новым правилам.

Технические условия.
Программа читает с клавиатуры натуральное число, не большее 1000000. Программа выводит на экран минимальное число, которое можно получить по новим правилам викторины,то есть сумму, с которой Г.Бейтс вынужден распрощаться.
Примеры
Ввод
12
Вывод
127
Ввод
41
Вывод
419

Задача №3
Как известно, касательной к окружности является прямая, которая имеет ровно одну общую точку с этой окружностью. Возможна ситуация, когда одна и та же прямая является касательной сразу к двум окружностям. Тогда она называется общей касательной. Напишите программу, которая будет находить количество разных общих касательных для заданных двух окружностей. При выводе учтите древнюю традицию приписывать числу 7 значение «много». То есть, когда количество общих касательных будет строго большим 6, независимо от истинного количества выводите 7.


Технические условия. Программа читает с клавиатуры шесть целых чисел (каждое не больше по модулю миллиона) через пробел X1,Y1,R1,X2,Y2,R2 - соответственно координаты центра и радиусы 1-го и 2-го круга. Программа выводит на экран искомое число (с учетом упомянутой древней традиции).
Пример
Ввод 20 0 4 50 0 10
Вывод 4

Кто может помогите пожалуйсто !!!! Зарание Спаибо .!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2009, 17:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу решить .... (C++):

Не могу решить! C++ - C++
1)Даны две дроби A/B и C/D (А, В, С, D — натуральные числа). Составить программу для умножения дроби на дробь. Результат должен быть...

Не могу решить - C++
Создать два бинарных файла, все числа, содержащиеся в обоих файлах одновременно, переписать в третий файл. Дополнительных массивов не...

Не могу решить на C++ - C++
Задание: Программа должна работать следующим образом. Сначала пользователь вводит количество обрабатываемых чисел (значение n). Затем, он...

Вот не могу решить !!! - C++
вот задачи с которыми я не как не могу справетса : Есть n городов, расположенных на прямой. Телекомпания хочет разместить 3 радара в...

не могу решить до конца - C++
Есть задачка, и не могу понять в чём я ошибаюсь: Нужно из одного текста, который мы вводим с клавиатуры, найти самые длиное слово и...

Простое, но решить не могу - C++
Найти произведение элементов в каждой строке, расположенных между перввым и последним нулевыми элементами.

5
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
23.11.2009, 18:47 #2
Ето какой курс ?
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
23.11.2009, 19:06 #3
какое-то дежавю меня посетило... ну да ладно
вот что придумалось по первой задачи, точнее чего там думать,
есть координаты трёх точек начало координат (0,0) - Вася,
dx, dy - координаты точки, через которую пройдет луч лазера, и центр любой окружности

1. вычисляем угол между прямыми из начала координат (например теорема косинусов)
2. далее внимательно: прямоугольный треугольник все представляют? так вот представьте себе такой треугольник, прямой угол у которого образован перпендикуляром, опущенным из центра окружности на линию лазера. и на этот перпендикуляр смотрит угол - а, который мы вычислили в п.1
3. все помнят что sin(a)=перпендикуляр/гипотенузу, отсюда находим величину перпендикуляра
если длина перпендикуляра меньше радиуса шара, то лазер проходит через шар, иначе нет

вот это как бы теория
1
Roker++
0 / 0 / 0
Регистрация: 18.11.2009
Сообщений: 6
23.11.2009, 19:24  [ТС] #4
Цитата Сообщение от Sekt Посмотреть сообщение
Ето какой курс ?
Ето курс 10 класа .....

Добавлено через 1 минуту
Цитата Сообщение от TanT Посмотреть сообщение
какое-то дежавю меня посетило... ну да ладно
вот что придумалось по первой задачи, точнее чего там думать,
есть координаты трёх точек начало координат (0,0) - Вася,
dx, dy - координаты точки, через которую пройдет луч лазера, и центр любой окружности

1. вычисляем угол между прямыми из начала координат (например теорема косинусов)
2. далее внимательно: прямоугольный треугольник все представляют? так вот представьте себе такой треугольник, прямой угол у которого образован перпендикуляром, опущенным из центра окружности на линию лазера. и на этот перпендикуляр смотрит угол - а, который мы вычислили в п.1
3. все помнят что sin(a)=перпендикуляр/гипотенузу, отсюда находим величину перпендикуляра
если длина перпендикуляра меньше радиуса шара, то лазер проходит через шар, иначе нет

вот это как бы теория
За теорию спасибо , но меня интересует реалезацыя ....... Буду премного блогадарен , есле кто напишет код !!! Спасибо ...
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
23.11.2009, 23:00 #5
меня интересует реалезацыя
Ну так напиши реализацию - какие трудности ?

Добавлено через 16 минут
По поводу первой задачи - у меня другая идея.
Пусть (dx,dy) - точка L, через которую проходит лазер.
Находим угол наклона (lambda) прямой OL относительно координатной сетки.
sin(lambda)=y/sqrt(dx^2+dy^2)

Пусть (x,y) - это точка А - центр окружности радиуса r.
Находим угол наклона (alpha) прямой OA относительно координатной сетки.
sin(alpha)= y/sqrt(x^2+y^2).

Строим две касательных к окружности. Находим угол gamma между OA и любой касательной.
Для этого строим прямоугольный треугольник OAB. Где OA перпендукулярно AB. B - это точка на окружности. sin(gamma)=AB/OB.
AB=r - радиус окружности.
OB=sqrt(r^2+OA^2)=sqrt(r^2+x^2+y^2)
sin(gamma)=r/(r^2+x^2+y^2)

Лазер попадет в шар, если fabs(alpha-lambda)<gamma

Добавлено через 3 минуты
В задаче 2 нужно перебирать варианты пока не будет найдено простое число.
Пусть загадано число ABC.
Варианты c 1 цифрой: ABC0, ABC1, ..., ABC9.
Варианты с 2 цифрами: ABC00, ABC01, ..., ABC99.
И так далее.

Добавлено через 7 минут
В задаче 3 если окружности не пересекаются и не лежат друг в друге и не касаются друг друга, тогда касательных будет 4 штуки.

Если окружности касаются и не лежат друг в друге, тогда касательных будет 3 штуки.

Если окружности касаются и одна лежит в другой, тогда касательная будет 1 штука.

Если окружности совпадают, тогда касательных будет 7 штук ( МНОГО ).

Если окружности пересекаются (не совпадают), тогда касательных будет 2 штуки.

Еще вариант когда окружность лежит в другой, но они не касаются и не пересекаются. Тогда касательных будет 0 штук.
0
Steavy
29.11.2009, 00:26 #6
задача 2

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <cmath>
using namespace std;
int main(){
    cout<<"Input value=";
    unsigned int start_value,simple_value,i,k,temp,j,counter;
    cin>>start_value;
    temp=start_value;
    for(k=1;k<200;k++){
                     start_value=temp;
                     start_value=start_value*(pow(10,k));
                     for(i=0;i<=9;i++){
                                       
                                       start_value++;
                                       counter=2;
                                       for(j=2;j<start_value;j++){                                                                   
                                                                  if(start_value%j!=0) counter+=1;
                                                                   }
                                       if (counter==start_value) break;
                                       }
                     if (counter==start_value) {
                                                  simple_value=start_value;
                                                  break;
                                                  }
                     }
    cout<<endl<<"simple_value="<<simple_value;
    cout<<endl<<"Gill Baits you've lost "<<simple_value<<" dollars";
    cin>>start_value;
    return 0;
}
29.11.2009, 00:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2009, 00:26
Привет! Вот еще темы с ответами:

не могу решить zadachu в С++ - C++
помогите пожалуйста решить задачку,оч нужно((((((

Домашка по С/С++. Не могу решить! - C++
Народ помогите с задачами на языке С/С++ http://pics.kz/s3/57/1e/64/571e64e92a243b90996f40a624436f5d.png ...

не могу решить функцию - C++
http://s49.***********/i124/1005/28/3d20eebf9ef4.png помогите решить!

не могу решить (векторы и строки) - C++
Дали мне 2 задачи а я сижу и немогу их решить, помогите 1.прочитать из файла массив, элементы занести в вектор, добавить в вектор...


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

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

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