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

Бинарный файл, содержащий координаты точек плоскости - C++

Восстановить пароль Регистрация
 
kristina-lonsh
0 / 0 / 0
Регистрация: 04.03.2012
Сообщений: 61
17.02.2013, 07:03     Бинарный файл, содержащий координаты точек плоскости #1
Задача: В бинарном файле задано множество точек на плоскости. Количество элементов исходного файла неизвестно. Подсчитать количество точек, лежащих внутри указанной окружности. Окружность задавать с клавиатуры координатами центра и радиусом. Вывести на экран координаты найденных точек.
Мой вопрос состоит в том, как создать бинарный файл? Как там могут быть заданы координаты точек (имеется ввиду, координаты каждой точки в отдельной строке или через запятую или запятых там в принципе быть не может? вот тут в общем засела я, а решить надо быстро мне.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 07:03     Бинарный файл, содержащий координаты точек плоскости
Посмотрите здесь:

написать программу которая рассчитывает расстояние N точек на плоскости. Координаты х и у. C++
C++ на плоскости задано множество точек. Найти все подмножества точек, лежащих на одной прямой.
Создать стек, содержащий считанные из текстового файла координаты точек C++
Даны координаты трех точек на плоскости. Если они могут быть вершинами равнобедренного остроугольного треугольника, вычислить его площадь. Где ошибка? C++
C++ Дано множество точек на плоскости, заданных полярными координатами. Получить декартовы координаты этих точек
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LASpace
 Аватар для LASpace
34 / 34 / 3
Регистрация: 27.01.2013
Сообщений: 142
17.02.2013, 07:59     Бинарный файл, содержащий координаты точек плоскости #2
Бинарные файлы
Следует иногда пользоваться поиском по форуму) большинство вопросов решаются именно так.
kristina-lonsh
0 / 0 / 0
Регистрация: 04.03.2012
Сообщений: 61
17.02.2013, 08:06  [ТС]     Бинарный файл, содержащий координаты точек плоскости #3
Цитата Сообщение от LASpace Посмотреть сообщение
Бинарные файлы
Следует иногда пользоваться поиском по форуму) большинство вопросов решаются именно так.
хехе, если честно, я это уже читала)) просто думала поможете с созданием бинарного файла, содержащего именно координаты точек плоскости
palva
 Аватар для palva
2373 / 1595 / 190
Регистрация: 08.06.2007
Сообщений: 6,364
Записей в блоге: 4
17.02.2013, 12:00     Бинарный файл, содержащий координаты точек плоскости #4
Ну если пофантазировать...
Точка на плоскости задается двумя координатами, то есть двумя числами типа double. Файл бинарный, значит, координата точки представлена в точности теми байтами какими число представлено в оперативной памяти компьютера: 8 байт первая координата, 8 байт вторая координата, затем идут координаты второй точки 16 байтов и т. д. Таким образом размер файла в байтах должен делиться на 16 и результат деления равен количеству точек, который файл содержит. Дальше используйте какие-нибудь функции, пригодные для ввода-вывода двоичных данных. Здесь вы должны сказать какого типа функции вам более привычны read/write, форматированный ввод/вывод си или потоковый ввод/вывод си++ (это я еще не все варианты перечислил), тогда можно будет говорить о реализации вывода и ввода.

Добавлено через 59 минут
Один из вариантов:
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
#include <iostream>
#include <fstream>
using namespace std;
 
