Форум программистов, компьютерный форум CyberForum.ru

Изменить файлы - C++

Восстановить пароль Регистрация
 
kristi1
10 / 10 / 1
Регистрация: 07.03.2010
Сообщений: 465
26.04.2012, 13:52     Изменить файлы #1
Доброе утро, для начала суть задания: Сформировать список l, включив в него по одному разу элементы, которые входят в один из списков l1 или l2. Но не входят в другой.

У меня есть цельная программа, которая работает идеально, НО:

Мне надо программу разбить след. образом (она почти разбита)

Elem.h - в ней хранится сама структура
Form.h - ней хранятся библиотеки, которые относятся к структуре Elem
Functions.h - в ней структура с заголовками функций
Все остальное должно в шапке иметь только #include "Form.h" и все... помогите пожалуйста ибо запутанно все(
Вот код:

Elem.h
C
1
2
3
4
5
6
7
8
#include <iostream>
#include <fstream>
#include <string>
struct list
{
    int information;
    list *next;
};
Form.h
C
1
2
3
4
5
6
7
#include "Elem.h"
 
 
struct SForm
{
    list *lst, *n, *list0, *lst1, *lst2, name, *res;//сюда надо все из структуры и обращаться только сюда
};
Functions.h
C
1
2
3
4
5
6
7
8
9
10
11
#include "form.h"
 
struct fun
{
    static void add(list *lts, int n );
    static void print ( SForm &frm );
    static bool is_exist( list *lst, int n );
    static void fillListFromFile( std::string &name, SForm &frm);
    static void getResultList( SForm &frm );
    static void to_file( std::ofstream &out, SForm &frm );
};
add.cpp
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "functions.h"
 
void fun::add ( list *lts, int n )
{
    list *pointer;
    if ( !lts)
    {
        lts = ( struct list * ) malloc ( sizeof ( struct list ) );
        pointer = lts;
    }
    else
    {
        pointer = lts;
        while ( pointer -> next )
            pointer = pointer -> next;
        pointer -> next = new list;
        pointer = pointer -> next;
    }
    pointer -> information    = n;
    pointer -> next = 0;
}
bool.cpp
C
1
2
3
4
5
6
7
8
9
10
11
12
#include "functions.h"
 
bool fun::is_exist(list *lst, int n )
{
    list *lst0 = lst;
    while(lst0)
    {
        if ( lst0 -> information == n ) return 1;
        lst0 = lst0 -> next;
    }
    return 0;
}
fillListFromFile.cpp
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "functions.h"
 
void fun::fillListFromFile( std::string &name, SForm &frm )
{
    std::ifstream f( name, std::ios::in );
    std::string test;
    f >> test;
 
    if ( test == "" )
    {
        std::cout << "\tФайл " << name << " пуст" << std::endl;
        return;
    }
 
    f.seekg( 0, std::ios::beg );
    int number;
    while ( !f.eof() )
    {
        f >> number;
        fun::add(frm.lst1, number ); /// frm-> ??? в какой список???
    }
    f.close();
}
getResultList.cpp
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "functions.h"
 
void fun::getResultList(SForm &frm )
{
    list *list1 = frm.lst1, *list2 = frm.lst2;
    while ( list1 )
    {
        int inf = list1 -> information;
        if ( !fun::is_exist( frm.lst2, inf ) && !fun::is_exist( frm.res, inf ) )
            fun::add( frm.res, list1 -> information );
        list1 = list1 -> next;
    }
 
    while ( list2 )
    {
        int inf = list2 -> information;
        if ( !fun::is_exist( frm.lst1, inf ) && !fun::is_exist( frm.res, inf ) )
            fun::add( frm.res, list2 -> information );
        list2 = list2 -> next;
    }
}
main.cpp
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "functions.h"
 
 
int main()
{
    setlocale ( LC_ALL, "Russian" );
    
    SForm frm={0};
 
    list *firstList = 0, *secondList = 0, *resultList = 0;
    std::string first( "first.txt" ), second( "second.txt" );
    std::ofstream result( "result.txt" );
 
    fun::fillListFromFile( first, frm );
    std::cout << "Первый список:   ";
    fun::print( frm ); 
    
    fun::fillListFromFile( second, frm );
    std::cout << "Второй список:   ";
    fun::print( frm );
 
    fun::getResultList( frm );
 
    std::cout << "Итоговый список: ";
    fun::print( frm );
    
    fun::to_file( result, frm );
 
    result.close();
 
    return 0;
}
print.cpp
C
1
2
3
4
5
6
7
8
9
10
11
12
#include "functions.h"
 
void fun::print ( SForm &frm )
{
    list *pointer = frm.list0;
    while ( pointer != 0 )
    {
        std::cout << pointer->information << " ";
        pointer = pointer->next;
    }
    std::cout << std::endl;
}
to_file.cpp
C
1
2
3
4
5
6
7
8
9
10
11
#include "Functions.h"
 
void fun::to_file( std::ofstream &out, SForm &lst )
{
    list *current = lst.lst;
    while ( current )
    {
        out << current->information << " ";
        current = current->next;
    }
}
В структуре Form, возможно, переменные не все лежат, проверьте пожалуйста, запутанно все так, я уже не могу, не получается ничего(

Добавлено через 7 часов 3 минуты
Никто не поможет?(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
26.04.2012, 14:03     Изменить файлы #2
Поможет. Жди.
kristi1
10 / 10 / 1
Регистрация: 07.03.2010
Сообщений: 465
26.04.2012, 14:04  [ТС]     Изменить файлы #3
lazybiz, Хорошо, спасибо, буду ждать
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
26.04.2012, 14:44     Изменить файлы #4
Не знаю правильно ли я тебя понял, но получился бред конечно полнейший...
Вложения
Тип файла: zip 1.zip (2.0 Кб, 3 просмотров)
kristi1
10 / 10 / 1
Регистрация: 07.03.2010
Сообщений: 465
26.04.2012, 16:56  [ТС]     Изменить файлы #5
lazybiz, А сами функции? ну, add и прочие? они обращаться же должны

Добавлено через 6 минут
Вы не совсем так поняли, надо, чтобы функции программы были тоже в отдельных файлах, смотрите

Elem - там все хорошо

Форм - там только структура SForm

Структура Fun в файле Functions.h

а функции типа add, bool и тд и тп - они в отдельном файле в cpp вот картинка



Добавлено через 2 минуты
Помогите состряпать похожее пожалуйста, спасибо большое заранее=)

Добавлено через 33 минуты
и еще - каждый файл должен содержать не более 1 инклуда, ну за исключением elem который библиотеки показывает

Добавлено через 1 час 19 минут
ну помогите кто-нибудь=((
Yandex
Объявления
26.04.2012, 16:56     Изменить файлы
Ответ Создать тему
Опции темы

Текущее время: 13:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru