Основная задача : Длина L >5 и <30, изменить регистр символов (aBcDeF->AbCdEf)
Не работает именно она, помогите найти в чем ошибка.
Фрагмент замены регистра в строке :
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
| void String::run()
{
unsigned int i = 0, j = 0;
char *ss;
ss = new char[MAX];
ss[0] = '\0';
if ((strlen(str) > 5) && (strlen(str) < 30))//30.Длина L >5 и <30, изменить регистр символов (aBcDeF->AbCdEf)
{
for (i = 0; strlen(str); i++)
{
if (str[i] >= 97)// алгоритм смены регистра if (str[i] >= 97) -32
{
ss[j] = str[i] - 32;
j++;
}
else
{
if (str[i] <= 97)// алгоритм смены регистра if (str[i] <= 97) +32
{
ss[j] = str[i] + 32;
j++;
};
}
ss[j] = '\0';
str[0] = '\0';
cout << "\nStroka REGISTR: " << ss[j];
}
//ss[j] = '\0';
//str[0] = '\0';
//cout << "\nStroka REGISTR: " << ss[j];
}
else
{
cout << "\nSTROKANESTROKA";
}
} |
|
Код программы:
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
| #include "stdafx.h"
#include <iostream>
#include <istream> //dlya cin.getline()
#include <string.h>
#include <conio.h>
#include <fstream>
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
const int MAX = 255;
using namespace std;
class String
{
private:
char *str;
char *strend;
public:
String();
void set();//metod vvoda ish. stroki
void print();//metod pechati
void run();//metod vipolneniya zadachi
void printend();//metod pechati strend
String& operator= (String&);
~String();
};
String::String()
{
str = new char[MAX];
str[0] = '\0';
strend = new char[MAX];
strend[0] = '\0';
//cout << "Constructor!";
}
String& String::operator= (String&ss)//s2=s1 peregruz '='
{
strcpy(strend, ss.str);
return *this;//default
}
String::~String()
{
delete[]str;
delete[]strend;
//cout << "Destructor!";
}
void String::run()
{
unsigned int i = 0, j = 0;
char *ss;
ss = new char[MAX];
ss[0] = '\0';
if ((strlen(str) > 5) && (strlen(str) < 30))//30.Длина L >5 и <30, изменить регистр символов (aBcDeF->AbCdEf)
{
for (i = 0; strlen(str); i++)
{
if (str[i] >= 97)// алгоритм смены регистра if (str[i] >= 97) -32
{
ss[j] = str[i] - 32;
j++;
}
else
{
if (str[i] <= 97)// алгоритм смены регистра if (str[i] <= 97) +32
{
ss[j] = str[i] + 32;
j++;
};
}
ss[j] = '\0';
str[0] = '\0';
cout << "\nStroka REGISTR: " << ss[j];
}
//ss[j] = '\0';
//str[0] = '\0';
//cout << "\nStroka REGISTR: " << ss[j];
}
else
{
cout << "\nSTROKANESTROKA";
}
}
void String::set()
{
cout << "Vvedite stroku: ";
char *stroka = new char[MAX];
stroka[0] = '\0';
cin.getline(stroka, MAX);// впринципе getline не нужен
for (unsigned int i = 0; i<strlen(stroka); i++)
{
str[i] = stroka[i];
}
str[strlen(stroka)] = '\0';
delete[]stroka;
}
void String::print()
{
ofstream file("file.txt", ios::app);
for (unsigned int i = 0; i<strlen(str); i++)
{
cout << str[i];
}
file << endl;
for (unsigned int i = 0; i<strlen(str); i++)
{
file << str[i];
}
}
void String::printend()
{
cout << "\nSkopirovannaya stroka: ";
for (unsigned int i = 0; i<strlen(strend); i++)
{
cout << strend[i];
}
}
void main(void)
{
ofstream file("file.txt", ios::out);
String s1, s2;
s1.set();
s1.print();
s1.run();
s1.print();
s2 = s1;
s2.printend();
cout << "\n" << endl;
String *s3, *s4;
s3 = new String; s4 = new String;
s3->set();
s3->print();
s3->run();
s3->print();
*s4 = *s3;
s4->printend();
cout << "\n" << endl;
system("PAUSE");
} |
|