2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 char hex
Сообщение11.10.2009, 11:58 


31/08/09
183
У меня это прога по ОСО ещё должна делать следующее
посчитать сколько вхождений в my.bin файле каждого 16-ти ричного числа. Что то туплю понять не могу не получается никак....

 Профиль  
                  
 
 Re: char hex
Сообщение11.10.2009, 12:11 
Заслуженный участник
Аватара пользователя


03/06/09
1497
Код:
unsigned short counter[65535] = {0};
while (read_16_bytes_to_x)
    counter[x]++;

 Профиль  
                  
 
 Re: char hex
Сообщение11.10.2009, 12:40 


31/08/09
183
короче вот моя прога
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
#include <windows.h>
#include <windowsx.h>
#include <string.h>
#include <iostream.h>

int main()
{
    DWORD dwSectorsPerClusters;
    DWORD dwBytesPerSectors;
    DWORD dwNumberOfFreeClusters;
    DWORD dwTotalNumberOfClusters;

    GetDiskFreeSpace("C:\\",&dwSectorsPerClusters,
    &dwBytesPerSectors,&dwNumberOfFreeClusters,
    &dwTotalNumberOfClusters);

    cout << "\ndwSectorsPerClusters=" << dwSectorsPerClusters <<"\n";
    cout << "dwBytesPerSectors=" << dwBytesPerSectors <<"\n";
    cout << "dwNumberOfFreeClusters=" << dwNumberOfFreeClusters <<"\n";
    cout << "dwTotalNumberOfClusters=" << dwTotalNumberOfClusters <<"\n";

    CopyFile("layout.bin","copy.bin",true);
    cout << "\nFile layout.bin was copied as copy.bin check it out \nand press ENTER to delete it";
    getchar();
    DeleteFile("copy.bin");
    cout << "File copy.bin was deleted\n";

    unsigned short counter[65535] = {0};
    while (read_16_bytes_to_x)
    counter[x]++;

    cout << counter;

    //    DeleteFile("layout.bin");
    //cout << "File layout.bin was deleted\n";

 return 0;
}


 

не получается

 Профиль  
                  
 
 Re: char hex
Сообщение11.10.2009, 13:26 
Заслуженный участник
Аватара пользователя


03/06/09
1497
mycoding
Вообще-то read_16_bites_to_x -- это псевдокод был, типа читаем в переменную x два байта из файла. Я думал это очевидно.

 Профиль  
                  
 
 Re: char hex
Сообщение11.10.2009, 13:29 


31/08/09
183
а ты можешь пожалуйста модифицировать прогу или если не можешь , то ответ пожалуйста на вопрос.
Я понял так, надо в бинарной форме считать файл(но сделать это надо средствами Winapi), как это сделать?

 Профиль  
                  
 
 Re: char hex
Сообщение11.10.2009, 14:34 
Заслуженный участник


26/07/09
1559
Алматы
2mycoding
Читать файл по два байта можно примерно так (не проверял :) ):
Код:
unsigned short x;

HANDLE File=CreateFile
    (
        "my.bin",
        GENERIC_READ,
        0,
        NULL,
        OPEN_EXISTING,
        0,
        NULL
    );

while(ReadFile(File, &x, 2, NULL, NULL)) counter[x]++;

CloseHandle(File);


Кстати, что такое шестнадцатеричное число? Вот meduza предположил, что вам нужно на самом деле подсчитать частоты 16-ти битных (aka 2-х байтных) чисел. Уточните постановку задачи.

 Профиль  
                  
 
 Re: char hex
Сообщение11.10.2009, 15:14 
Заслуженный участник
Аватара пользователя


03/06/09
1497
Circiter в сообщении #250893 писал(а):
Кстати, что такое шестнадцатеричное число? Вот meduza предположил, что вам нужно на самом деле подсчитать частоты 16-ти битных (aka 2-х байтных) чисел. Уточните постановку задачи.

Ой, прочитал как "шестнадцатибитное". Но сути этого не меняет: также создается массив (только на 256 байт, а не на 65536), обнуляется и при считывании очередного байта из файла соответствующий элемент массива инкрементируется.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group