Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 12.08.2015
Сообщений: 8
1

Не работает программа товарооборота из методички

24.08.2015, 13:42. Показов 678. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Информация о продаже товаров подготовлена по следующему макету: номер магазина;
номер секции; номер чека; наименование товара; артикул товара; цена товара; количество то-
вара; дата продажи. Составить программу определения объема товарооборота по каждому ма-
газину, т.е. общую сумму, вырученную от продажи всех товаров в данном магазине (данные
содержат записи по нескольким магазинам). Разработать форму выходного документа.
Писала по методичке, но все равно выдает ошибки. Помогите пожалуйста разобраться и как правильно написать что бы высчитывало товарооборот по нескольким магазинам сразу?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2015, 13:42
Ответы с готовыми решениями:

Программа из методички про наследование - не работает код
В методичке приведён такой код в качестве примера к главе про Наследование. Задание там такое: ...

Программа из методички
Задали д/з. По типу программы из методички написать свою, по своему варианту. Я перепечатала...

Расчет минимального товарооборота
Расчет минимального товарооборота T, при котором торговое предприятие может закупать товары на...

Определить фактический прирост товарооборота
Помогите решить, пожалуйста)) 1. По плану на 2005 год намечалось увеличение товарооборота на 3%....

5
0 / 0 / 0
Регистрация: 12.08.2015
Сообщений: 8
24.08.2015, 13:42  [ТС] 2
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
#include <stdio>
#include <conio>
#include <math>
#include <stdlib>
#include <string>
//----------------------------------------------константы----------------------------------------------------------
const int N_ITEMS=8; // количество пунктов меню
const int L_PRODUCT=30; // длина названия товара
const int step=18; // количество строк на странице
const int N_SHOP=10; // номер магазина
const int N_SECT=10; //номер секции
//------------------------------------типы и глобальные переменные------------------------------------
struct prod { //структура для хранения данных о товаре
    char name[L_PRODUCT]; //название товара
    float article, price, number; //вес, цена и количество товара
    date d; //дата продажи товара
    float allprice; // общая сумма полученная от продажи всех товаров в магазине
 
};
struct elist{ //элемент 2- направленного списка
    prod data; //данные о товаре
    elist *left; //указатель на элемент слева
    elist *right; //указатель на элемент справа
};
unsigned int defaultmode, //текущий режим экрана
        activecolor, //цвет активного пункта меню
        inactivecolor; //цвет неактивного пункта меню
int key; //код клавиши
unsigned int item; //номер пункта меню
unsigned int prev; //номер предыдущего пункта меню
elist *beg,        //указатель на первый эл-т списка
      *fin,        //указатель на последний эл-т списка
      *p;          //указатель на текущий эл-т списка
char name[L_PRODUCT]; //название товара
prod product; //данные товара
//-----------------------------------------прототипы функций-------------------------------------------------
void add(elist* &beg,elist* &fin,prod product);     //добавление элемента в список
void error(char *message);                          //вывод сообщения ошибки
int readfile( elist* &beg, elist* &fin);            //ввод базы из файла
int showbase(elist *beg);                           //вывод базы на экран
void drawitem(unsigned int item, unsigned int color); //вывод пункта меню
void initmenu(unsigned int activecolor, unsigned int inactivecolor); //инициализация меню
void clear(void);                                   //очистка текстового окна
void stub(unsigned int item);                       //заглушка
void dlgwindow(void);                               //отображение окна диалога
void message(char *message);                        //вывод сообщения
prod query();                                       //запрос сведений о товаре
void edit(elist* beg, prod product);                //исправление записи о товаре
elist calc();                                       //поиск эл-та в списке по названию
void queryname(char *s);                            //запрос названия товара
void del(elist* &beg,elist* &fin,elist *p);         //удаление эл-та из списка
void info(prod product);                            //вывод сведений о товаре
void select(elist *beg);                            //определение обьема товарооборота
void queryprice(float &startprice, float &endprice);//ввод критериев отбора
//========================Главная функция============================
int main() {
defaultmode=LASTMODE; //запомнить текущий текстовый режим экрана
textmode(C80); //установить режим 80х25 цветной
 
beg=0; fin=0; //обнулить указатели на начало и конец списка
readfile(beg, fin); //ввести базу из файла в список
 
clrscr(); //очистить экран
activecolor=LIGHTGREEN; //цвет активного пункта меню - светло-зеленый
inactivecolor=GREEN; //цвет неактивного пункта меню - зеленый
initmenu(activecolor,inactivecolor); //инициализация меню
 
item=0; prev=0; //обнулить индексы тек. и пред. пунктов меню
 
/* ---- цикл выбора пункта меню ---- */
while (1) { /**1**/
    key=getch(); //ввести код нажатой клавиши
    if (key==0) key=getch(); //если введен расширенный код
    switch (key) { /**2**/ //проверить код нажатой клавиши
        /* ----выполнение пункта меню----*/
        case 13: // нажата Enter
            switch (item) { /**3**/ //проверка номера пункта меню
                case 0:showbase(beg); //вывод базы на экран
                        break;
                case 1 : //добавление записи в базу
                        product=query();
                        add(beg,fin, product);
                        break;
                case 2: //редактирование записи
                        product=query();
                        edit(beg, product);
                        break;
                case 3: //удаление записи
                        queryname(name);
                        p=find(beg,name);
                        if (p) del(beg,fin,p);
                        break;
                case 4: //поиск модели в базе
                        queryname(name);
                        p=find(beg,name);
                        if (p) info(p->data);
                        break;
                case 5: //выборка из базы по цене
                        select(beg);
                        item=5;
                        break;
                case 6:
                        queryname(name);
                        allprice=(price(beg)*price(fin))*(number(beg)*number(fin));
            default: // выход из программы
                        textmode(defaultmode);
                        exit(1);
        }; /**3**/
        break;
    /*----перемещение курсора влево----*/
    case 15: case 75: // нажаты Shift+Tab или Left
        prev=item;
        if (item==0)
            item=N_ITEMS-1;
        else item--;
        break;
    /*----перемещение курсора право----*/
    case 9: case 77: //нажаты Tab или Right
        prev=item;
        if (item==N_ITEMS-1)
            item=0;
        else item++;
        break;
    } /**2**/
clear();
drawitem(prev, inactivecolor); //вывод предыдущего пункта
drawitem(item, activecolor); //вывод выбранного пункта
} /**1**/
}
//-----------------------------------------Вывод пункта меню-------------------------------------------------
void drawitem(unsigned int item, unsigned int color) {
const d=12; // длина поля пункта меню
const char * items[N_ITEMS]= //названия пунктов
{"Просмотр","Добавить","Исправить","Удалить","Найти","Выбрать","Выход"};
const int pos[N_ITEMS]={1,d,2*d,3*d,4*d,5*d,6*d}; //позиции начала полей пунктов
window(1,1,80,2); //окно для отображения пунктов
textbackground(LIGHTGRAY); //цвет фона в окне светло-серый
textcolor(color); //цвет букв пункта
gotoxy(pos[item],1); //установить курсор в начало пункта
cprintf("%s",items[item]); //отобразить название пункта
}
//----------------------------------------Инициализация меню---------------------------------------------
void initmenu(unsigned int activecolor, unsigned int inactivecolor){
unsigned int item; //номер пункта меню
window(1,1,80,2); //окно из двух строк для вывода пунктов
textbackground(LIGHTGRAY); //цвет фона в окне светло-серый
clrscr();
/*----отобразить названия пунктов меню----*/
drawitem(0,activecolor); //активный цветом «Просмотр»
for (item=1;item<N_ITEMS;item++)
drawitem(item,inactivecolor); //все остальные неактивным
/* ----отобразить границу окна меню, подчеркнув его снизу----*/
gotoxy(1,2);
textcolor(inactivecolor);
cputs("________________________________________________________________");
gotoxy(1,1); //курсор на «Просмотр»
}
//---------------------------------------------Очистка рабочего окна ---------------------------------------
void clear() {
window(1,3,80,25);
textattr(WHITE);
clrscr();
}
// ----------------------------------------------------Заглушка---------------------------------------------------
void stub(unsigned int item) {
window(1,4,80,24);
textbackground(LIGHTGRAY);
textcolor(WHITE);
clrscr();
cprintf("Вызван пункт меню %d ",item);
getch();
}
//-------------------------------------------Вывод сообщения ошибки-------------------------------------
void error(char message[]) {
window(10,6,70,12);
textbackground(LIGHTGRAY);
textcolor(RED);
clrscr();
gotoxy(15,4);
cputs(message);
getch();
textmode(defaultmode);
}
//--------------------------------------- Отображение окна диалога-------------------------------------
void dlgwindow(){
window(10,6,70,12);
textattr(GREEN+LIGHTGRAY*16);
clrscr();
}
//------------------------------------------------Вывод сообщения------------------------------------------
void message(char message[]) {
dlgwindow();
gotoxy(20,4);
cputs(message);
getch();
}
//-----------------------------------Добавление элемента в конец списка-----------------------------
void add(elist* &beg,elist* &fin,tel telefon){
elist *p; //указатель на создаваемый элемент
p=new elist; //создание нового элемента
p->data=product; //заполнение его информационной части
p->right=0; //заполнение его указателей
p->left=fin;
if (!beg) beg=p; //если список был пустым
 else fin->right=p; //иначе привязка нового эл-та к последнему
fin=p; //обновление указателя на конец списка
}
//--------------------------------------------Ввод базы из файла---------------------------------------------
int readfile( elist* &beg, elist* &fin){
FILE *f;
tel telefon;
/*-----проверка открытия файла base.txt ----*/
f=fopen("c:\\bc5\\work\\base.txt","r");
if(!f) {
error("Файл base.txt не найден");
exit(1);
}
/*----чтение записей из файла----*/
while (!feof(f)) {
fgets(product.name,L_PRODUCT,f); //чтение названия модели
fscanf(f,"%f%f\n",&product.number,&product.price,&product.article); //чтение веса и цены
add(beg,fin, product); //добавление в список
}
fclose(f);
return 0;
}
//--------------------------------------------Вывод базы на экран------------------------------------------
int showbase(elist *beg) {
int i; //счетчик кол-ва строк
elist *p, //указатель на текущий элемент страницы
*pn; //указатель на 1 -ый эл-т страницы
int key; //код нажатой клавиши
elist * showpage(elist *p); //прототип функции вывода одной страницы
if (!beg) { //если список пустой,
 message("Список пустой"); //то вывести сообщение
 return -1;
 }
/*----задать параметры рабочего окна----*/
window(1,4,80,24);
textbackground(LIGHTGRAY);
textcolor(WHITE);
p=beg; //указатель установить в начало списка
while (1) { /**1**/
pn=p; //запомнить указатель первого эл-та страницы
/*---вывести страницу и получить новое значение указателя текущего элемента---*/
p=showpage(p);
/*----определить код нажатой клавиши----*/
key=getch();
if (key==0) key=getch(); //если расширенный код
/*----управление прокруткой-----*/
switch (key) { /**2**/
case 27: //нажата Esc
 return 0; //выход из просмотра
case 13: case 80: case 81: //если нажаты Enter||Down||PgDn
 if (!p) p=pn; //и список исчерпан, то
 break; //отображать ту же страницу
case 72: case 73: //если нажаты Up или PgUp,
 p=pn; //то указатель на начало стр.
 for(i=1;(i<=step)&&(p);i++)
 p=p->left; //сместить на step записей вверх
 if (!p) p=beg; //ограничение для 1 -ой записи
 break;
 } /**2**/
} /**1**/
}
//----------------------------------------Вывод одной страницы-------------------------------------------
elist* showpage(elist *p){
int i; //номер строки вывода
clrscr();
/*---вывести в первую строку окна заголовок таблицы----*/
gotoxy(1,1);
cprintf("Название Цена Артикул Количество");
/*---начиная со второй строки окна выводить элементы списка---*/
gotoxy(1,2);
i=2;
while (p) {
 cprintf("%-22.20s %5.2f %10.2f",p->data.name,p->data.price,p->data.article,p->data.number);
 p=p->right;
 i++;
 gotoxy(1,i);
 cprintf("Товарооборот")
 gotoxy(1,i+1);
 cprint("%-22.20s",p->data.allprice);
 /*----выйти из функции, если выведена одна страница----*/
 if (i>step) return p; //и вернуть указатель текущего эл-та списка
 }
return p; //выход при достижении конца списка
}
//-------------------------------------Запрос сведений о товаре---------------------------------------
prod query(){
char s[L_PRODUCT]; //название товара
prod product; //данные о товаре
int i; //индекс строки
int len; //длина строки с названием 
dlgwindow(); //отобразить окно диалога
/*---ввод названия товара---*/
do {
gotoxy(2,1);
cputs("Название?");
gotoxy(2,2); clreol();
cscanf("%s",s);
len=strlen(s);
for (i=len; i<L_PRODUCT-1; i++)
s[i]=' '; //дополнение строки пробелами
s[L_PRODUCT-1]='\0'; }
while (!len);
strcpy(product.name,s);
/*---ввод значения количество товара---*/
do {
gotoxy(2,3);
cputs("Количество?");
gotoxy(2,4); clreol();
cscanf("%s",s);
product.number=atof(s);}
while (!product.number);
/*---ввод значения цены товара---*/
do {
gotoxy(2,5);
cputs("Цена?");
gotoxy(2,6); clreol();
cscanf("%s",s);
product.price=atof(s); }
while (!product.price);
getch(); //очистка буфера ввода
/*---артикул---*/
do {
gotoxy(2,5);
cputs("Артикул?");
gotoxy(2,6); clreol();
cscanf("%s",s);
product.article=atof(s); }
while (!product.article);
getch(); //очистка буфера ввода
return product;
}
// ------------------------------ Исправление записи о товаре -------------------------------------
void edit(elist* beg, tel product) {
elist *p; //указатель на найденный эл-т
p=find(beg,product.name); //поиск товара
if (p) { //если модель найдена,
p->data.weight=product.number; //то изменить вес
p->data.price=product.price; // и изменить цену
 }
}
// ----------------------------------Поиск эл-та в списке (по названию модели)----------------------
elist * find(elist *p, char *s){
/*---цикл по элементам списка ----*/
while (p) {
if (strcmp(s,p->data.name)==0) //если модель найдена,
 return p; //то возвратить указатель
p=p->right; //переход к след. эл-ту списка
}
/*---если модель не найдена----*/
gotoxy(2,6);
message("Такого товара в списке нет");
p=0;
return p;
 }
 // ------------------------------------Запрос названия товара-----------------------------
void queryname(char *name){
 int i; //индекс строки
int len; //длина строки с названием модели
char s[L_PRODUCT]; //название товара
dlgwindow(); //отобразить окно диалога
/*---ввод названия модели---*/
do {
gotoxy(2,2);
cputs("Название?");
gotoxy(2,3); clreol();
cscanf("%s",s);
len=strlen(s);
for (i=len; i<L_PRODUCT-1; i++)
s[i]=' '; //дополнение строки пробелами
s[L_PRODUCT-1]='\0'; }
while (!len);
strcpy(name,s);
getch(); //очистка буфера ввода
}
 //-----------------------------------Удаление эл-та из списка-----------------------------------------------
void del(elist* &beg,elist* &fin,elist *p){
if ((p==beg)&&(p==fin)) //удаление единственного элемента
 { beg=0; fin=0;}
else
if (p==beg) //удаление из начала списка
{beg=beg->right; beg->left=0;}
 else
if (p==fin) //удаление с конца
{fin=fin->left; fin->right=0;}
else { //удаление из середины
 p->left->right=p->right; //связать предыдущий со следующим
 p->right->left=p->left; //связать следующий с предыдущим
 }
free(p); //освобождение памяти из под элемента
}
//-----------------------------------Вывод сведений о товаре------------------------------------------
void info(prod product){
dlgwindow(); //отобразить окно диалога
gotoxy(2,2); cprintf("Название %s",product.name);
gotoxy(2,4); cprintf("Количество %5.2f",product.number);
gotoxy(2,6); cprintf("Цена  %6.2f",product.price);
gotoxy(2,8); cprintf("Артикул %6.2f",product.article);
 
getch(); //ожидать нажатия любой клавиши
}
0
59 / 60 / 37
Регистрация: 24.07.2015
Сообщений: 224
24.08.2015, 13:55 3
Какие именно ошибки выдаёт? А то вкинул код в «Code::Blocks», так он мне с первой строки начал выдавать ошибки.
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
24.08.2015, 13:57 4
Цитата Сообщение от Allo4ka Посмотреть сообщение
C++
1
2
3
4
#include <stdio>
#include <conio>
#include <math>
#include <stdlib>
C++
1
2
3
4
#include <cstdio>
#include <conio.h>
#include <cmath>
#include <cstdlib>
0
0 / 0 / 0
Регистрация: 12.08.2015
Сообщений: 8
24.08.2015, 14:11  [ТС] 5
Вот какие.
И там еще куча подобных ошибок.
Миниатюры
Не работает программа товарооборота из методички  
0
59 / 60 / 37
Регистрация: 24.07.2015
Сообщений: 224
24.08.2015, 15:01 6
Насчёт первых трёх ошибок Kerry_Jr дал ответ, хотя у меня например

C++
1
2
3
4
5
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
а насчёт остальных, так в методичке должно быть описано, что такое LASTMODE и LIGHTGREEN и всё остальное. Одним словом — написан не весь код или подключены не все библиотеки.
0
24.08.2015, 15:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2015, 15:01
Помогаю со студенческими работами здесь

Задания из методички
Помогите сделать задания, я не могу потому что у меня нету такого как пишут в методичке. К...

Разработать систему учета товарооборота торга.
Нужно написать вот такую программы 1) Разработать систему учета товарооборота торга. Структура...

Факторный анализ изменения объема товарооборота
Добрый день, нужна помощь в задаче, вроде бы все просто, но чего-то недопонимаю. В общем даны 2...

Разработать систему учета товарооборота торга.
Структура записи: - номер магазина; - номер секции; - номер чека; - наименование товара; -...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru