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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
mexxantom
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 47
#1

Объясните фрагмент кода, как работает,можно ли заменить??? - C++

05.06.2011, 23:52. Просмотров 1322. Ответов 13
Метки нет (Все метки)

C++
1
2
sort(X.begin(),X.end());
 sort(Y.begin(),Y.end());
Что это и как это работает,можно ли заменить???
и вот ещё вот это
C++
1
2
    vector<float> X(4);
    vector<float> Y(4);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2011, 23:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Объясните фрагмент кода, как работает,можно ли заменить??? (C++):

Фрагмент кода на Delphi - C++ Builder
Есть фрагмент кода на Delphi: procedure TForm1.FormCreate(Sender: TObject) ; begin ListBox1.DragMode := dmAutomatic; end; ...

Фрагмент кода от типа шаблона - C++ Builder
В С++ есть шаблонные классы. Хочется сделать так, что бы в зависимости от типа T (см. пример) выполнялись разные фрагменты кода? Я...

Программа выдает ошибку [C++ Error] Unit1.cpp(23): E2062 Invalid indirection, объясните пожалуйста в чем причина и как можно исправить - C++ Builder
Программа выдает ошибку Unit1.cpp(23): E2062 Invalid indirection, объясните пожалуйста в чем причина и как можно исправить.подобную ошибку...

Объяснить как работает часть кода - C++ Builder
Можно поподробнее как работает этот отрывок кода Я понимаю, что PX растет, до тех пор пока не станет равен Width #define PI 3.14159 ...

объясните плз как работает массив в "С"(подробно!) - C++ Builder
объясните плз как работает массив в &quot;С&quot;(подробно!) вот пример #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #define eof -1 #define maxind...

Как заменить участок кода - Visual C++
Подскажите нубу как заменить имя переменной во всем тексте программы на другое имя

13
grizlik78
Эксперт С++
1981 / 1474 / 127
Регистрация: 29.05.2011
Сообщений: 3,047
06.06.2011, 00:10 #2
Цитата Сообщение от mexxantom Посмотреть сообщение
vector<float> X(4);
vector<float> Y(4);
Создаются 2 вектора по 4 элемента. Отличий от динамического массива несколько. Во первых размер вектора можно менять. Во вторых размер можно узнать, вызвав от вектора функцию size(). В третьих удаляется вектор автоматически, ну и ещё некоторые мелочи.

Цитата Сообщение от mexxantom Посмотреть сообщение
sort(X.begin(),X.end());
sort(Y.begin(),Y.end());
Это вызов алгоритмов сортировки, которые упорядочивают соедержимое обоих векторов от начала и до конца. Кажется, по умолчанию сортировка по возрастанию...

Добавлено через 37 секунд
Цитата Сообщение от mexxantom Посмотреть сообщение
можно ли заменить???
Смотря зачем...
1
mexxantom
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 47
06.06.2011, 00:31  [ТС] #3
вот посмотри пожалуйста
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
#include "stdafx.h"
#include "iostream"
#include "vector"
#include "algorithm"
 using namespace std;
void main()
{
    vector<float> X(4);
    vector<float> Y(4);
    cout<<"vvedite x y (nizhnia tochka 1 primoygolnika"; 
  cin>>X[0]>>Y[1];
    cout<<"vvedite x y verhnia tochka 1 primoygolnika"<<endl;
    cin>>Y[0]>>X[1];
  cout<<"vvedite x y (nizhnia tochka 2 primoygolnika"; 
 cin>>X[2]>>Y[3];
    cout<<"vvedite x y verhnia tochka 2 primoygolnika"<<endl;
    cin>>Y[2]>>X[3];
 
    if(X[0]>=X[1]||Y[1]>=Y[0]||X[2]>=X[3]||Y[3]>=Y[2])
      cout<<"tokogo primoygolnika ne syshestvyet"<<endl;
    else
    if(X[0]>=X[3]||X[2]>=X[1]||Y[3]>=Y[0]||Y[1]>=Y[2])//значит не пересекаются
    {
   cout<<"primoygolniki ne peresicaytsi"<<endl;
    }
    else
    {
        sort(X.begin(),X.end());
        sort(Y.begin(),Y.end());
        float S=(X[2]-X[1])*(Y[2]-Y[1]);
       cout<<"S="<<S;
    }    
}
0
grizlik78
Эксперт С++
1981 / 1474 / 127
Регистрация: 29.05.2011
Сообщений: 3,047
06.06.2011, 00:42 #4
И? Что-то не работает?
Хотя координаты при вводе перемешаны оригинальным образом
1
mexxantom
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 47
06.06.2011, 01:13  [ТС] #5
не всё работает ок просто если можно желательно заменить те строчки!
Что с вводом не так сначала нижняя и верхняя точка первого прямоугольника затем второго
0
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
06.06.2011, 01:20 #6
Цитата Сообщение от grizlik78 Посмотреть сообщение
Отличий от динамического массива несколько. Во первых размер вектора можно менять. Во вторых размер можно узнать, вызвав от вектора функцию size(). В третьих удаляется вектор автоматически, ну и ещё некоторые мелочи.
И главное отличие: vector<T> - это класс, дин. масив - стандартное средство языка.
1
grizlik78
Эксперт С++
1981 / 1474 / 127
Регистрация: 29.05.2011
Сообщений: 3,047
06.06.2011, 01:23 #7
Цитата Сообщение от mexxantom Посмотреть сообщение
Что с вводом не так сначала нижняя и верхняя точка первого прямоугольника затем второго
Ну смотрим. Сначала нижняя первого. x и y.
C++
1
cin>>X[0]>>Y[1];
Хм. Почему X[0], а Y[1]? Ну ладно.
Дальше верхняя первого. x и y.
C++
1
cin>>Y[0]>>X[1];
Упс. А почему теперь сначала Y, а потом X? Это чтобы врага запутать?
Ну и вторая аналогично.
1
mexxantom
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 47
06.06.2011, 01:27  [ТС] #8
так может кто нибудь переделать с помощью массива или нет?
плз оч надо