int main() {
    double d1=3.25, d2=-4.66;
    double x,y;
    int i, n;
    // Вывод файла
    ofstream outfile ("file.bin", ios::binary);
    outfile.write((char*)&d1, 8);
    outfile.write((char*)&d2, 8);
    outfile.close(); 
    // Ввод файла
    ifstream infile ("file.bin", ios::binary|ios::ate);
    n = infile.tellg();
    cout << n << '\n'; // длина файла
    n /= 2*sizeof(double);
    infile.seekg(0, ios::beg);
    for(i=0; i<n; i++) {
        infile.read((char*)&x, sizeof(double));
        infile.read((char*)&y, sizeof(double));
        cout << x << ' ' << y << '\n';
    }
    infile.close(); 
    return 0;
}
kristina-lonsh
0 / 0 / 0
Регистрация: 04.03.2012
Сообщений: 61
17.02.2013, 13:40  [ТС]     Бинарный файл, содержащий координаты точек плоскости #5
Цитата Сообщение от palva Посмотреть сообщение
Ну если пофантазировать...
Точка на плоскости задается двумя координатами, то есть двумя числами типа double. Файл бинарный, значит, координата точки представлена в точности теми байтами какими число представлено в оперативной памяти компьютера: 8 байт первая координата, 8 байт вторая координата, затем идут координаты второй точки 16 байтов и т. д. Таким образом размер файла в байтах должен делиться на 16 и результат деления равен количеству точек, который файл содержит. Дальше используйте какие-нибудь функции, пригодные для ввода-вывода двоичных данных. Здесь вы должны сказать какого типа функции вам более привычны read/write, форматированный ввод/вывод си или потоковый ввод/вывод си++ (это я еще не все варианты перечислил), тогда можно будет говорить о реализации вывода и ввода.
Оу, точно!!! 8 байт - 1 число!! Я знала, что истина где-то рядом Спасибо! Будем воплощать!
kristina-lonsh
0 / 0 / 0
Регистрация: 04.03.2012
Сообщений: 61
17.02.2013, 17:33  [ТС]     Бинарный файл, содержащий координаты точек плоскости #6
Цитата Сообщение от palva Посмотреть сообщение
Ну если пофантазировать...
Точка на плоскости задается двумя координатами, то есть двумя числами типа double. Файл бинарный, значит, координата точки представлена в точности теми байтами какими число представлено в оперативной памяти компьютера: 8 байт первая координата, 8 байт вторая координата, затем идут координаты второй точки 16 байтов и т. д. Таким образом размер файла в байтах должен делиться на 16 и результат деления равен количеству точек, который файл содержит. Дальше используйте какие-нибудь функции, пригодные для ввода-вывода двоичных данных. Здесь вы должны сказать какого типа функции вам более привычны read/write, форматированный ввод/вывод си или потоковый ввод/вывод си++ (это я еще не все варианты перечислил), тогда можно будет говорить о реализации вывода и ввода.
Подскажите, почему у меня при выводе содержимого файла выводятся одни нули??
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include<stdio.h>
using namespace std;
  
int main()
{
FILE* fp = fopen("koordinat.bin", "r+");
srand((unsigned)time(NULL));
int dat;
for (int i=0;i<10;i++)
    {dat=(rand()%10); 
    fwrite(&dat,sizeof(int),1,fp);
    }
for (int i=0;i<10;i++)
    {fread(&dat,sizeof(int),1,fp);
    cout<<dat<<"  ";
    }
system("PAUSE");
}
palva
 Аватар для palva
2373 / 1595 / 190
Регистрация: 08.06.2007
Сообщений: 6,364
Записей в блоге: 4
17.02.2013, 17:56     Бинарный файл, содержащий координаты точек плоскости #7
После записи файла надо встать на его начало.
C++
1
2
3
fpos_t pos=0;
// ...
fsetpos(fp,&pos);
Добавлено через 1 минуту
... либо закрыть файл и снова открыть.
В конце программы файл неплохо бы закрыть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 18:00     Бинарный файл, содержащий координаты точек плоскости
Еще ссылки по теме:

C++ Среди заданных точек на плоскости найти ту, у которой расстояние суммы равно наибольшему от остальных точек
Ввести координаты точек. Вычислить расстояния от всех точек до точки, введенной последней C++
C++ В заданном множестве точек плоскости найти количество точек в каждой из четвертей

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

Или воспользуйтесь поиском по форуму:
kristina-lonsh
0 / 0 / 0
Регистрация: 04.03.2012
Сообщений: 61
17.02.2013, 18:00  [ТС]     Бинарный файл, содержащий координаты точек плоскости #8
Цитата Сообщение от palva Посмотреть сообщение
После записи файла надо встать на его начало.
C++
1
2
3
fpos_t pos=0;
// ...
fsetpos(fp,&pos);
Помогло!!

Цитата Сообщение от palva Посмотреть сообщение
Добавлено через 1 минуту
... либо закрыть файл и снова открыть.
В конце программы файл неплохо бы закрыть.
Да-да, конечно, закрою, просто пока не прописала, т.к. еще координаты на принадлежность окружности еще буду проверять.
Yandex
Объявления
17.02.2013, 18:00     Бинарный файл, содержащий координаты точек плоскости
Ответ Создать тему
Опции темы

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