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

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

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

Вот не могу решить !!! - C++

18.11.2009, 17:22. Просмотров 446. Ответов 3
Метки нет (Все метки)

вот задачи с которыми я не как не могу справетса :

Есть n городов, расположенных на прямой. Телекомпания хочет разместить 3 радара в некоторых трех городах для вещание. Однако компания хочет достичь максимальной мощности такой системы. Если радары расположены в городах с координатами x1<x2<x3, то мощность будет равна (x3-x2)*(x2-x1), то есть произведению расстояний. Необходимо найти наибольшую возможную мощность вещание.
Технические условия. Программа читает из клавиатуры число n (3<=n<=100000) - количество городов, потом n чисел, которые не превосходят 1000000 по абсолютной величине, - координаты города. Программа выводит на экран искомое число.
Пример
Введения
5 3 1 5 2 4
Выведения
4
*****************************
Задача Lazer

Коли на день рождения подарили много шариков и игрушечный лазер. Шарики надуты и разбросаны по комнате. Коля заинтересовался, сколько шариков он собьет, выстрелив в выбранном им направлении (если бы еще и лазер был настоящим!!!). Луч, проходя сквозь шарик, идет дальше. Размеры Лоли считать бесконечно малыми, а шарики считать кругами. Помогите имениннику.Технические условия.
Программа читает из клавиатуры количество шариков 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

Поиогите пожалуйсто !!!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2009, 17:22     Вот не могу решить !!!
Посмотрите здесь:

C++ Не могу решить
не могу решить до конца C++
Не могу решить .... C++
C++ Не могу решить на C++
не могу решить функцию C++
C++ вот такое уравнение над решить
Простое, но решить не могу C++
не могу решить zadachu в С++ C++
Домашка по С/С++. Не могу решить! C++
C++ Не могу решить! C++
C++ Вот такое вот кажется лёгкое задание но не как не могу решить.
C++ Не могу найти ошибку. Нужно написать функцию обмена значениями для 2 целых чисел. Вот мой код

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
19.11.2009, 02:04     Вот не могу решить !!! #2
Для первой задачи есть такой вопрос или скорее всего уточнение: координаты n не должны повторяться, так как это будет один и тот же город?!
А в таком случае, решение очевидно:
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
31
32
33
34
35
#include <iostream>
 
int abs(int x) {return (x>0 ? x : !x+1);}
 
int main()
{
   int n;
for (;n>2;)
  {
   clrscr(); 
   cout<<"Vvedite kol-vo gorodov ";
   cin>>n;
  }
 
   int *x = new int [n];
   for (int i=0;i<n;i++)
     {
         Again:
         cout<<"Vvedite koordinatu dlia "<<i+1<<"goroda ";
         cin>>x[i];
         if (abs(x[i]>1000000) goto Again;
     }
 
    for (int i=0;i<n;i++)
        for (int j=i+1;j<n;j++) 
            if (x[j]>x[i]) 
               {
                  x[j]^=x[i];
                  x[i]^=x[j];
                  x[j]^=x[i];
               }
 
    cout<<(x[0]-x[(n-1)/2])*(x[(n-1)/2]-x[n-1]);
   return 0;
}
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.11.2009, 09:24     Вот не могу решить !!! #3
manfeese, Немного подправил Ваш код. Самая главная ошибка в принципе расчета максимальной мощности. Нужно было использовать не центральный (по количеству) город, а центральный по значению координат. Что бы было понятнее приведу пример: Пусть есть 5 городов с координатами 1 2 3 5 9. Если выбрать 1 3 9 (средний выбран по количеству) то мощность получается 12. А правильный вариант будет 1 5 9 (средний выбран по значению), мощность в этом случае равна 16.
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
31
32
33
34
35
36
37
38
39
#include <iostream.h>
#include <math.h>
int abs(int x) {return (x>0 ? x : !x+1);}
 
int main()
{
   int n;
for (;n<3;)
  {
   clrscr(); 
   cout<<"Vvedite kol-vo gorodov ";
   cin>>n;
  }
 
   int *x = new int [n];
   for (int i=0;i<n;i++)
     {
         Again:
         cout<<"Vvedite koordinatu dlia "<<i+1<<"goroda ";
         cin>>x[i];
         if (abs(x[i])>1000000) goto Again;
     }
 
    for (int i=0;i<n;i++)
        for (int j=i+1;j<n;j++) 
            if (x[j]>x[i]) 
               {
                  x[j]^=x[i];
                  x[i]^=x[j];
                  x[j]^=x[i];
               }
    int i_opt=0, sum_sr;
    sum_sr=(x[0]-x[n-1])/2+x[n-1];
   for (int i=0;i<n;i++)
       if(fabs(sum_sr-x[i_opt])>fabs(sum_sr-x[i]))
           i_opt=i; 
    cout<<(x[0]-x[i_opt])*(x[i_opt]-x[n-1]);
   return 0;
}
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
19.11.2009, 11:52     Вот не могу решить !!! #4
valeriikozlov, согласен с вами! Я тоже об этом думал, только никак пример подходящий в голову не приходил...
Yandex
Объявления
19.11.2009, 11:52     Вот не могу решить !!!
Ответ Создать тему
Опции темы

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