-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathA30c-stringsmanipulation.cpp
108 lines (94 loc) · 2.44 KB
/
A30c-stringsmanipulation.cpp
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
// C-Strings Manipulation
// By Emily Dayanghirang
#include <iostream>
#include <cctype>
using namespace std;
// Function Prototypes
char* backwards(const char* cStr);
int vowels(char* cStr);
int consts(char* cStr);
void reverse(char* cStr);
// Global Variable
const int SIZE = 51;
int main()
{
char* backwardString = nullptr;
char cStr[SIZE];
// Prompt user
cout << "Enter a string containing no more than "
<< (SIZE-1) << " characters: ";
cin.getline(cStr, SIZE);
// Display string backwards
backwardString = backwards(cStr);
cout << "\nBackwards string w/o changes made to the original argument: " << backwardString << endl;
// Display number of vowels
int vowC = vowels(cStr);
cout << "Vowels: " << vowC << endl;
// Display number of consonants
int constC = consts(cStr);
cout << "Consonants: " << constC << endl;
// Reverse the original c-string argument and display it
reverse(cStr);
cout << "Reversed string with changes made to the original argument: " << cStr << endl;
delete [] backwardString;
return 0;
}
// String is returned backwards w/o making changes to the original arg
char* backwards(const char* cStr)
{
int length = strlen(cStr);
char* backwardString = new char[length];
char temp;
for(int i = 0, j = strlen(cStr)-1; i < j; i++,j--)
{
temp = *(cStr+i);
*(backwardString+i) = *(cStr+j);
*(backwardString+j) = temp;
}
return backwardString;
}
// Count vowels
int vowels(char* cStr)
{
int count = 0;
while(*cStr != '\0')
{
if (isalpha(*cStr))
{
char upCase = toupper(*cStr);
if (upCase == 'A' || upCase == 'E' || upCase == 'I' || upCase == 'O'
|| upCase == 'U')
count++;
}
cStr++;
}
return count;
}
// Count consonants
int consts(char* cStr)
{
int count = 0;
while(*cStr != '\0')
{
if (isalpha(*cStr))
{
char upCase = toupper(*cStr);
if (upCase != 'A' && upCase != 'E' && upCase != 'I' && upCase != 'O'
&& upCase != 'U')
count++;
}
cStr++;
}
return count;
}
// Reverse the string and make changes to the original arg
void reverse(char* cStr)
{
char temp;
for(int i = 0, j = strlen(cStr)-1; i < j; i++,j--)
{
temp = *(cStr+i);
*(cStr+i) = *(cStr+j);
*(cStr+j) = temp;
}
}