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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
~Nataly~
0 / 0 / 0
Регистрация: 12.08.2009
Сообщений: 16
#1

Выбрать и упорядочить данные из текстового файла - C++

12.08.2009, 12:27. Просмотров 575. Ответов 8
Метки нет (Все метки)

В языке С не сильна, и программа вызвала некое недоумение)
Есть тестовый файл со следующими данными:

0.299 -0.410 960.20 4551.85 1.120 346.85 275.46 20.508 19.854 99.999 20.085 19.431 99.999 99.999 99.999 0.388 1.146 99.999 99.999 99.999 99.999 99.999 99.999 99.999 0.003 0.003 0.029 0.039 0.041 0.056 30 30 99.999 99.999 99 21.295545351 15.896836368 9 1 22.21 2008 7 31 2454678.87595153 130 g.MP9401 /Users/nataly/cfht/1013384p_23.fits 2006 SX368 2112 4644

Необходимо получить файл, где по колонкам будут выведены следующие переменные из предыдущего файла, вот укажу наименования из вышеперечисленного:
x - 21.295545351 (координаты)
y - 15.896836368 (координаты)
дата - 9 1 22.21 2008 (тут имеется в виду число, месяц, часы, минуты, год)
юлианская дата - 2454678.87595153
имя объекта - 2006 SX368

Собственно результат должен быть в колонку в виде:
x y дата юлианская дата имя объекта

Для меня эта задача непосильный труд, помогите или подскажите кто чем сможет
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2009, 12:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выбрать и упорядочить данные из текстового файла (C++):

Из текстового файла с данными выбрать отдельные столбцы для записи в массив - C++
работа с двумерными массивами и файлами Здравствуйте я начинающий программист и у меня возник вопрос. У меня имеется текстовый фаил с...

Не выводятся данные из текстового файла - C++
Беру данные из блокнота, но при компиляции эти данные не выводится. В чём ошибка не могу понять.ПОдсажите пожалуйста. #include"stdafx.h" ...

Вывод на экран данные из текстового файла - C++
Создайте текстовый файл целых чисел (значения вводятся с клавиатуры). Проанализировав в программе созданный файл, создайте еще 2 файла: ...

Считать данные текстового файла в массив - C++
Здравствуйте знатоки. Есть файл file.txt в котором содержатся числа например массив из 5 символов (сам массив не определён и чисел на...

Выбрать из текстового файла все симметричные слова отличные от последнего и записать их в новый файл - C++
сформировать текстовый файл f1 выбрать из него все симметричные слова отличные от последнего и записать их в файл f2.

Данные из текстового файла записать в бинарный файл - C++
пытаюсь считать данные из текстового файла, записать их в бинарный файл. после пытаюсь считать из бинарного файла в строку и вывести ее...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
schdub
2946 / 1291 / 238
Регистрация: 19.01.2009
Сообщений: 3,397
Завершенные тесты: 1
12.08.2009, 12:35 #2
В исходном файле данные как-либо разделены или все сплошником через пробел?

Как классифицировать данные, не подходящие по формату. Например,
Код
0.299 -0.410 960.20 4551.85
0
Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
12.08.2009, 12:37 #3
Создать структуру где обьект етой структуры будет файл который вам нужен.
И занести в нее все что вам надо.
Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Struct str
{
float x;
float y;
Date d;
Date another_date;
}
int main()
{
FILE *f;
f=fopen("/Users/nataly/cfht/1013384p_23.fits 2006 SX368 2112 4644)","rw");
str f;
f.do_what_you_want();
return 0;
}
0
~Nataly~
0 / 0 / 0
Регистрация: 12.08.2009
Сообщений: 16
12.08.2009, 12:52  [ТС] #4
Цитата Сообщение от polivets Посмотреть сообщение
В исходном файле данные как-либо разделены или все сплошником через пробел?

Как классифицировать данные, не подходящие по формату. Например,
Код
0.299 -0.410 960.20 4551.85
Данные идут сплошь, просто через пробел
Те данные которые не подходят по формату это велечины, которые нужно опустить в ходе программы, мы их не учитываем.
0
schdub
2946 / 1291 / 238
Регистрация: 19.01.2009
Сообщений: 3,397
Завершенные тесты: 1
12.08.2009, 13:19 #5
x - 21.295545351 (координаты)
y - 15.896836368 (координаты)
дата - 9 1 22.21 2008 (тут имеется в виду число, месяц, часы, минуты, год)
юлианская дата - 2454678.87595153
имя объекта - 2006 SX368
В файле всего две координаты, и они всегда идут в одинаковом порядке?
Вообще, сколько раз могут встретиться каждый из этих объектов (данных)?
0
~Nataly~
0 / 0 / 0
Регистрация: 12.08.2009
Сообщений: 16
12.08.2009, 13:23  [ТС] #6
Цитата Сообщение от polivets Посмотреть сообщение
В файле всего две координаты, и они всегда идут в одинаковом порядке?
Вообще, сколько раз могут встретиться каждый из этих объектов (данных)?
Да, координаты всего 2, а объекты встречаются только в единичном случае
0
schdub
2946 / 1291 / 238
Регистрация: 19.01.2009
Сообщений: 3,397
Завершенные тесты: 1
12.08.2009, 14:23 #7
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
53
54
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAX 1024
 
char *p, *ptr;
char buff1[MAX], buff2[MAX];
 
// подправъте значения вот здесь
char file_to_open[] = "D:\\1.txt"; // который нужно открыть
char file_to_save[] = "D:\\2.txt"; // имя, под которым нужно сохранить
 
 
void get_next(char *name, int prop1, int prop2)
{
    int i;
 
    //p = ptr+1;
    for (i=0; i<prop1; i++)
        ptr = strchr(++ptr, ' ');
 
    p = ptr+1;
    for (i=0; i<prop2; i++)
        ptr = strchr(++ptr, ' ');
    strcat(buff2, name);
    strncat(buff2, p, (int)(ptr-p));
    strcat(buff2, "\n\0");
}
 
int main(int argc, char *argv[])
{
    buff2[0] = '\0';
 
    // читаем из файла в буфер
    FILE *fp = fopen(file_to_open, "r");
    fread(buff1, sizeof(buff1), 1, fp);
    fclose(fp);
 
    // формируем вывод
    ptr = buff1;
    get_next("x - ", 35, 1);
    get_next("y - ", 0, 1);
    get_next("дата - ", 0, 4);
    get_next("юлианская дата - ", 2, 1);
    get_next("имя объекта - ", 3, 2);
    
    // вывод в файл из формурованног буфера
    fp = fopen(file_to_save, "w");
    fwrite(buff2, strlen(buff2), 1, fp);
    fclose(fp);
    
    return 0;
}
1
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
12.08.2009, 22:48 #8
Не совсем по теме, но проще всего это делается на perl
Perl 6
1
2
3
4
5
6
7
#!/usr/bin/perl
 
while (<>) {
    chomp;
    @list= split( / +/, $_, -1 );
    print join( " ", @list[35,36,37,38,39,40,43,47,48] ), "\n";
}
Данные лежат в файле file.dat
Скрипт лежит в файле get.pl
Запуск: perl get.pl file.dat
Вывод:
Код
21.295545351 15.896836368 9 1 22.21 2008 2454678.87595153 2006 SX368
Perl можно скачать тут - http://www.activestate.com/downloads/
2
~Nataly~
0 / 0 / 0
Регистрация: 12.08.2009
Сообщений: 16
13.08.2009, 10:00  [ТС] #9
Большое спасибо ребят, очень помогли))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2009, 10:00
Привет! Вот еще темы с ответами:

Прочитать из текстового файла данные в массив структур - C++
Структура типа: Фамилия,логин,пароль,роль(администратор, модератор, простой пользователь) Не могу понять как прочитать из текстового...

Ввести из текстового файла данные в двунаправленный список - C++
Ввод данных в оперативную память в двунаправленный список из текстового файла. Как мне ввести из текстового файла данные в...

Считать данные из текстового файла и записать их в массив float-ов - C++
Помогите пожалуйста!!!Очень нужно! как считать данные из txt файла и записать их в массив float на языке с++.

Отфильтровать данные из текстового файла, оставляя только символы цифр - C++
Помогите написать программу в C++ Тема: Работа с файлами Написать программу, которая фильтрует данные из текстового файла, оставляя...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.08.2009, 10:00
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru