Is it possible to shorten my main function in this code?

Posted by AjiPorter on Stack Overflow See other posts from Stack Overflow or by AjiPorter
Published on 2012-09-26T09:36:14Z Indexed on 2012/09/26 9:37 UTC
Read the original article Hit count: 447

Filed under:
|
|
|
|

Is it possible for me to shorten my main() by creating a class? If so, what part of my code would most likely be inside the class? Thanks again to those who'll answer. :)

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <ctime>
    #include <cstdlib>
    #define SIZE 20

    using namespace std;

    struct textFile {
        string word;
        struct textFile *next;
    };

    textFile *head, *body, *tail, *temp;

    int main() {
        ifstream wordFile("WORDS.txt", ios::in); // file object constructor
        /* stores words in the file into an array */
        string words[SIZE];
        char pointer;
        int i;
        for(i = 0; i < SIZE; i++) {
            while(wordFile >> pointer) {
                if(!isalpha(pointer)) {
                    pointer++;
                    break;
                }
                words[i] = words[i] + pointer;
            }
        }
        /* stores the words in the array to a randomized linked list */
        srand(time(NULL));
        int index[SIZE] = {0}; // temporary array of index that will contain randomized indexes of array words
        int j = 0, ctr;
        // assigns indexes to array index
        while(j < SIZE) {
            i = rand() % SIZE;
            ctr = 0;
            for(int k = 0; k < SIZE; k++) {
                if(!i)
                    break;
                else if(i == index[k]) { // checks if the random number has         previously been stored as index
                    ctr = 1;
                    break;
                }
            }
            if(!ctr) {
                index[j] = i; // assigns the random number to the current         index of array index
                j++;
            }
        }
        /* makes sure that there are no double zeros on the array */
        ctr = 0;
        for(i = 0; i < SIZE; i++) {
            if(!index[i])
                ctr++;
        }
        if(ctr > 1) {
            int temp[ctr-1];
            for(j = 0; j < ctr-1; j++) {
                for(i = 0; i < SIZE; i++) {
                    if(!index[i]) {
                        int ctr2 = 0;
                        for(int k = 0; k < ctr-1; k++) {
                            if(i == temp[k])
                                ctr2 = 1;
                        }
                        if(!ctr2)
                            temp[j] = i;
                    }
                }
            }
            j = ctr - 1;
            while(j > 0) {
                i = rand() % SIZE;
                ctr = 0;
                for(int k = 0; k < SIZE; k++) {
                    if(!i || i == index[k]) {
                        ctr = 1;
                        break;
                    }
                }
                if(!ctr) {
                    index[temp[j-1]] = i;
                    j--;
                }
            }
        }
        head = tail = body = temp = NULL;
        for(j = 0; j < SIZE; j++) {
            body = (textFile*) malloc (sizeof(textFile));
            body->word = words[index[j]];
            if(head == NULL) {
                head = tail = body;
            }
            else {
                tail->next = body;
                tail = body;
                cout << tail->word << endl;
            }
        }
        temp = head;
        while(temp != NULL) {
            cout << temp->word << endl;
            temp = temp->next;
        }
        return 0;
    }

© Stack Overflow or respective owner

Related posts about c++

Related posts about class