Russian Qt Forum
Ноябрь 26, 2024, 06:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: График по массиву  (Прочитано 3166 раз)
Loonaticc
Гость
« : Май 27, 2013, 18:28 »

Добрые люди, помогите кто знает.
Имеется цель:
1) считать из файла массивы точек, скажем X1 и Y1. Ну или двумерный сразу (X1, Y1).
2) построить по этим массивам график.

Я новичок в Qt совсем. Всё собрал, прикрутил- проект работает. Пока самое начало начинаю- пробую как рандомные точки через цикл выводить. Но может кто поможет с кодом? как считать из файла и нарисовать? Спасибо огромное
Код:
// количество данных
    const int N1 = 10;

    // выделить память
    double *X1 = (double *)malloc((2*N1)*sizeof(double));
    double *Y1 = X1 + N1;

    //шаг
    double h = 8./(N1-1);
    for (int k = 0; k < N1; k++)
    {
        X1[k] = k*h;
        Y1[k] = rand()%10;
        curv1->setSamples(X1,Y1,N1);
    }
Записан
Loonaticc
Гость
« Ответ #1 : Май 27, 2013, 19:35 »

неужели никто не поможет  Грустный Грустный

пробую сначала просто из массивов точки выводить. но выводит что-то не то
Код:
double X1[] = {0, 1, 2, 3, 4};
    double Y1[] = {1, 1, 2, 3, 1};


    double *p1, *p2;
    p1 = X1;
    p2 = Y1;

    for (int i=0; i<N1; i++){

        curv1->setSamples(p1+i,p2+i,N1);
    }
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Май 27, 2013, 20:52 »

читать из файла — почитай документацию QFile

malloc/free — это больше для чистого си, в плюсах проще использовать new/delete

рисовать можно на QGraphicsView (по-моему проще чем через paintEvent) или с использованием библиотеки QwtPlot

во втором коде обращение к элементам правильное, но неизестно что такое curv1
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Loonaticc
Гость
« Ответ #3 : Май 28, 2013, 00:03 »

curve1- это и есть кривая, которую по точкам выводим))
покопался я в QFile, только что- то не пойму до конца.
К примеру, на каждой строке но одному числу. вот так
1
2
4
7
Как сделать, чтобы из файла считывалась первая строка- записывалась в массив X[] под индексом X[0]
потом вторая строка с двойкой записалась в массив Y[0]
затем 4ка- в X[1]
7ка- в Y[1]

и так далее, то есть чтобы попарно числа заполняли 2 массива?
там по идее один цикл всего нужен с проверкой на четность номера операндов. Может кто поделится кодом? а то уже битый час сижу не получается((
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Май 28, 2013, 02:15 »

в описании QFile есть даже пример как работать с файлами, написано очень прозрачно.
Код
C++ (Qt)
QFile f("input.txt");
if (!f.open(QIODevice::ReadOnly))
{
   qDebug() << "error opening file:" << f.errorString();
   return;
}
 
int size = f.readLine().toInt(); // по-хорошему первой строкой в файле указывают размерность массива
int *x = new int[size], *y = new int[size];
for (int i = 0; i < size; ++i)
{
   x[i] = f.readLine().toInt();
   y[i] = f.readLine().toInt();
}
...
delete [] x;
delete [] y;

если размерность в файле не указана, используй std::vector или QList
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.158 секунд. Запросов: 23.