Добавлено через 2 минуты
Цитата Сообщение от grizlik78 Посмотреть сообщение
Ну смотрим. Сначала нижняя первого. x и y.
C++
1
cin>>X[0]>>Y[1];
Хм. Почему X[0], а Y[1]? Ну ладно.
Дальше верхняя первого. x и y.
C++
1
cin>>Y[0]>>X[1];
Упс. А почему теперь сначала Y, а потом X? Это чтобы врага запутать?
Ну и вторая аналогично.
главное работает и этим всё сказано;
а как я её писал это уже мои заморочки
0
grizlik78
Эксперт С++
1981 / 1474 / 127
Регистрация: 29.05.2011
Сообщений: 3,047
06.06.2011, 01:45 #9
Ну если проблема только в векторах, то нет проблем.
C++
1
vector<float> X(4);
меняем на
C++
1
float X[4];
а
C++
1
sort(X.begin(),X.end());
на
C++
1
sort(X,X+4);
Но если и сортировку надо заменить... Ну тогда можно либо сишную qsort использовать, либо свою сортировку реализовать. Тем более эффективность здесь не важна.

Цитата Сообщение от mexxantom Посмотреть сообщение
главное работает и этим всё сказано;
а как я её писал это уже мои заморочки
Работает — не трогай!
1
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
06.06.2011, 02:31 #10
mexxantom, ты бы написал, что эта программа должна делать. А то из твоего кода и постов непонятно.
1
grizlik78
Эксперт С++
1981 / 1474 / 127
Регистрация: 29.05.2011
Сообщений: 3,047
06.06.2011, 10:36 #11
Да вроде площадь пересечения прямоугольников определяет. Но в силу особенностей ввода координат, проверить правильность мой мозг не способен
1
mexxantom
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 47
06.06.2011, 15:14  [ТС] #12
вводятся 2 точки левая нижняя и правая верхняя двух прямоугольников,далее прямоугольники проверяются на пересечение и если пересекаются то ищется площадь пересечение
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
06.06.2011, 16:26 #13
mexxantom, а зачем там сортировка? Да и ввод действительно странный.
1
grizlik78
Эксперт С++
1981 / 1474 / 127
Регистрация: 29.05.2011
Сообщений: 3,047
06.06.2011, 19:25 #14
Цитата Сообщение от Nameless One Посмотреть сообщение
а зачем там сортировка
Ну это-то как раз понятно. Если все координаты упорядочить, то две средние задают как-раз область пересечения. По-моему это действительно самый простой способ найти эту область.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2011, 19:25
Привет! Вот еще темы с ответами:

Объясните строку кода - C++ WinAPI
if ( GetFileAttributes( _T(&quot;C:\myfolder\myfile.txt&quot;) ) != (DWORD)-1 ) как понять (DWORD)-1 и какие значения может принять,заранее...

Объясните фрагмент кода! - C++
Ребят помогите! нужна помощь, объясните мне вот этот фрагмент из программы! #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt;...

Как можно перевести фрагмент кода с паскаля в с++? - C++
begin j:=1; {номер первого блока} repeat write('( '); for i:=j to n do if blok=j then write(i, ' '); {если число і из блока...

Объясните, пожалуйста, фрагмент кода - C++
#define NUMLINES((int)(sizeof devcaps / sizeof devcaps )) struct { int iIndex; char *szLabel; char *szDesc; } devcaps = { ...


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

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

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