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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Запись и чтение объектов разных классов в один файл http://www.cyberforum.ru/cpp-beginners/thread638909.html
Здравствуйте. Изучаю С++ по Лафоре. Дошёл до места, где объясняется, как записывать объекты разных классов в один бинарник. У Лафоре, идея чтения из одного файла, данных объектов разных классов, следующая: перед записью данных объекта записываем его тип (в приведённом листинге типы содержит перечисление Ctypes), а при чтении - сначала читаем тип, создаём объект нужного класса и читаем в него...
C++ Не запускает программу после компиляции Дело в том что когда проверяю код на ошибки всё нормально, но когда нажимаю "запустить" мне выдает что его нужно сначала откомпеллировать. Лазила в настройках, устанавливала разные среды, везде одна и таже ошибка. У меня еще такой вопрос: влияет ли ОС на это? Дело в том что когда у меня стояла лицензия таких ошибок не было, но после переустановки на пиратскую винду (хр) у меня возникли эти... http://www.cyberforum.ru/cpp-beginners/thread638886.html
Код Enter C++
Как мне прописать условие: если нажата кнопка enter
C++ Хранение глобального массива с объектами
Добрый день всем. У меня есть vector с объектами. И надо чтобы он был доступен по всех классах.( отдельных файлах ). Чтобы я мог менять его значения по ссылке. Как лучше реализовать такое хранилище? В виде глобальной переменной - говорят плохо. Заранее спасибо!
C++ таймер c++ http://www.cyberforum.ru/cpp-beginners/thread638850.html
Всем привет. Прошу вас помочь мне в слудующем: нужен простой таймер(среда visual c++ express выпуск),который отключит вот эту функцию через 20 секунд после включения Сама функция: if(opt.other.аст==1) {MEMwrite((void *)(ast),(void *)"\xC3",1);} if(opt.other.аст==0) {MEMwrite((void *)(ast),(void *)"\x55",1);}
C++ Действие при нажатии Enter Вот недавно здесь нашел код: #include "stdafx.h" #include <conio.h> #include <string> #include <fstream> #include "iostream" #include <windows.h> using namespace std; подробнее

Показать сообщение отдельно
Leonman
 Аватар для Leonman
15 / 15 / 0
Регистрация: 17.06.2012
Сообщений: 266
17.08.2012, 14:19     Возможно-ли упростить код?
При выполнении хотя бы одного условия равенства, вывести только один из двух равных элементов. На выходе: 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");    
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru