Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- #include <conio.h>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- bool isFlomb(char *);
- void getStatistics(char *);
- char * generateFlomb(void );
- char flomb[20];
- int eyes, arms, ears, mouth;
- int main()
- {
- srand(time(NULL));
- cout << "Press 1 to enter your own Flomb, 2 to generate a Flomb or 3 to get statistics" << endl;
- cout << "Option: ";
- char option = _getch();
- cout << endl << endl;
- if(option == '1') // user inputs flomb
- {
- cout << "Enter flomb: ";
- cin.getline(flomb, 20);
- if(isFlomb(flomb) == 1)
- {
- cout << endl << "Your Flomb is valid!" << endl << endl;
- }
- else
- {
- cout << endl << "Your Flomb is not valid." << endl << endl;
- }
- }
- else if(option == '2') // generate flomb
- {
- generateFlomb();
- cout << "Generated Flomb: " << flomb << endl << endl;
- }
- else if(option == '3') // get statistics
- {
- getStatistics(flomb);
- }
- else // invalid input
- {
- cout << "Please try again." << endl;
- }
- main();
- return 0;
- }
- bool isFlomb(char * input)
- {
- int length = strlen(input);
- arms = 0, ears = 0, eyes = 0, mouth = 0;
- for(int i = 0; i < length; i++)
- {
- switch(input[i])
- {
- case '\\':
- case '/':
- arms++;
- break;
- case '_':
- if(mouth > 0)
- {
- if(input[i-1] != '_')
- {
- mouth++; // more than one mouth
- }
- else
- {
- // just a long mouth
- }
- }
- else
- {
- mouth++; // first mouth
- }
- break;
- case 'O':
- case 'o':
- eyes++;
- break;
- case '(':
- case ')':
- ears++;
- }
- }
- if(arms > 2)
- {
- return 0;
- }
- else if(eyes > 2 || eyes < 1)
- {
- return 0;
- }
- else if(ears > 3 || ears < 2)
- {
- return 0;
- }
- else if(mouth > 1 || mouth < 1)
- {
- return 0;
- }
- else
- {
- return 1;
- }
- }
- void getStatistics(char * input)
- {
- int length = strlen(input);
- arms = 0, ears = 0, eyes = 0, mouth = 0;
- for(int i = 0; i < length; i++)
- {
- switch(input[i])
- {
- case '\\':
- case '/':
- arms++;
- break;
- case '_':
- if(mouth > 0)
- {
- if(input[i-1] != '_')
- {
- mouth++; // more than one mouth
- }
- else
- {
- // just a long mouth
- }
- }
- else
- {
- mouth++; // first mouth
- }
- break;
- case 'O':
- case 'o':
- eyes++;
- break;
- case '(':
- case ')':
- ears++;
- }
- }
- cout << "Flomb has " << arms << " arms, " << ears << " ears, " << eyes << " eyes and " << mouth << " mouths" << endl << endl;
- }
- char * generateFlomb(void )
- {
- char temp[10];
- while(isFlomb(temp) == 0)
- {
- arms = 0, ears = 0, eyes = 0, mouth = 0;
- memset(temp, '\0', 10);
- int a = 0, b = 0, c = 0;
- a = rand() % 8;
- for(int i = 0; i < a; i++)
- {
- b = rand() % 4;
- c = rand() % 2;
- switch(b)
- {
- case 0: //arm
- if(arms == 2)
- {
- // no more arms
- }
- else
- {
- if(c == 0)
- temp[i] = '/';
- else
- temp[i] = '\\';
- arms++;
- }
- break;
- case 1: //ear
- if(ears == 3)
- {
- // no more ears
- }
- else
- {
- if(c == 0)
- temp[i] = '(';
- else
- temp[i] = ')';
- ears++;
- }
- break;
- case 2: //eye
- if(eyes == 2)
- {
- // no more eyes
- }
- else
- {
- temp[i] = 'O';
- eyes++;
- }
- break;
- case 3: //mouth
- if(mouth > 0)
- {
- if(temp[i-1] != '_')
- {
- // no more mouths
- }
- else
- {
- temp[i] = '_'; // longer mouth
- }
- }
- else
- {
- temp[i] = '_';
- mouth++;
- }
- break;
- }
- }
- }
- for(int i = 0; i < 10; i++)
- {
- flomb[i] = temp[i];
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement