Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kristi1
10 / 10 / 1
Регистрация: 07.03.2010
Сообщений: 465
#1

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

26.04.2012, 13:52. Просмотров 386. Ответов 4
Метки нет (Все метки)

Доброе утро, для начала суть задания: Сформировать список 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 минуты
Никто не поможет?(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2012, 13:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменить файлы (C++):

можно ли изменить имена объектов cin и cout? залесть в хедер (знаю, этого лучше не делать), и изменить обявление обектов? к примеру на chitai и pishi? - C++
можно ли изменить имена объектов cin и cout? залесть в хедер (знаю, этого лучше не делать), и изменить обявление обектов? к примеру на...

Заголовочные файлы .h, файлы исходного когда c/c++ и установление связи между ними - C++
Всем добрый вечер!) Относительно недавно стал изучать c/c++, хочу полюбопытствовать ,так как появился вопрос. Почему при объявлении...

Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы? - C++
Приветствую всех! Столкнулся с тем, что решая задачи по книге Лафоре про графику, не смог добавить файлы .h и .cpp, скачав их с одной из...

Зачем нужно добавлять файлы в файлы исходного кода - C++
Зачем нужно добавлять файлы в файлы исходного кода (кроме main.cpp)? И как вызвать из main.cpp другой файл?

Заголовочные файлы и файлы cpp - C++
Со временем сложилось представление что при написании программ стоит разделять МЕТА данные и данные, но для лучшего понимания своих...

Раздельная компиляция: что помещать в заголовочные файлы, а что в файлы реализации (исходники)? - C++
Здравствуйте, я учусь пользоваться Visual Studio.Пишу программу, в которой создаются и разрушаются объекты, определенного пользователем...

4
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
26.04.2012, 14:03 #2
Поможет. Жди.
0
kristi1
10 / 10 / 1
Регистрация: 07.03.2010
Сообщений: 465
26.04.2012, 14:04  [ТС] #3
lazybiz, Хорошо, спасибо, буду ждать
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
26.04.2012, 14:44 #4
Не знаю правильно ли я тебя понял, но получился бред конечно полнейший...
0
Вложения
Тип файла: 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 минут
ну помогите кто-нибудь=((
0
26.04.2012, 16:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2012, 16:56
Привет! Вот еще темы с ответами:

нужно переделать код (из Файлы текстовые (FILE*) в Файлы текстовые (потоки)) - C++
вот задание для программы: 6. Задан текстовый файл input.txt. Требуется определить строки этого файла, содержащие максимальную по длине...

Файлы.Текстовые файлы - C++
Считая t текстовым файлом (файлом типа text), ответить на следующие вопросы: А)Кроме текстовых файлов,файлы какиъ еще типов могут...

Изменить атрибуты файлы - Delphi
Всем доброго времени суток. Помогите пожалуйста. Как сделать что бы перед началом чтения файла программа делала его не скрытым, изначально...

Скрыть файлы и изменить дату - Assembler
Помогите написать программу для скрытия всех файлов *.asm и изменения их даты!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru