Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение кода программы... Есть прога которую надо изменить! 
V
    Опции темы
jhonyxakep
  Дата 11.4.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: 1
Всего: 8



Имеется код программы:
Код

#include <vector>    
#include <fstream>    
#include <string>    
#include <ios>    
int main()    
{    
  std::ifstream in("file_list.txt");    
  std::string line;    
  std::vector<std::string> file_name_vector;    
  while (getline(in, line)) {    
    file_name_vector.push_back(line);    
  }    
  std::ifstream cur_file;    
  std::ofstream output_file;    
  char buffer[100];    
  char hex_array[3];    
  for (std::vector<std::string>::iterator it = file_name_vector.begin();    
                                          it != file_name_vector.end();    
                                          ++it) {    
    cur_file.open((*it).c_str());    
    output_file.open((*it + "_hex").c_str(), std::ios::binary);    
    const int kBufferSize = 100;    
    while (cur_file.read(buffer, kBufferSize)) {    
       
      for (int i = 0; i < kBufferSize; ++i) {    
        itoa(buffer[i], hex_array, 16);    
        output_file << hex_array;    
      }    
    }    
    if (cur_file.gcount()) {    
      for (int i = 0; i < cur_file.gcount(); ++i) {    
        itoa(buffer[i], hex_array, 16);    
        output_file << hex_array;    
      }    
    }    
    output_file.clear();    
    output_file.close();    
    cur_file.clear();    
    cur_file.close();    
  }    
  return 0;    
}


которая берёт файл из файл листа, открывает как бинарный, и переводит его в HEX.

Нужно написать программу которая будет открывать уже сконвертированный файл, и переводить его обратно в BIN.
Программа должна также брать файл из файл листа, и сохранять его в той-же папке.

Кто поможет???
PM MAIL ICQ   Вверх
zim22
Дата 11.4.2009, 14:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Код

#include <vector>
#include <iostream>
#include <fstream>
#include <stdexcept>
#include <string>
#include <sstream>



template< typename T > char convertFromHex(const T &HexStr)
{
  std::istringstream ist(HexStr);
  int value;
  ist >> std::hex >> value;
  return value;
}
class HexFile {
public:  
  HexFile(const std::string &str) 
    : read_file(new std::ifstream(filename.c_str())), filename(str) {    
      if (!read_file->good()) {
      throw std::runtime_error("Error have occured when opening file");
    }
  }
  ~HexFile() { close(); }
  
  operator bool() { return read_file->good(); } 
  
  void convertToBinary(const std::string &str) { 
    write_file = new std::ofstream(str.c_str(), std::ios::binary);
    if (!write_file->good()) {
      throw std::runtime_error("Error have occured when creating file");
    }    
    char buffer[3] = {'\0'};        
    while (read_file->read(buffer, 2)) {    
    char byte = convertFromHex(buffer);
    write_file->write(&byte, 1);
    }

  }
private:
  std::string filename; 
  std::ifstream *read_file;
  std::ofstream *write_file;

  void close() { read_file->clear(); read_file->close(); delete read_file; 
                        write_file->clear(); write_file->close(); delete write_file; 
  }
};
int main()
try {
  std::ifstream in("file_list.txt");    
  std::string line;    
  std::vector<std::string> file_name_vector;    
  while (getline(in, line)) {    
    file_name_vector.push_back(line);    
  }    
     
  for (std::vector<std::string>::iterator it = file_name_vector.begin();    
                                          it != file_name_vector.end();    
                                          ++it) {   
    
      {
        HexFile f(*it);
        if (f) { 
          f.convertToBinary(*it + ".result");    
        }
      }  
  }
  return 0;
}
catch(const std::runtime_error& e) {
  std::cout << e.what() << std::endl;
}


Это сообщение отредактировал(а) zim22 - 11.4.2009, 16:14


--------------------
PM MAIL   Вверх
jhonyxakep
Дата 12.4.2009, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: 1
Всего: 8



zim22- тому кто написал первый код, написать второй не сложно! Пасиба!
PM MAIL ICQ   Вверх
zim22
Дата 12.4.2009, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(jhonyxakep @  12.4.2009,  09:47 Найти цитируемый пост)
тому кто написал первый код, написать второй не сложно

Вы не заметили, что это две абсолютно разные программы?
На будущее - пишите в Центр Помощи, если хотите чтобы за вас написали программу.
И пометьте тему "решённой" - если ответ получен.

Это сообщение отредактировал(а) zim22 - 12.4.2009, 10:37


--------------------
PM MAIL   Вверх
jhonyxakep
Дата 13.4.2009, 08:40 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: 1
Всего: 8



Sorry! Кстати, центр помощи это что-то типа корзина...
PM MAIL ICQ   Вверх
Anikmar
Дата 13.4.2009, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата(jhonyxakep @  13.4.2009,  08:40 Найти цитируемый пост)
Sorry! Кстати, центр помощи это что-то типа корзина... 

С чего вы взяли? Там реально помогают. Просто там больше народа, который помогает ради практики, да и материальная благодарность не запрещена  smile

http://forum.vingrad.ru/forum/Vingrad-help-center.html
PM MAIL ICQ   Вверх
NDQuattro
Дата 13.4.2009, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 18.7.2008
Где: Украина

Репутация: нет
Всего: нет



Цитата(Anikmar @  13.4.2009,  09:06 Найти цитируемый пост)
да и материальная благодарность не запрещена

верно, но где Вы такое встречали  smile 
PM MAIL   Вверх
Anikmar
Дата 13.4.2009, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



 smile 
Цитата(NDQuattro @  13.4.2009,  09:11 Найти цитируемый пост)
верно, но где Вы такое встречали    

Уж и помечтать нельзя  smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0883 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.