Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Преобразование .dat файла


Автор: JENNIE 18.4.2009, 18:45
Помогите, пожалуйста, написать программулинку, очень нужна для обработки данных курсовой работы!

Задача следующая:

Программа считывает .dat файл, в котором содержится таблица данных, с разделителем - табуляцией. Необходимо заменить табуляции на определенное число пробелов. Пограмма должна определить максимальное число знаков перед запятой (число знаков после запятой у данных одинаково), и перед данными с таким числом знаков перед запятой поставить один пробел, перед данными с числом знаков перед запятой на один меньше поставить два пробела, и т.д. В начале строк так же поставить необходимое число пробелов перед числами.
Таким образом, программа преобразует исходный .dat файл, делая ровненькую табличку данных, используя пробелы.

Пример:

Было:

Код


1,111    2,222    33,333    444,444
55,555    6,666    777,777    -8,888
999,999    1,111    -22,222    3,333



Стало:

Код


   1,111   2,222  33,333 444,444
  55,555   6,666 777,777  -8,888
 999,999   1,111 -22,222   3,333


Автор: zim22 18.4.2009, 20:10
если число 0 в таблице - оно будет в формате 0,000?
количество чисел в каждой строке 4 или любое?

Автор: JENNIE 18.4.2009, 21:12
Да, ноль будет именно так выглядеть.
Количество чисел в каждой строке одинаково. В моем конкретном случае - 18.

Пример файла: 

Автор: Dov 19.4.2009, 22:11
что-нить такое, например:
Код
int main()
{
    ofstream outData;
    ifstream inData;
    char     buf[16];
    int      count   = 0;
    int      max_len = 0;
    int      len;

    inData.open("data.dat");

    while(inData >> buf) 
        if((len = strlen(buf)) > max_len)
            max_len = len;

    inData.clear();    
    inData.seekg(0, ios::beg);
    outData.open("outdata.dat");

    while(inData >> buf) 
        outData << setw(max_len) << buf << (++count % 18 ? ' ' : '\n');    

    inData.close();
    outData.close();

    return 0;
}


Автор: JENNIE 24.4.2009, 12:04
Большое спасибо!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)