Implement an array-based stack and count what is more in the stack

Jun 23, 2021 at 9:13pm
Implement an array-based stack and count what is more in the stack - vowels, consonants, or other characters.
Then implement the stack based on the linked list and do the same.

There is a ready-made code, please help with commenting it

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
#include <iostream>
#include <cstring>
#include <ctime>
#define SIZE 25

char stck[SIZE];
int pos=-1;

using namespace std;

struct Node{
    char data;
    struct Node* next;
} *top;

void addlist(char data){
    struct Node* temp;
    temp = new Node();
    if (temp==NULL)
        exit(1);

    temp->data=data;
    temp->next=top;
    top = temp;
}

void seelist(Node* temp){
    if (top==NULL)
        exit(1);
    else{
        struct Node* temp=top;
        for (; temp != NULL; temp=temp->next)
            cout << temp->data << ' ';
    }
    cout << endl;
}

void addarray(char a){
    pos++;
    stck[pos]=a;
}

void seearray(){
    if (pos==0)
        return;
    else{
        for (int i=pos; i>-1; --i)
            cout << stck[i] << ' ';
        cout << endl;
    }
}

void count(int n, int k, int m) {
    cout << "Vowels: " <<n<< endl;
    cout << "Consonant letters: " <<k<< endl;
    cout << "Other characters: " <<m<< endl;
    if (n>k){
        if (m>n) cout << "other characters the most" << endl;
        if (m==n) cout << "other characters and vowels the most" << endl;
        if (m<n) cout << "vowels the most" << endl;
    }
    else {
        if (n < k){
            if (m>k) cout << "other characters the most" << endl;
            if (m==k) cout << "other characters and consonants the most" << endl;
            if (m<k) cout << "consonant letters the most" << endl;
        }
        if (n==k){
            if (m==n) cout << "other symbols, vowels and consonants alike" << endl;
            if (m>n) cout << "other characters the most" << endl;
            if (m<n) cout << "vowels and consonants the most" << endl;
        }
    }
    cout << endl;
}

void arr(){
    cout << "Array-based stack: " << endl;
    const char vowels[] = "AEYUIOaeyiou";
    const char constt[] = "BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz";
    int a=0, b=0, c=0;
    for (int i=0; i<SIZE; ++i)
        addarray(char(rand() % 94+32));
    seearray();
    for (int i=0; i<SIZE; i++){
        if (strchr(vowels, stck[i]) != NULL){
            a++;
        }
        else{
            if (strchr(constt, stck[i]) != NULL)
                b++;
            else c++;
        }
    }
    count(a, b, c);
}

void list(){
    cout << "Stack based on a linked list: " << endl;
    Node* temp=top;
    const char vowels[] = "AEYUIOaeyiou";
    const char constt[] = "BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz";
    int a=0, b=0, c=0;
    for (int i=0; i<SIZE; ++i)
        addlist(char(rand() % 94+32));
    seelist(temp);
    for (temp=top; temp != NULL; temp=temp->next){
        if (strchr(vowels, temp->data) != NULL){
            a++;
        }
        else{
            if (strchr(constt, temp->data) != NULL)
                b++;
            else c++;
        }
    }
    count(a, b, c);
}

int main(){
    srand(time(NULL));
    arr();
    list();
    return 0;
}
Last edited on Jun 24, 2021 at 8:33pm
Jun 23, 2021 at 9:48pm
Why, pray tell, do you require our help to comment code you should understand how it works?

And USE CODE TAGS! You've been here long enough to know about them.
Jun 23, 2021 at 10:01pm
Why bother replying. It's clear from past posts what the modus operandi is here.
Last edited on Jun 23, 2021 at 10:02pm
Jun 24, 2021 at 9:42am
Use the debugger to trace through the code to see how it works.
Jun 24, 2021 at 11:23am
How can i do this in Xcode?
Topic archived. No new replies allowed.