Skip to content

Instantly share code, notes, and snippets.

@mirsahib
Last active September 30, 2017 17:48
Show Gist options
  • Save mirsahib/f448d0c4b474f3c73bd812d7a70b56b8 to your computer and use it in GitHub Desktop.
Save mirsahib/f448d0c4b474f3c73bd812d7a70b56b8 to your computer and use it in GitHub Desktop.
IUB CSE 203 Data Structure Assignment
/*
Author: Mir Sahib
ID:1510175
Updated: 30 Sep 17
*/
#include <iostream>
using namespace std;
//pattern 1 a)
void printNum(int n){
if(n==1){
cout<<n<<" ";
}else{
printNum(n-1);
cout<<n<<" ";
}
}
void printPatterNo_1a(int i){
if(i==1){
printNum(i);
cout<<endl;
}else{
printPatterNo_1a(i-1);
printNum(i);
cout<<endl;
}
}
// b)
void printChar(char n,char k){
if(n=='A'){
cout<<k<<" ";
}else{
printChar(n-1,k);
cout<<k;
}
}
void printPatterNo_1b(char i){
if(i=='A'){
printChar(i,i);
cout<<endl;
}else{
printPatterNo_1b(i-1);
printChar(i,i);
cout<<endl;
}
}
//pattern 1 end
//pattern 2 start
void printPatterNo_2(int n){
if(n==1){
printNum(n);
cout<<endl;
}else{
printNum(n);
cout<<endl;
printPatterNo_2(n-1);
}
};
//pattern 2 end
//pattern 3 start
void printSpace(int n){
if(n==1){
cout<<"";
}else{
cout<<" ";
printSpace(n-1);
}
};
void printStar(int n){
if(n==1){
cout<<"*";
}else{
cout<<"*";
printStar(n-1);
}
};
void printPatterNo_3(int n,int i){
//i is a independent parameter
if(n==1){
printSpace(n);
printStar((i*2)+1);
cout<<endl;
}else{
printSpace(n);
printStar((i*2)+1);
cout<<endl;
printPatterNo_3(n-1,i+1);
}
}
//pattern 3 end
//pattern 4 start
int printDigit_4a(int n,int i){
if(n==1){
cout<<i<<"";
return i;
}else{
cout<<i<<"";
printDigit_4a(n-1,i+1);
}
//there is a warning because when the stack is unwrapped it it returning a non void function
}
void printDigit_4b(int n,int i){
if(n==i){
cout<<i;
}else{
cout<<i<<"";
printDigit_4b(n,i-1);
}
}
void printPatterNo_4(int n,int i,int c){
if(n==1){
printSpace(n);
c = printDigit_4a(i,i);
printDigit_4b(i,c-1);
cout<<endl;
}else{
printSpace(n);
c = printDigit_4a(i,i);
if(i!=1){
printDigit_4b(i,c-1);
}
cout<<endl;
printPatterNo_4(n-1,i+1,c);
}
}
//pattern 4 end
//pattern 5 start
void printPatterNo_5(int i,int n){
//i is a independent parameter
if(n==1){
printSpace(i);
printStar((n*2)-1);
cout<<endl;
}else{
printSpace(i);
printStar((n*2)-1);
cout<<endl;
printPatterNo_5(i+1,n-1);
}
}
//pattern 5 end
//pattern 7 start
int printDigit(int n,int i){
if(n==1){
cout<<i<<" ";
return i+1;
}else{
cout<<i<<" ";
printDigit(n-1,i+1);
}
//there is a warning because when the stack is unwrapped it it returning a non void function
}
void printPatterNo_7(int n,int c,int i){
if(n==1){
i= printDigit(c,i);
cout<<endl;
}else{
i = printDigit(c,i);
cout<<endl;
printPatterNo_7(n-1,c+1,i);
}
}
//pattern 7 end
//problem 8 start
int generateFactorial(int n){
if(n==1){
cout<<n<<" : ";
return n;
}else{
cout<<n<<" ";
return n*generateFactorial(n-1);
}
}
//problem 8 end
//problem 9 start
int generateFib(int n){
if(n==0){
return 0;
}else if(n==1){
return 1;
}else{
return generateFib(n-1)+generateFib(n-2);
}
}
void reverseString(string s,int len){
if(len==0){
cout<<s[len];
}else{
cout<<s[len];
reverseString(s,len-1);
}
}
int main()
{
// change 5 and 4 for different pattern but don't change any other parameter
//don't enter 0 as parameter for any pattern
int n;
cout<<"Pattern 1 a) and b)"<<endl<<endl;
printPatterNo_1a(5);
cout<<endl;
printPatterNo_1b('E');
cout<<endl;
cout<<"Pattern 2:"<<endl<<endl;
printPatterNo_2(5);
cout<<endl;
cout<<"Pattern 3:"<<endl<<endl;
printPatterNo_3(5,0);
cout<<endl;
cout<<"Pattern 4:"<<endl<<endl;
printPatterNo_4(5,1,1);
cout<<endl;
cout<<"Pattern 5:"<<endl<<endl;
printPatterNo_5(1,5);
cout<<endl;
cout<<"Pattern 7:"<<endl<<endl;
printPatterNo_7(4,1,1);
cout<<endl;
//generate factorial
cout<<"Enter a number"<<endl;
cin>>n;
cout<<"Factorial of "<<n<<" is "<<endl;
cout<<generateFactorial(n);
//generate fibonacci
cout<<endl;
cout<<"fibonacci of "<<n<<" series is"<<endl;
cout<<generateFib(n);
cout<<endl;
string s = "CSE203_DataStructure";
int len = s.length();
cout<<"Reverse of "<<s<<" is: ";
reverseString(s,len-1);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment