Keeper
1

програмный код

12.07.2012, 14:18. Показов 654. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите плиз разобраться.Написали прогу, немогу понять как она работает.Конкретно нужны красные участки, если можно поподробнее)
1) Add/Dell:
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
//add/dell.h
//интерфейс модуля add/del
#ifndef add/dell_h 
#define add/dell_h
#endif
//add/dell.cpp
//реализация модуля «add/del»
 int readmsg(char*s){
 puts(stdout,s);
 gets(stdin,s1);
 int i=0;
 while(s1[i]){
 if(s1[i]=='|') s1[i]=' '; ++i; };
 return i;}
 int readtot(char*s,int n){
 puts(stdout,"total:");
 n2s(n,s1);
 puts(stdout,s1);
 return readmsg(s); }//Флаг о том что что-то было изменено
 int changed;
 char*sn[6];
 void do_new0(){ int l,n;
 l=readmsg("Наименование: ");   
 if(l==0) return;
 sn[0]=new_str(s1);
 do{ n=readmsg("Количество (D): ");   
 if(n==0) return;
 }while(checknum(s1,n));   
 sn[1]=new_str(s1); l+=n;
 do{ n=readmsg("Стоимость (D.dd): ");    
 if(n==0) return;
 }while(checkfix(s1,n));       
 sn[2]=new_str(s1); l+=n;
 do{ n=readmsgДатасоздания (dd.mm.yyyy): ");
 if(n==0) return;
 }while(checkdat(s1,n));   
 sn[3]=new_str(s1); l+=n;
 do{ n=readmsg("Дата покупки (dd.mm.yyyy): ");
 if(n==0) return;
 }while(checkdat(s1,n));     
 sn[4]=new_str(s1); l+=n;
readmsg("Примечание: ");     
sn[5]=new_str(s1); l+=n;
char*s=(char*)new_mem(l+5+1);
ladd(lst,s); changed=1;
for(n=0;n<6;++n){ 
s=scopy(sn[n],s);
if(n!=5) *s++='|'; }}
void do_new(){
do_new0(); 
for(int n=0;n<6;++n){
free_mem(sn[n]);
sn[n]=0; }}
void do_del(){ int n;
do{ if(readmsg("Номер записи  ")==0) return; }
while(s2n(s1,&n)||n==0||n>lst->count);
ldel(lst,n-1); changed=1; } 
int scmp(char*s,char*d,int l){
while(l>0){
if(*s<*d) return -1;
if(*s>*d) return 1; ++s; ++d; --l; };
return 0; }
 
int cmp_num(char*s,char*d,int l){       
int n=slen(d);
if(l>n) return 0;
if(l==n&&scmp(s,d,l)>0) return 0;
return 1; }
 
int cmp_fix(char*s,char*d,int l){       
int n=slen(d); 
if(l<n) return 0;
if(l==n&&scmp(s,d,l)<0) return 0;
return 1; }
 
int cmp_dat(char*s,char*d,int l){       
l=scmp(s+6,d+6,4); if(l>0) return 0; 
if(l==0){
l=scmp(s+3,d+3,2); if(l>0) return 0;
if(l==0){
l=scmp(s+0,d+0,2);
if(l>0) return 0; }};
return 1; }
Модуль поиска элемента по требуемым критериям

2) Search:
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
//search.h
//интерфейс модуля search
#ifndef search_h 
#define search_h
#endif
//search.cpp
//реализация модуля «search»
 
void wrquery(tlist*l){
int y=0;
for(;; ){
y=wrlist(l,y);
readtot("  1:Следующий экран * 2:Предыдущий экран *  0:Выход\n",l->count);
switch(s1[0]){
case  0:
case '0': return;
case '1': y+=23; break;
case '2': y-=23; break;
};
};
}
 
void query1(){ int n;
do{ n=readmsg("Количество <= ");
if(n==0) return; }
while(checknum(s1,n));
tlist*l=new_list();
int i=-1,k;
char*s;
while(++i<lst->count){
s=get((*lst->buf)[i],&k);
get(s,&k);
if(k>n) continue;
if(k==n&&scmp(s,s1,k)>0) continue;
ladd(l,(*lst->buf)[i]); };
if(cmp_num(s,s1,k)) ladd(l,(*lst->buf)[i]); };
wrquery(l);
l->count=0;
lfree(l); }
 
void query2(){
int n;
do{ n=readmsg("Стоимость >= "); 
if(n==0) return; }
while(checkfix(s1,n));
tlist*l=new_list();
int i=-1,k; 
char*s;
while(++i<lst->count){
s=get((*lst->buf)[i],&k);
s=get(s,&k);
get(s,&k);
if(k<n) continue;
if(k==n&&scmp(s,s1,k)<0) continue;
ladd(l,(*lst->buf)[i]); };
if(cmp_fix(s,s1,k)) ladd(l,(*lst->buf)[i]); };
wrquery(l);
l->count=0;
lfree(l); }
 
void query3(){ 
int n;
do{ n=readmsg("Дата создания <= "); 
if(n==0) return; }
while(checkdat(s1,n));
tlist*l=new_list();
int i=-1,k;
char*s;
while(++i<lst->count){
s=get((*lst->buf)[i],&k);
s=get(s,&k);
s=get(s,&k); 
get(s,&k);
k=scmp(s+6,s1+6,4);
if(k>0) continue;
if(k==0){
k=scmp(s+3,s1+3,2);
if(k>0) continue;
if(k==0){
k=scmp(s+0,s1+0,2);
if(k>0) continue; }};
ladd(l,(*lst->buf)[i]); };
if(cmp_dat(s,s1,k)) ladd(l,(*lst->buf)[i]); };
wrquery(l);
l->count=0;
lfree(l); }
 
void query4(){
int n1,n2,n3;
do{ n1=readmsg("Љ®«ЁзҐбвў® <= "); 
if(n1==0) break;}
while(checknum(s1,n1));
sn[0]=new_str(s1);
do{ n2=readmsg("‘в®Ё¬®бвм  >= ");  
if(n2==0) break;}
while(checkfix(s1,n2)); 
sn[1]=new_str(s1);
do{ n3=readmsg("„ в  б®§¤ *Ёп <= "); 
if(n3==0) break;}
while(checkdat(s1,n3));
sn[2]=new_str(s1);
tlist*l=new_list();
int i=-1,k;
            char*s,*ss;
while(++i<lst->count){
s=get((*lst->buf)[i],&k);
ss=get(s,&k);
if(n1&&!cmp_num(s,sn[0],k)) continue;
s=ss;
ss=get(s,&k);
if(n2&&!cmp_fix(s,sn[1],k)) continue;
s=ss;
get(s,&k);
if(n3&&!cmp_dat(s,sn[2],k)) continue;
ladd(l,(*lst->buf)[i]); };
wrquery(l);
l->count=0;
lfree(l);
free_sn(); }
void do_query(){
readmsg("1:Самые редкие2:Самые дорогие 3:Самые древние 4:Сложный фильтр  0:Выход");
switch(s1[0]){
case '1': query1(); break;
case '2': query2(); break;
case '3': query3(); break;
case '4': query4(); break;
};
}
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2012, 14:18
Ответы с готовыми решениями:

Подредактировать програмный код
У меня такое задание, программа покадрогвого просмотра файлов. Ну тоесть как я понял, посимвольного...

Составить програмный код
Нужно составить програмный код

Вставка поиска в програмный код
#include &lt;iostream.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include...

Напишите пожалуйста програмный код)
Здраствуйте! Помогите пожалуйста бедной)С++ 1)Написать программу используя функциюкоторая...

1
Делаю внезапно и красиво
Эксперт С++
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
12.07.2012, 15:17 2
У тебя там не хватает скобочек и кавычек.
А вообще, слова "скачали" и "написали" это не синонимы.

Добавлено через 1 минуту

Не по теме:

Таким "писунам" нужно обфускаторами подрабатывать...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2012, 15:17
Помогаю со студенческими работами здесь

блок-схема алгоритма и програмный код функции
Прошу помочь с данным заданием. Напишите блок-схему алгоритма и програмный код функции с...

нужно написать програмный код для решения задачи создания бинарного файла
:cry: Написать програмный код для решения задачи создания бинарного файла.

програмный поиск файла!
народ помогите пожалуйста)мне надо написать код чтобы можно было найти какой либо файл на...

Строки. Програмный калькулятор
Реализовать програмный калькулятор, запрашивающий у пользователя в виде строки символов выражение,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru