Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 47
1

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

05.06.2011, 23:52. Просмотров 1470. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2011, 23:52
Ответы с готовыми решениями:

Объясните как работает фрагмент кода
Здравствуйте, объясните что на консоли появится после выполнения этого фрагмента программы. Что...

Объясните, пожалуйста, как работает фрагмент кода. Почему при i = 0 вводится лишь 2 строки?
Здравствуйте! Объясните, пожалуйста, как происходит ввод строк в этом фрагменте кода. string...

Объясните как работает фрагмент программы
Есть фрагмент программы ↓ _____________________________________________________ Write('razmer...

Как заменить (перенести) фрагмент кода в WP странице перевод выводом
Нужно перенести фрагмент кода из одной части сгенерированной страницы в другую. решение типа...

13
Эксперт С++
2119 / 1558 / 231
Регистрация: 29.05.2011
Сообщений: 3,236
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
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
Эксперт С++
2119 / 1558 / 231
Регистрация: 29.05.2011
Сообщений: 3,236
06.06.2011, 00:42 4
И? Что-то не работает?
Хотя координаты при вводе перемешаны оригинальным образом
1
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 47
06.06.2011, 01:13  [ТС] 5
не всё работает ок просто если можно желательно заменить те строчки!
Что с вводом не так сначала нижняя и верхняя точка первого прямоугольника затем второго
0
Freelance
Эксперт С++
2871 / 1806 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
06.06.2011, 01:20 6
Цитата Сообщение от grizlik78 Посмотреть сообщение
Отличий от динамического массива несколько. Во первых размер вектора можно менять. Во вторых размер можно узнать, вызвав от вектора функцию size(). В третьих удаляется вектор автоматически, ну и ещё некоторые мелочи.
И главное отличие: vector<T> - это класс, дин. масив - стандартное средство языка.
1
Эксперт С++
2119 / 1558 / 231
Регистрация: 29.05.2011
Сообщений: 3,236
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
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
Эксперт С++
2119 / 1558 / 231
Регистрация: 29.05.2011
Сообщений: 3,236
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
Эксперт С++
5811 / 3462 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
06.06.2011, 02:31 10
mexxantom, ты бы написал, что эта программа должна делать. А то из твоего кода и постов непонятно.
1
Эксперт С++
2119 / 1558 / 231
Регистрация: 29.05.2011
Сообщений: 3,236
06.06.2011, 10:36 11
Да вроде площадь пересечения прямоугольников определяет. Но в силу особенностей ввода координат, проверить правильность мой мозг не способен
1
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 47
06.06.2011, 15:14  [ТС] 12
вводятся 2 точки левая нижняя и правая верхняя двух прямоугольников,далее прямоугольники проверяются на пересечение и если пересекаются то ищется площадь пересечение
0
Эксперт С++
5811 / 3462 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
06.06.2011, 16:26 13
mexxantom, а зачем там сортировка? Да и ввод действительно странный.
1
Эксперт С++
2119 / 1558 / 231
Регистрация: 29.05.2011
Сообщений: 3,236
06.06.2011, 19:25 14
Цитата Сообщение от Nameless One Посмотреть сообщение
а зачем там сортировка
Ну это-то как раз понятно. Если все координаты упорядочить, то две средние задают как-раз область пересечения. По-моему это действительно самый простой способ найти эту область.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2011, 19:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Объясните фрагмент кода
У нас есть матрица 4х4 мы делаем поворот на 90 градусов влево Объясните как работает код p = N...

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

Объясните фрагмент кода
#define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;locale.h&gt; ...

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


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

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

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