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

Правильно ли написана программа - C++

Восстановить пароль Регистрация
 
zidans
0 / 0 / 0
Регистрация: 30.10.2010
Сообщений: 45
02.11.2010, 08:02     Правильно ли написана программа #1
Проверьте, пожалуйста правильность написания данной программы и какой она всетаки дает результат в итоге ?(а то я чего то сомневаюсь). Заранее благодарю.

Задание в Microsoft Visual C++ 6.0:
В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в порядке х1,у1,х2,у2,х3,у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
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
        int n,i;
        double * arr, r, rMin, rMax;  // rMin-внутренний радиус, rMax - внешний
        cout<<"Vvedite kolvo tochek: ";
        cin>>n;
 
        arr = new double[n*2];
 
        // ввод
        for (i=0; i<n; ++i)
        {
                cout<<"x["<<i<<"]=";
                cin>>arr[2*i];
                cout<<"y["<<i<<"]=";
                cin>>arr[2*i+1];
        }
 
        // вычисляем расстояние от центра до первой точки
        r=sqrt(arr[0]*arr[0]+arr[1]*arr[1]);
        rMin=rMax=r;
 
        // вычисляем расстояние от центра до последующих точек
        // и находим макс. и мин. расстояния  - радиусы кольца
        for (i=0; i<n; ++i)
        {
                r=sqrt(arr[2*i]*arr[2*i]+arr[2*i+1]*arr[2*i+1]);
                if (r<rMin) rMin=r;
                if (r>rMax) rMax=r;
        }
 
        // вывод
        cout<<"Vse tochki lezhat v koltse s radiusami: ";
        cout<<"\nVnutrennij = "<<rMin;
        cout<<"\nVneshnij = "<<rMax;
 
        delete []arr;
        cout<<endl;
        system("pause");
        return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2010, 08:02     Правильно ли написана программа
Посмотрите здесь:

Программа (100%) написана правильно, но не запускается. C++
C++ Сумма (правильно ли написана программа?)
Правильно ли написана задача C++
C++ Правильно ли написана программа?
C++ Правильно ли написана программа
Крестики-нолики (в классах) - Правильно ли структурно написана программа C++
Правильно ли написана программа? C++
Правильно ли написана программа? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Good-bad man
 Аватар для Good-bad man
254 / 232 / 17
Регистрация: 31.10.2010
Сообщений: 504
02.11.2010, 08:47     Правильно ли написана программа #2
У меня компилятор сказал только про то, что в конце программы нету переноса строки.(если я правильно понял вопрос)
Vvedite kolvo tochek: 2
x[0]=3
y[0]=5
x[1]=10
y[1]=15
Vse tochki lezhat v koltse s radiusami:
Vnutrennij = 5.83095
Vneshnij = 18.0278
Для продолжения нажмите любую клавишу . . .
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
02.11.2010, 08:54     Правильно ли написана программа #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
34
35
36
37
38
39
40
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form1->Repaint();
int n,i;
double * arr, r, rMin, rMax;
n=100;
 
arr = new double[n*2];
const int centerX = Form1->Width/2;
const int centerY = Form1->Height/2;
 
// генерация точек
for (i=0; i<n; ++i)
{
    arr[2*i] = -100+rand()%200;
    arr[2*i+1] = -100+rand()%200;
}
 
// вычисление радиусов
r=sqrt(arr[0]*arr[0]+arr[1]*arr[1]);
rMin=rMax=r;
 
for (i=0; i<n; ++i)
{
    r=sqrt(arr[2*i]*arr[2*i]+arr[2*i+1]*arr[2*i+1]);
    if (r<rMin) rMin=r;
    if (r>rMax) rMax=r;
 
}
 
// отрисовка
Form1->Canvas->Pen->Width = 2;
Form1->Canvas->Ellipse(centerX-rMax, centerY - rMax,rMax+centerX, rMax+centerY);
Form1->Canvas->Ellipse(centerX-rMin, centerY - rMin,rMin+centerX, rMin+centerY);
 
for (i=0; i<n; ++i)
    Form1->Canvas->Pixels[centerX+arr[2*i]][centerY + arr[2*i+1]] = clRed;
 
delete []arr;
}
На скорую руку, конечно, но вроде так. Результат - все точки внутри кольца:
Миниатюры
Правильно ли написана программа  
Yandex
Объявления
02.11.2010, 08:54     Правильно ли написана программа
Ответ Создать тему
Опции темы

Текущее время: 02:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru