EECE 230 Final Sol, Fall 2013

American University of Beirut · Introduction to Programming · 9 pages · with solution

All EECE 230 files
EECE 230 Final Sol, Fall 2013, page 1

Stuck on a question? A tutor can walk you through it.

EECE 230 Final Sol, Fall 2013, page 2 EECE 230 Final Sol, Fall 2013, page 3 EECE 230 Final Sol, Fall 2013, page 4 EECE 230 Final Sol, Fall 2013, page 5 EECE 230 Final Sol, Fall 2013, page 6 EECE 230 Final Sol, Fall 2013, page 7 EECE 230 Final Sol, Fall 2013, page 8 EECE 230 Final Sol, Fall 2013, page 9

More EECE 230 files

Show the text of this final exam
#include <iostream> using namespace std; void main() { int numberOfZeros =0; cout<<"Enter list:"; int x; cin>>x; while(x!=-999){ if(x==0) numberOfZeros++; cin>>x; } cout<<"Number of zeros : "<<numberOfZeros<<endl; } #include <iostream> using namespace std; void mergeSort(int A[], int q, int r); void merge(int A[], int p, int q, int r); void merge15(const int L[],int m,const int R[], int n, int C[]); void main () { //////////////////////////////////////////////////////// int A[100]; int number; cout << "Enter a list of integers ending with " <<-999<<":"<<endl; cin >> number; int i = 0; while (number != -999) { A[i]= number; i++; cin >> number; } int n = i; //////////////////////////////////////////////////////// mergeSort(A,0,n-1); int numberOfEqual = 0; int count = 1; bool answer=true; for(i=1;i<n;i++) { if(A[i]==A[i-1]) count++; else { if (numberOfEqual ==0) numberOfEqual = count; else if(numberOfEqual != count) { answer = false; break; } count = 1; } } if(answer==true) cout<<"YES: "<<numberOfEqual<<endl; else cout<<"NO"<<endl; } ///////////////// void mergeSort(int A[], int p, int r) { if(p<r) { int q=(p+r)/2; mergeSort(A, p, q); mergeSort(A, q+1, r); merge(A, p, q, r); } } void merge15(const int L[],int m,const int R[], int n, int C[] ) { int i =0, j = 0; for(int k = 0;k<m+n;k++) { if (i< m && j < n) if (L[i]<R[j]) { C[k] = L[i]; i++;} else { C[k] = R[j]; j++;} else if (i==m) {C[k] = R[j]; j = j+1;} else if (j==n) {C[k] = L[i]; i = i+1;} } } void merge(int A[], int p, int q, int r) { int * B = new int[q-p+1]; int * C= new int[r-q]; int * D= new int[r-p+1]; for(int i=p;i<=q;i++)B[i-p]=A[i]; for(int i=q+1;i<=r;i++) C[i-q-1]=A[i]; merge15(B,q-p+1,C, r-q, D); for(int i=p;i<=r;i++) A[i]=D[i-p]; delete []B; delete []C; delete [] D; } #include <iostream> using namespace std; void main () { //////////////////////////////////////////////////////// int A[100]; int number; cout << "Enter a list of integers ending with " <<-999<<":"<<endl; cin >> number; int i = 0; while (number != -999) { A[i]= number; i++; cin >> number; } int n = i; //////////////////////////////////////////////////////// bool answer=true; int numberOfEqual=0; for(i=0;i<n;i++) { int count = 0; for(int j=0;j<n;j++) if(A[i]==A[j]) count++; if(i==0) numberOfEqual = count; else if(numberOfEqual != count) { answer = false; break; } if(answer ==false) break; } if(answer) cout<<"YES: "<<numberOfEqual<<endl; else cout<<"NO"<<endl; } #include <iostream> using namespace std; #include <cassert> class fraction { public: int a; int b; fraction(int aValue, int bValue) { assert(bValue!=0); a = aValue; b = bValue; }; fraction() {a=0;b=1;} ; void print() {cout<<"("<<a<<"/"<<b<<")";}; fraction add(const fraction & y) const; fraction mult(const fraction & y) const; fraction neg() const {fraction x(-a,b);return x;}; bool isEqual(const fraction & y) const; fraction simplify() const; }; fraction fraction::add(const fraction & y) const { fraction x; x.b=y.b*b; x.a=y.b*a+b*y.a; return x; } fraction fraction::mult(const fraction & y) const { fraction x; x.a=y.a*a; x.b=y.b*b; return x; } bool fraction::isEqual(const fraction & y) const { return (a*y.b== b*y.a); } fraction fraction::simplify() const { fraction x(a,b); if(b<0) { x.a = -x.a; x.b = -x.b; } int d = x.b; while(d>=2) { if(x.b%d==0 && x.a%d==0) break; d--; } x.a = x.a/d; x.b=x.b/d; return x; } int main() { fraction x(1,2), y(2,3); fraction z= x.add(y); z.print();cout<<endl; z = x.mult(y); z.print();cout<<endl; z = x.neg(); z.print();cout<<endl; fraction w(2,4); cout<<(x.isEqual(y))<<endl; cout<<(x.isEqual(w))<<endl; fraction u(120,180); fraction v; v = y.simplify(); v.print(); cout<<endl;cout<<endl; return 0; } #include <iostream> using namespace std; #include<cmath> bool similarA(char *s, char * t) { int n1 = strlen(s); int n2 = strlen(t); if(abs(n1-n2)>=2) return false; if(n1==n2) { for(int i=0;i<n1;i++) if(s[i]!=t[i]) return false; return true; } // remaining case when n1=n2+1 or n2=n1+1 int i=0; bool jump =false; for(int i=0,j=0;i<n1 && j<n2;i++,j++) if(s[i]!=t[j]) if(jump ==false) { if(n1>n2) i++; else j++; jump = true; if(s[i]!=t[j]) return false; } else return false; return true; } bool similarB(char *s, char * t) { int n1 = strlen(s); int n2 = strlen(t); if(n1!=n2) return false; bool swap = false; for(int i=0;i<n1;i++) if(s[i]!=t[i]) if(swap==false && i<n1-1 && s[i]==t[i+1] && s[i+1]==t[i]) { swap = true; i++; } else return false; return true; } void main() { cout<<similarA("problem","problem")<<endl; cout<<similarA("proble","problem")<<endl; cout<<similarA("prolem","problem")<<endl; cout<<similarA("probslem","problem")<<endl; cout<<similarA("probleme","problem")<<endl; cout<<similarA("porleme","problem")<<endl; cout<<similarA("poblm","problem")<<endl; cout<<similarA("abcm","problem")<<endl; cout<<"-------------------"<<endl; cout<<similarB("problem","problem")<<endl; cout<<similarB("problem","porblem")<<endl; cout<<similarB("problem","rpoblem")<<endl; cout<<similarB("problem","problme")<<endl; cout<<similarB("problem","rpoblme")<<endl; cout<<similarB("problem","proble")<<endl; cout<<similarB("problem","abcm")<<endl; } #include <iostream> using namespace std; int count(int n) { int * A = new int[n+1]; A[0]=1; for(int i=1;i<=n;i++) { A[i]=0; if(i-1>=0) A[i]=A[i-1]; if(i-2>=0) A[i]=A[i]+A[i-2]; if(i-3>=0) A[i]=A[i]+A[i-3]; } int answer = A[n]; delete [] A; return answer; // we can also avoid the array A by keeping track of the last 2 previous values } void enumerateRec(int *A, int i,int n) { if(n==0) { for(int j=0;j<i;j++) cout<<A[j]<<" "; cout<<endl; } for(int p = 1;p<=3;p++) if(n-p>=0) { A[i]=p; enumerateRec(A, i+1, n-p); } } void enumerate(int n) { int *A = new int[n]; enumerateRec(A,0,n); delete [] A; } int main() { cout<<count(3)<<endl; cout<<count(4)<<endl; cout<<count(25)<<endl; cout<<"------------------"<<endl; enumerate(3); cout<<"------------------"<<endl; enumerate(4); cout<<endl; }