Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для Leonman
15 / 15 / 4
Регистрация: 17.06.2012
Сообщений: 274

Возможно-ли упростить код?

17.08.2012, 14:19. Показов 2088. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При выполнении хотя бы одного условия равенства, вывести только один из двух равных элементов. На выходе: b[i] и три элемента из c[i], c[j], d[i], d[j].

Код для упрощения:

C++
1
2
3
4
5
6
7
8
9
10
11
if(b[i] == b[j] && (c[i] == c[j] || c[i] == d[j] || d[i] == c[j] || d[i] == d[j]))
     {
      if (c[i] == c[j])              
       cout << "Расстояние: " << b[i] << " Вершинами треугольника являются точки: " << c[i] << ", " << d[i] << ", " << d[j] << endl;   
      if (c[i] == d[j])              
       cout << "Расстояние: " << b[i] << " Вершинами треугольника являются точки: " << c[i] << ", " << c[j] << ", " << d[i] << endl;
      if (c[j] == d[i])              
       cout << "Расстояние: " << b[i] << " Вершинами треугольника являются точки: " << c[i] << ", " << c[j] << ", " << d[j] << endl;
      if (d[i] == d[j])              
       cout << "Расстояние: " << b[i] << " Вершинами треугольника являются точки: " << c[i] << ", " << c[j] << ", " << d[i] << endl;  
     }
Условие задачи:

В одномерном массиве с четным количеством элементов(2N) находятся координаты N точек плоскости.
Они располагаются в следующем порядке: x1,y1,x2,y2,x3,y3…Определить номера точек, которые могут
являться вершинами равнобедренного треугольника.

И сам код (его упрощать не надо!):

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <iomanip>
#include <vector>
#include <cmath>
using namespace std;
 
int main()
{  
   int n;
   srand(time(0));   
   float a[n], x = rand();
   cout << "Введите количество точек:" << endl;
   cin >> n;
    cout << "Введите координаты точек:" << endl;
   for (int i = 0; i < n*2; i++)
    cin >> a[i];
   system("CLS");
   for (int i = 0; i < n; i++)
    cout << "X: " << a[2*i] << " " << setw(7) << "Y: " << a[2*i+1] << endl;
   vector<float> b;
   vector<float> c;
   vector<float> d;
   for (int i = 0; i < n; i++)  
    for (int j = i+1; j < n; j++)  
    { 
     b.push_back(sqrt((a[2*j] - a[2*i]) * (a[2*j] - a[2*i]) + (a[2*j+1] - a[2*i+1]) * (a[2*j+1] - a[2*i+1])));  
     c.push_back(i+1);
     d.push_back(j+1);
    }
   for (int i = 0; i < b.size(); i++)
    cout << b[i] << ", ";
    cout << endl;
   for (int i = 0; i < c.size(); i++)
    cout << c[i] << " ";
    cout << endl;
   for (int i = 0; i < d.size(); i++)
    cout << d[i] << " ";
    cout << endl; 
   for (int i = 0; i < b.size(); i++) 
    for (int j = i+1; j < b.size(); j++)
     if(b[i] == b[j] && (c[i] == c[j] || c[i] == d[j] || d[i] == c[j] || d[i] == d[j]))
     {
      if (c[i] == c[j])              
       cout << "Расстояние: " << b[i] << " Вершинами треугольника являются точки: " << c[i] << ", " << d[i] << ", " << d[j] << endl;   
      if (c[i] == d[j])              
       cout << "Расстояние: " << b[i] << " Вершинами треугольника являются точки: " << c[i] << ", " << c[j] << ", " << d[i] << endl;
      if (c[j] == d[i])              
       cout << "Расстояние: " << b[i] << " Вершинами треугольника являются точки: " << c[i] << ", " << c[j] << ", " << d[j] << endl;
      if (d[i] == d[j])              
       cout << "Расстояние: " << b[i] << " Вершинами треугольника являются точки: " << c[i] << ", " << c[j] << ", " << d[i] << endl;  
     }
system("PAUSE >> null");    
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.08.2012, 14:19
Ответы с готовыми решениями:

Упростить код, если возможно
На вход программы подаются фамилии и имена учеников. Известно, что общее количество учеников не превосходит 100. В первой строке вводится...

Возможно ли как-то упростить код?
int choice = int.Parse(Console.RealLine()); int money = 10000; int money2 = 1000; switch (choice) { case 0: if...

Возможно ли упростить код для асинхронной отправки электронной почты
Пишу консольное приложение для отправки писем. За раз отправляется около 100 писем с отчетами. Вроде всё работает, но вот код.... мягко...

22
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
19.08.2012, 01:33
Студворк — интернет-сервис помощи студентам
т.е. некий компилятор решил "подшестерить", и сделать, чтобы царь жил еще немного лучше, чем царь.
это полнейшее изнасилование с++. я могу только посоветовать никогда нак не делать.
если пишется такое:
C++
1
2
3
int n;
n = 5;
int a[n];
, то компилятор, который немного понимает в с++ должен заругаться (пусть мой друг велосипедист evg меня поправит).
эта форма записи предполагает размещение массива в стеке. т.е. компилятор должен знать его размер. а значение n будет присвоено только во время выполнения. в общем, ТАК НИЗЗЯ!
0
 Аватар для Leonman
15 / 15 / 4
Регистрация: 17.06.2012
Сообщений: 274
19.08.2012, 01:43  [ТС]
novi4ok, Ладна, я буду стараться избегать таких вещей. Тоесть если я хочу написать универсальную программу, для любого количества точек, то мне надо использовать вектор?
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
19.08.2012, 01:48
Цитата Сообщение от Leonman Посмотреть сообщение
novi4ok, Ладна, я буду стараться избегать таких вещей. Тоесть если я хочу написать универсальную программу, для любого количества точек, то мне надо использовать вектор?
вектор удобнее (даже я бы сказал - незаменим), когда заранее неизвестно, сколько элементов нужно будет там разместить.
если ты знаешь, по природе решаемой задачи число элементов будет всегда постоянным, то массив удобнее.
у тебя получится, ты - думаешь. а привычки и прочее, что приходит с опытом - придет в свое время.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2012, 01:48

Уважаемые знатоки, подскажите возможно ли как то упростить данный код
Суть в том, что количество и значения измерений (переменных fr и Tkip) каждый раз разное. А формулы в функциях каждый раз одинаковые. Можно...

Возможно ли упростить запрос?
Помогите пожалуйта.. Есть вот такая форма http://i057.***********/1105/fb/d1806f16ae37t.jpg При нажатии на кнопку выводятся данные. ...

Возможно ли упростить цикл?
Хотелось бы спросить можно ли избавиться от костыля в виде цикла тут: //{ qry_now.DisableControls; qry_now.First; while not...

Возможно ли упростить сортировку массива по значению?
Добрый день, подскажите пожалуйста, есть массив, например: array( =&gt; array( =&gt; value1 =&gt; value2 =&gt; value3 ) ...

Возможно ли упростить мою функцию по переключению картинок?
Принцип простой, задал некую переменную, меняю её значение в зависимости от активной картинки, после при клике в зависимости от значения...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru