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

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

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

Разбитие программы на модули. - C++

13.12.2011, 20:28. Просмотров 329. Ответов 0
Метки нет (Все метки)

Вообщем попытки разбития программы к успеху не привели. Помогите кому не сложно.
Основной модуль:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
#include "OutMainMenu.cpp"
#include "OutMenu.cpp"
#include "SaveListLaptopInFile.cpp"
#include "OutList.cpp"
#include "Exit.cpp"
int OutMainMenu();
int OutMenu();
int Exit();
void OutList(laptop *Array,int Size);
void SaveListLaptopInFile(char *Name,laptop *Array,int Size);
 
int main()
{
    setlocale(LC_ALL, "");
 
    laptop *List = NULL;
    int SizeList;   //переменная для хранения количества элементов в массиве
    char Agreement, //переменная для проверки согласия пользователя
         NameOfFile[10];
    FILE *InFile = fopen("in.txt","r");//указатель на файл,открытый только для чтения
Menu://точка возврата
    switch(OutMainMenu())
    {
    case 1:
        {
            system("cls");
            cout << "Сколько записей добавить: ";
            cin >> SizeList;
            List = InListLaptop_Handle(SizeList);
            goto Menu;
            break;
        }
    case 2:
        {
            system("cls");
            fscanf(InFile,"%d",&SizeList);
            cout << "Введите название файла: ";
            cin >> NameOfFile;
            List = InListLaptop_File(NameOfFile);
            fclose(InFile);
            goto Menu;
            break;
        }
    case 3:
        {
            system("cls");
            if(List)//если список не пустой
            {
                cout << "=========================" << endl;
                cout << "Cписок:" << endl;
                OutList(List,SizeList);
                List = DeleteElListLaptop(List,SizeList);
                SizeList--;
                if(List)
                {
                    cout << "=========================" << endl;
                    cout << "Отредактированный список:" << endl;
                    cout << "=========================" << endl;
                    OutList(List,SizeList);
                }
                getch();
                goto Menu;
                break;
            }
            else
            {
                system("cls");
                cout << "Список пуст!" << endl;
                getch();
                goto Menu;
                break;
            }
        }
    case 4:
        {
            if(List)
            {
                system("cls");
                switch(OutMenu())
                {
                case 1:
                    {
                        List = SortByManufac(List,SizeList);
                        system("cls");
                        break;
                    }
                case 2:
                    {
                        List = SortByDiagonal(List,SizeList);
                        system("cls");
                        break;
                    }
                case 3:
                    {
                        List = SortByPrice(List,SizeList);
                        system("cls");
                        break;
                    }
                case 4:
                    {
                        system("cls");
                        goto Menu;
                        break;
                    }
                }
                OutList(List,SizeList);
                getch();
                goto Menu;
                break;
            }
            else
            {
                system("cls");
                cout << "Список пуст!" << endl;
                getch();
                goto Menu;
                break;
            }
        }
    case 5:
        {
            system("cls");
            if(List&&SizeList)
            {
                cout << "=========================" << endl;
                cout << "Сохранить данные в файл?(y/n)" << endl;
                cout << "Выбор: ";
                cin >> Agreement;
                cout << "=========================" << endl;
                if(Agreement=='y')
                {
                    cout << "Введите название файла: ";
                    cin >> NameOfFile;
                    SaveListLaptopInFile(NameOfFile,List,SizeList);
                }
                Agreement = NULL;
            }
            else
                cout << "Список пуст!" << endl;
            getch();
            goto Menu;
            break;
        }
    case 6:
        {
            Exit();
            break;
        }
    default:
        {
            cout << "Нет такого пункта!" << endl;
            getch();
            system("cls");
            goto Menu;
        }
    }
    return 0;
}
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
 
struct laptop  //структура, обозначающая ноутбук
{
    char Manufacturer[20]; //производитель
    float Diagonal,Price;  //диагональ и цена
};
 
laptop *InListLaptop_Handle(int Size) //функция ручного ввода данных, возвращающая указатель на созданный массив, принимает размер массива
{
    laptop *Array;  //создаем указатель на массив типа laptop
    Array = new laptop[Size]; //создаем одномерный массив данных типа laptop
    for(int i=0; i<Size; i++) //для каждого элемента массива
    {
        cout << "=========================" << endl;
        cout << "Производитель: ";
        cin >> Array[i].Manufacturer;
        cout << "Диагональ монитора: ";
        cin >> Array[i].Diagonal;
        cout << "Цена: ";
        cin >> Array[i].Price;
    }
    return Array;
}
 
laptop *InListLaptop_File(char *Name)   //функция ввода данных из файла, возвращает указатель на создыннй массив, принимает название файла
{
    laptop *Array;
    int Size;
 
    FILE *in = fopen(Name,"r"); //создаем указатель на файл и открываем его для чтения
    fscanf(in,"%d",&Size);  //считываем первую переменную типа int, отвечающую за размер массива
    Array = new laptop[Size];
    for(int i=0; i<Size; i++)   //для каждого элемента считываем...
    {
        fscanf(in,"%s",&Array[i].Manufacturer); //...производителя
        fscanf(in,"%f",&Array[i].Diagonal); //...диагоняль
        fscanf(in,"%f",&Array[i].Price);    //...цену
    }
    fclose(in);
    return Array;
}
 
laptop *DeleteElListLaptop(laptop *Delete,int Size) //функция, удаляющая элементы массива,принимает указатель на массив, размер этого массива, возвращает указатель на массив
{
    if(Delete!=NULL&&Size-1!=NULL)  //если указатель не указывает на нуль и размер массива -1 не равен нулю
    {
        int NumbOfDel,              //номер удаляемого элемента
            NumbOfArray = 0,        //номер элемента в новом массиве
            NumbOfDelete = 0;       //номер элемента в удаляемом массиве
        laptop *Array;
        Array = new laptop[Size-1];
 
        cout << "Какой элемент списка удалить: ";
        cin >> NumbOfDel;
        NumbOfDel--;
        for(int i=0; i<Size; i++)
        {
            if(i!=NumbOfDel) //если номер элемнта не равен номеру удаляемого элемента...
            {
                strcpy(Array[NumbOfArray].Manufacturer,Delete[NumbOfDelete].Manufacturer);  //копируем название производителя в новый массив
                Array[NumbOfArray].Diagonal = Delete[NumbOfDelete].Diagonal;                //присваиваем значение диагонали
                Array[NumbOfArray].Price = Delete[NumbOfDelete].Price;                      //присваиваем значение цены
                NumbOfArray++;              //увеличиваем номер элемента в новом массиве
                NumbOfDelete++;             //в старом массиве
            }
            else
                NumbOfDelete++;
        }
        delete []Delete;
        return Array;
    }
    else 
    {
        if(!(Size-1))   //если в списке остался один элемент
        {
            char Agreement;
            cout << "=========================" << endl;
            cout << "Удалить список?(y/n)" << endl;
            cout << "Выбор: ";
            cin >> Agreement;
            if(Agreement=='y')
                delete []Delete;    //удаляем список
            cout << "Список удален!" << endl;
            cout << "=========================" << endl;
            getch();
            return NULL;
        }
        else
        {
            cout << "Список пуст!" << endl;
            getch();
            return NULL;
        }
    }
}
 
laptop *SortByManufac(laptop *Sort,int Size) //функция сортировки по производителю,принимает указатель на редактируемый массив и его размер, возвращает указатель на отредактированный массив
{
    char sort[20];  //временная
    for(int i=0; i<Size; i++)   //обходим массив элементов
    {
        if(i+1!=Size) //проверка на уход за область отведенной памяти
            if(Sort[i].Manufacturer[0]>Sort[i+1].Manufacturer[0])
            {
                strcpy(sort,Sort[i].Manufacturer);
                strcpy(Sort[i].Manufacturer,Sort[i+1].Manufacturer);
                strcpy(Sort[i+1].Manufacturer,sort);
            }
    }
    return Sort;
}
 
laptop *SortByDiagonal(laptop *Sort,int Size) //сортировка методом пузырька
{
    int sort;
    for(int i=0; i<Size; i++)
    {
        if(i+1!=Size)
            if(Sort[i].Diagonal>Sort[i+1].Diagonal)
            {
                sort = Sort[i].Diagonal;
                Sort[i].Diagonal = Sort[i+1].Diagonal;
                Sort[i+1].Diagonal = sort;
            }
    }
    return Sort;
}
 
laptop *SortByPrice(laptop *Sort,int Size) //сортировка методом пузырька
{
    int sort;
    for(int i=0; i<Size; i++)
    {
        if(i+1!=Size)
            if(Sort[i].Price>Sort[i+1].Price)
            {
                sort = Sort[i].Price;
                Sort[i].Price = Sort[i+1].Price;
                Sort[i+1].Price = sort;
            }
    }
    return Sort;
}
 
int OutMainMenu() //функция, показывающая меню и возвращающая выбор
{
    int Choose;
    system("cls");
    cout << "=============Меню=============" << endl
         << "1.Ввод данных с клавиатуры." << endl
         << "2.Чтение данных из файла." << endl
         << "3.Редактирование данных." << endl
         << "4.Вывод данных на экран." << endl
         << "5.Сохранить данные в файл." << endl
         << "6.Выход." << endl;
    cout << "Ваш выбор: ";
    cin >> Choose;
    return Choose;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
 
int OutMenu() //функция, показывающая меню и возвращающая выбор
{
    int Choose;
    system("cls");
    cout << "=============Меню=============" << endl
         << "1.Отсортировать по производителю." << endl
         << "2.Отсортировать по диагонали монитора. " << endl
         << "3.Отсортировать по цене." << endl
         << "4.Вернуться в главное меню." << endl;
    cout << "Ваш выбор: ";
    cin >> Choose;
    return Choose;
}
C++
1
2
3
4
5
6
7
8
9
10
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
 
int Exit()//функция выхода
{
    return 0;
}
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
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
int OutMainMenu();
int OutMenu();
int Exit();
 
void OutList(laptop *Array, int Size)
{
    for(int i=0; i<Size; i++)
    {
        cout << "=========================" << endl;
        cout << i+1 << "Производитель:" << Array[i].Manufacturer << endl;
        cout << "  Диагональ монитора:" << Array[i].Diagonal << endl;
        cout << "  Цена:" << Array[i].Price << endl;
        if(Array[i].Price<30000)
            cout << "  Класс:Бюджетный" << endl;
        else
        {
            if(Array[i].Price>60000)
                cout << "  Класс:Премиум" << endl;
            else 
                cout << "  Класс:Бизнесс-класс" << endl;
        }
    }
    cout << "=========================" << endl;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
void SaveListLaptopInFile(char *Name, laptop *Array, int Size)
{
    FILE *out = fopen(Name,"w");
    for(int i=0; i<Size; i++)
    {
        fprintf(out,"%s\n",Array[i].Manufacturer);
        fprintf(out,"%f\n",Array[i].Diagonal);
        fprintf(out,"%f\n",Array[i].Price);
    }
    fclose(out);
}
Лог с компилятора:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1>  SaveListLaptopInFile.cpp
1>\lab8\savelistlaptopinfile.cpp(6): error C2061: синтаксическая ошибка: идентификатор "laptop"
1>\lab8\savelistlaptopinfile.cpp(9): error C2065: Size: необъявленный идентификатор
1>\lab8\savelistlaptopinfile.cpp(11): error C2065: Array: необъявленный идентификатор
1>\lab8\savelistlaptopinfile.cpp(11): error C2228: выражение слева от ".Manufacturer" должно представлять класс, структуру или объединение
1>\lab8\savelistlaptopinfile.cpp(12): error C2065: Array: необъявленный идентификатор
1>\lab8\savelistlaptopinfile.cpp(12): error C2228: выражение слева от ".Diagonal" должно представлять класс, структуру или объединение
1>\lab8\savelistlaptopinfile.cpp(13): error C2065: Array: необъявленный идентификатор
1>\lab8\savelistlaptopinfile.cpp(13): error C2228: выражение слева от ".Price" должно представлять класс, структуру или объединение
1>  OutList.cpp
1>\lab8\outlist.cpp(10): error C2065: laptop: необъявленный идентификатор
1>\lab8\outlist.cpp(10): error C2065: Array: необъявленный идентификатор
1>\lab8\outlist.cpp(10): error C2062: тип "int" не требуется
1>\lab8\outlist.cpp(11): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>\lab8\outlist.cpp(11): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
Помогите кто чем может. Можно даже советом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2011, 20:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разбитие программы на модули. (C++):

Разбитие программы на файлы - C++
Здравствуйте. Подскажите пожалуйста как разбить консольное приложение на два и более файла? Я хочу чтоб у меня был центральный файл...

модули программы - C++
Всем привет помогите пожалуйста с этим плиз заранее спасибо

Модули программы - C++
Привет! Недавно начал изучать си++, и у меня возник такой вопрос: как разместить класс или функцию в отдельном модуле.

Разбиение программы на модули! - C++
Есть большая программа #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class mes // AbstractProductA { public: ...

Ошибка при разбиении программы на файлы(модули) - C++
Исходный код: #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;fstream&gt; #include &lt;conio.h&gt; using namespace std; struct...

Решаем программы, пишем собственные модули и функции - C++
Решаем программы, пишем собственные модули и функции. Давайте в этой теме будем писать совместно программы и их отлаживать. ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2011, 20:28
Привет! Вот еще темы с ответами:

Разбитие на фунции - C++
Нужна помощь, разбить каждое подписанное действие на функции #include &lt;iostream&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; using...

Разбитие на заголовочные файлы - C++
Здравствуйте! Имеется вот такая програмка : #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; ...

Разбитие числа на цифры - C++
Нужно дабы пользователь вводил 5значное число, а &quot;программа&quot; это число делила на цифры. Наиболее простой принцип решения данной задачи для...

Разбитие на заголовочные файлы - C++
Здравствуйте! Имеется вот такая програмка : #include&lt;iostream&gt; #include&lt;windows.h&gt; #include&lt;string.h&gt; #include&lt;stdio.h&gt; using...


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

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

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