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

true кодеры в чем ошибка, хотел перевести паскаль на с++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Упорядочить четные элементы массива из n числовых элементов методом пузырька http://www.cyberforum.ru/cpp-beginners/thread1015803.html
Вот дана задача Упорядочить четные элементы массива из n числовых элементов методом пузырька по возрастанию. помогите пожалуйста проверьте решение ! С++ #include "stdafx.h" #include <string.h>...
C++ непонятная ошибка Здравствуйте. Вот в этой программе у меня пишет ошибку: cpp(60) : error C2065: 'j_max' : undeclared identifier. Хотя если вместо Y написать Y ( в функции void function 3) все хорошо считает. В чем... http://www.cyberforum.ru/cpp-beginners/thread1015795.html
C++ WinMain entry point
Здравствуйте! Я только начал изучать WinAPI и, естественно, периодически заглядываю в MSDN. Но сразу же столкнулся с недопониманием. На странице...
C++ Что за ошибка ?
Помогите с ошибкой разобраться #include"stdafx.h" #include<iostream> #include<iomanip> #include<fstream> #include<math.h> using namespace std; void read_matr(double Y){ ifstream...
C++ С++ трудности в решении задачи( не могу зарешать http://www.cyberforum.ru/cpp-beginners/thread1015775.html
Ввести двумерный массив А N*M,вывести его.Найти К – количество элементов, чей модуль превышает величину max+min/2. Если K превышает количество К1 (количество отрицательных элементов массива), то...
C++ Вычислить длину окружности, площадь круга и объем шара одного и того же заданного радиуса. Предусмотреть проверку вводимых данных на отрицательность Вычислить длину окружности, площадь круга и объем шара одного и того же заданного радиуса. Предусмотреть проверку вводимых данных на отрицательность. помогите пожалуйста)))нужно составить программу... подробнее

Показать сообщение отдельно
Max Dark
шКодер самоучка
1849 / 1649 / 603
Регистрация: 09.10.2013
Сообщений: 3,678
Записей в блоге: 6
Завершенные тесты: 2
22.11.2013, 22:20
в паскале блок repeat until означает "делать , пока ложь" http://ideone.com/eKrH6G
в с/с++ блок do while означает "делать, пока истина" http://ideone.com/syDXjg

Те эти блоки не идентичны
+ вам нужно учитывать, что в паскале индексы массивов начинаются с 1, а в С/С++ - с 0
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
#include <iostream>
#include <cmath>
using namespace std;
 
struct vv {
    long int x, y;
};
long int vect(vv a1, vv a2, vv b1, vv b2) {
    long int result = (a2.x - a1.x)*(b2.y - b1.y) +
        (b2.x - b1.x)*(a2.y - a1.y);
    return result;
}
long int dist2(vv a1, vv a2) {
    long int result = (a2.x-a1.x)*(a2.x-a1.x) + (a2.y-a1.y)*(a2.y-a1.y);
    return result;
}
int main() {
    vv a[100], b[100];
    int n;
    cin >> n;
    for (int i=0; i < n; i++) {
        cin >> a[i].x >> a[i].y;
    }
    int m = 0;
    for (int i=1; i < n; i++) {
        if (a[i].y < a[m].y)
            m=i;
        else if (a[i].y == a[m].y && a[i].x > a[m].x) 
            m=i;
    }   
    b[0] = a[m];
    a[m] = a[0];
    a[0] = b[0];
    
    int k=0;
    int min = 2;
    do {
        for (int j=1; j < n; j++) {
            if ((vect(b[k],a[min],b[k],a[j]) < 0) ||
                ((vect(b[k],a[min],b[k],a[j]) == 0) &&
                (dist2(b[k],a[min]) < dist2(b[k],a[j]))))
            min = j;
        k++;
        }
            
        b[k] = a[min];
        min=0;
    } while (!((b[k].x == b[0].x) && (b[k].y == b[0].y)));
    for (int j = 0; j < k; j++) {
        cout << k << " "<< b[j].x << " " << b[j].y << endl;
    }
}
Вот что у меня вышло, не проверял
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru