Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2013, 10:09   #1
JinAnton
Пользователь
 
Регистрация: 04.01.2011
Сообщений: 54
По умолчанию из gcc++ в Visual Studio (проблемы с массивами в с++)

Вообщем я работаю под линуксом, знакомая попросила написать ей прогу простенькую на C++: "Дано множество точек на плоскости, заданных полярными координатами. Найти наибольшее декартово расстояние между этими точками."
Без проблем:
Код:
#include "iostream"
#include <cmath>
#include <stdio.h>
 
using namespace std;
int main()
{
    int n;
    printf("Введите количество точек: ");
    scanf("%d", &n);
    int r[n];//радиусы
    int fi[n];//углы
    int x[n];//декартовы координаты по оси ОХ
    int y[n];//декартовы координаты по оси ОY
    int dist[n][n-1];//расстояния между точками
    int max=0;
    int max1=0;
    int max2=0;
    printf("Введите полярные координаты каждой точки %d \n", n/2);
    for(int i=0;i<n;i++)
        {
            printf("Введите радиус для %d точки: ", i+1);
            scanf("%d", &r[i]);//cчитываем радиусы
            printf("Введите угол для %d точки(в градусах): ", i+1);
            scanf("%d", &fi[i]);//считываем углы
        }
   
    for(int i=0;i<n;i++)//находим декартовы координаты точек
        {
            x[i] = r[i] * cos(3.14159*fi[i]/180);
            y[i] = r[i] * sin(3.14159*fi[i]/180);
        }
    for(int i=0; i<n; i++)//вычисляем расстояния между точками
        {
        for(int j=0;j<i;j++)//вычисляем значения матрицы ниже диаганали, дабы не повторять вычисления, и не вычислять значения каждой точки относительно себя
            {
                dist[i][j]=sqrt(pow((x[j]-x[i]), 2)+pow((y[j]-y[i]), 2));//формула для вычисления декартова растояния по координатам
                if(dist[i][j]>max)//ищем максимальное расстояние
                    {
                        max1=i;//записываем номер первой точки для этого расстояния
                        max2=j;//номер второй точки
                        max=dist[i][j];//непосредственно само расстояние
                    }
            }
        }
    printf("Максимальное декартово растояние находится между точками %d и %d, оно равно %d", max1,max2, max);//выводим результат
 
    return 0;
}
gcc компилит без проблем, однако Visual Studio ругается на массивы типа int r[n];, мол размер должен быть объявлен константой, кто подскажет как обойти?

Последний раз редактировалось Stilet; 11.12.2013 в 11:38.
JinAnton вне форума Ответить с цитированием
Старый 11.12.2013, 10:20   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

используйте new
Кроме того, вместо кучи массивов переменных лучше сделать один - массив структур.
Двухмерный массив с расстояниями лишний - мы же ищем максимум - можно сохранять напрямую результат вычислений.
Хранить угол и радиус смысла нет - можно сразу после ввода вычислить координаты и хранить их.
Это не С++, это С...

Последний раз редактировалось waleri; 11.12.2013 в 10:23.
waleri вне форума Ответить с цитированием
Старый 12.12.2013, 00:25   #3
JinAnton
Пользователь
 
Регистрация: 04.01.2011
Сообщений: 54
По умолчанию

Спасибо, помогло.
Массив структур я не использую потому, что я точно знаю что они этого не изучали, а объяснить сам я ей не смогу...
Двумерный массив нужен, что бы указать между какими точками это расстояние, и не делать одинаковые расчеты(типа расстояния между точками 2,3 и 3,2), хотя может и можно обойтись без него, но заморачиваться я не хочу...
Насчет хранения согласен, теперь удаляю сразу после нахождения.
Теперь это С++))) ибо new нету в C...
JinAnton вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с установкой Microsoft Visual Studio _Колибри_ Общие вопросы C/C++ 1 23.11.2011 20:11
проблемы с Visual Studio 2010 ThisIzGame Софт 7 03.08.2010 16:26
Проблемы в Microsoft Visual Studio FIREVISTA Visual C++ 11 02.07.2010 17:09
Visual Studio 2008, проблемы с Release и Debug evgenrpo Win Api 7 22.06.2009 04:53
Проблемы с установкой Visual Studio 2005 Retiz Помощь студентам 4 14.03.2008 20:09