EECE 230 Final Sol, Fall 2013
American University of Beirut · Introduction to Programming · 9 pages · with solution
More EECE 230 files
- Final Exam · Spring 2020Final examView
- Final Questions · Spring 2019Final examView
- Final Questions · Fall 2018Final examView
- Final Solutions · Fall 2018Final exam · with solutionView
- Final Collection Finals with Solution · Spring 2017Final exam · with solutionView
- Final · Fall 2013Final examView
- Final Problem 2 · Fall 2013Final examView
- Final · Fall 2013Final examView
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;
}