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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чересстрочное слияние 
:(
    Опции темы
pdiman58
  Дата 1.10.2009, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

Вот попытался сделать первую процедуру, которая сливает информацию из двух файлов один
Подскажите пожалуйста, все ли здесь праивльно
Код

class gaz{
public:
void WriteFile()
{
        FILE *fi_1,*fi_2,*fo;
         clrscr();
         if ((fi_1=fopen("D:\\file_1.txt", "r"))==0){
          cout << "Error open input file!!!" ;
          return;}
         if ((fi_2=fopen("D:\\file_2.txt", "r"))==0){
          cout << "Error open input file!!!" ;
          return;}
         if ((fo=fopen("D:\\out.dat","w+b"))==0){
          cout << "Error open output file!!!";
          return;}
          int v=m*2;
        slifile = new char*[m+1];
        for(int i=0; i<m+1; i++){
                slifile[i] = new char[m+1];
        }
        int i, max, j, l;
        cout << "w\n";
        for (int i = 1; i <(n1+1); i++) {
          cout<<mass1[i];
          cout<<"\n";}
        for (int j = 1; j < (n2+1); j++){
         cout<<mass2[j];
         cout<<"\n";
                }
        cout << "ssdfrt";
        int cnt1 = n1;
        int cnt2 = n2;
        cout << endl << cnt1 << endl;
        cout << cnt2 << endl;
        stroka cnt;
        max = (cnt1 > cnt2) ? cnt1 : cnt2;
        slifile = new char*[cnt1 + cnt2];
        cout << "sdfwerewr\n";
        itoa(max*2,cnt,10);
        strcpy(slifile[0], cnt);
        cout << "\n max=" << max << "\n";
        if (cnt1 == cnt2) {
                cout << "* Fails odinakovoy dlini\n\n";
                for (int i = max, j = 1; i > 0; i--, j += 2) {
                        if (i % 2 == 0) {
                        } else {
             strcpy(slifile[j],mass1[i]);
             strcpy(slifile[j+1],mass2[i]);
                        }
                }
        } else {
                if (cnt1 < cnt2) {
                        cout << "* fi_1 < fi_2\n\n";
         int i,l,j;
                        for (i = max,l = 1, j = 1; i > 0; i--, l++, j += 2) {
                                cout << "d1";
                                if (l > cnt2) {
                                        strcpy(slifile[j], EMPTY_STR);
                                        cout << "d2";
                                } else {
                 strcpy(slifile[j],mass1[i]);
                                        cout<<"d3";
                                }
            cout<<"d4";
                                strcpy(slifile[j + 1], mass1[i]);
                                cout<<"";
                        }
                } else {
                        cout << "* fi_1 > fi_2\n\n";
                        for (int i = max ,l = 1,j = 1; i > 0; i--, l++, j += 2) {
            strcpy(slifile[j],mass2[i]);
                                if (l > cnt1)
                                        strcpy(slifile[j + 1], EMPTY_STR);
                                else
              strcpy(slifile[j+1],mass1[l]);
                        }
                }
        }
        fclose(fi_1);
        fclose(fi_2);
        fclose(fo);
        return;
}

PM MAIL   Вверх
zim22
Дата 1.10.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(pdiman58 @  1.10.2009,  12:32 Найти цитируемый пост)
Подскажите пожалуйста, все ли здесь праивльно

а сам не можешь проверить? напиши юнит-тесты smile


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


Кодофей
****


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

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



Цитата(zim22 @  1.10.2009,  15:17 Найти цитируемый пост)
напиши юнит-тесты

 smile 

Проще еще такую-же кучку кода написать smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
GoldFinch
Дата 1.10.2009, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



лучше выкинуть код, и переписать его по-новой
например как-то так
Код

using namespace std;
ifstream src1("file1");
ifstream src2("file2");
ofstream dst("dstfile");
while( src1 && src2 )
{
   string ln1; getline(src1,ln1);
   string ln2; getline(src2,ln2);
   dst<<ln1<<'\n'<<ln2<<'\n';
}
if( src1 )
   dst<<src1.rdbuf();
if( src2 )
   dst<<src2.rdbuf();

PM MAIL ICQ   Вверх
xvr
Дата 2.10.2009, 10:25 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(pdiman58 @ 1.10.2009,  12:32)
Появилось вот такое задание по C++:
Написать программу на языке C++ чересстрочного слияния 

Вот попытался сделать первую процедуру, которая сливает информацию из двух файлов один
Подскажите пожалуйста, все ли здесь праивльно

В 'первой' (и весьма буйной) процедуре не замечено НИ ОДНОЙ функции для чтения/записи файлов. Поэтому совершенно непонятно, каким образом она их читает и пишет (видимо телепатически)
Так же имеет место быть МАССА неописанных переменных (и даже неизвестный тип stroka)
Компилятору это не понравится  smile 
Так же имеется работа с неинициализированными указателями - это уже не понравится ОС  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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