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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите переделать программу, Классы 
:(
    Опции темы
texcel
Дата 1.3.2009, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть программа которая переписывает ASCII коды из одного файла в другой. Нужно переделать ее так, чтобы она копировала текст из первого файла и сортировала слова по алфавиту в другой файл.

Вот само задание.
Реализуйте класс, содержащий следующие методы работы с текстовым файлом:
1. Все поля класса должны иметь тип доступа private.
2. Если метод вызывается извне, то его тип public, иначе – private.
3. Интерфейс  класса  разместите в заголовочном файле, а реализацию класса и главную функцию – в двух отдельных файлах.

1) Открыть файл с расширением  .txt
2) Создать новый файл с тем же именем и расширением  .dat
3) Записать в новый файл слова из старого файла в алфавитном порядке.
4) Закрыть оба файла.

Вот программа, которая есть:

Код
#include "my_class.h"

my_class::my_class(void)
{
}
int my_class::open_txt_file(char* filename){
    
    my_class::file_name= (char*)malloc(sizeof(filename));
    strcpy(my_class::file_name,filename);
    strcat(filename,".txt");    
    if((my_class::in = fopen(filename,"r"))==0){
        printf("Can't open file: %s!",filename);
    }
    return 0;
}
int my_class::create_dat_file(){
    strcat(my_class::file_name,".dat");    
    if((my_class::out = fopen(my_class::file_name,"w"))==0){
        printf("Can't open file: %s!",my_class::file_name);
    }
    return 0;
}
bool num_1(char s[8]){
    int n=0;
    for(int i=0; i<8;i++){
        if(s[i]=='1')n++;
    }
    if(n>=3) 
        return true; 
    else 
        return false;
}
int my_class::do_ASCII(){
    FILE* f= my_class::in;
    FILE* f1= my_class::out;
    char* b= my_class::buf;
    fseek(f,0,SEEK_END);
    my_class::n= ftell(f);
    fseek(f,0,0);
    b= (char*)malloc(n);
    fread(b,n,1,f);
    char temp[8]={0};
    for(int i=0;i<n;i++){
        if(b[i]>0){
            itoa((int)b[i],temp,2);
            if(num_1(temp))
            fwrite(&b[i],1,1,f1);
        }
    }

    return 0;

}
int my_class::close_all(){
    fclose(my_class::in);
    fclose(my_class::out);

    return 0;
}


Код
#include "my_class.h"
int main(){
    char s1[255];
    my_class s;
    printf("Type file name: ");
    scanf("%s",s1);
    s.open_txt_file(s1);
    s.create_dat_file();
    s.do_ASCII();
    s.close_all();
    return 0;
}



Модератор: пользуйся кнопкой "Код"

Это сообщение отредактировал(а) bsa - 2.3.2009, 12:28
PM MAIL   Вверх
bsa
Дата 2.3.2009, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Во-первых, ты пропустил объявление класса.
Во-вторых, какими средствами можно пользоваться для создания программы? Например, вся необходимая тебе функциональность может быть реализована так:
Код
#include <fstream> //ifstream, ofstream
#include <vector> //vector
#include <string>  //string
#include <algorithm>  //copy, sort, back_inserter
#include <iterator> //istream_iterator, ostream_iterator
#include <iostream> //cout, cin

using namespace std;

int main()
{
   string filename;
   cout << "Input file name: " << flush;
   cin >> filename;

   ifstream src( (filename + ".txt").c_str() ); //открываем файл <filename>.txt на чтение
   ofstream dst( (filename + ".dat").c_str() );  //открываем/создаем файлы <filename>.dat для записи

   vector<string> words;  //создаем пустой массив слов

   copy(istream_iterator<string>(src), istream_iterator<string>(), back_inserter(words)); //копируем все слова из файла в массив
   sort(words.begin(), words.end());  //сортируем массив по алфавиту
   copy(words.begin(), words.end(), ostream_iterator<string>(dst, "\n") ); //копируем все слова из массива в файл

   return 0; //успешно завершаем работу (после этой строчки файлы будут автоматически закрыты деструкторами)
}


Это сообщение отредактировал(а) bsa - 2.3.2009, 12:45
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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