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

програмный код - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Получить количество символов во веденной строке http://www.cyberforum.ru/cpp-beginners/thread622796.html
Решил попробовать со строками поработать, сразу же возникло несколько вопросов: 1) В C++ тип string не встроен? Нужно подключать библиотеку? 2) В чем различие char от string? 3) Как использовать функции: * strlen - получить кол-во символов в строке. Попытался получить кол-во символов в веденной строке, возникли проблемы: 1. Нельзя получить кол-во...
C++ сравнение элементов массивов разной длинны Есть 2 массива разной длинны - mass1, mass2. Мне нужно перемножить элементы массивов так: mass1 * mass2, mass1 * mass2, mass1 * mass2, mass1 * mass2 и т.д. Т.е. mass2 сдвигается на 1 вперед каждый раз когда элементы перемножаться. Написал код, но это бред како-то) int mass_full; int mass_sum; int mass_result; mass_sum=1; http://www.cyberforum.ru/cpp-beginners/thread622795.html
C++ Программа не работает(из-за применения шаблонов наверное)!)
Здравствуйте! Написал анализатор выражений из книги Шильдта "С и С++ архив программ", глава 13 "Объектно-ориентированный анализатор выражений",стр. 505 "обобщенный анализатор", а он не хочет работать!!! Когда я пишу описания функций в .h файле, все работает, когда же в .cpp сплошные LINK ошибки, но такая фигня происходит, только, когда я применяю шаблоны, без шаблонов все работает относительно...
C++ Умножение многочленов
дорогие форумчане!! помогите пожалуйста не могу написать программу умножения двух многочленов и их деления с остатком(( Заранее спасибо
C++ Возвращение адреса. Не много не до понял http://www.cyberforum.ru/cpp-beginners/thread622755.html
Задание: Напишите функцию, которая находит минимальное значение в массиве, таким образом, чтобы ее вызов можно было использовать слева от знака равенства: *MyMin(параметры) = 0; Я написал код: const int Size = 10; int* arr = new int; std::cout << "Заполняем массив случайными числами: "; for(int i=0;i<Size;i++){
C++ Исключительная ситуация это полностью рабочая прога списки студентов( добавление удаление вывод) как сделать чтобы когда я добавляю нового студента(когда пишу его фамилию цифрами) выдавалась ошибка, мол фамилия не может состоять из цифр #include<iostream> #include<fstream> #include<string.h> #define NMAX 20 using namespace std; struct Student подробнее

Показать сообщение отдельно
Keeper
Сообщений: n/a
12.07.2012, 14:18     програмный код
Помогите плиз разобраться.Написали прогу, немогу понять как она работает.Конкретно нужны красные участки, если можно поподробнее)
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;
};
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru