Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

HELP WITH C++ CLASS This assignment uses the past labs you have created. You hav

ID: 3918846 • Letter: H

Question

HELP WITH C++ CLASS

This assignment uses the past labs you have created. You have the option of either combining past labs into one larger lab, or using them individually to solve the listed problems.

1.) Decrypt the following: “Lo cebo dy nbsxu iyeb Yfkvdsxo”

2.) Convert 871 to base 7.

3.) Convert 6 into Hamming Code.

4.) Universal Set: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

Set A: [1,2,3,5,8,13]

Set B: [1,3,5,7,9,11,13,15,17,19]

Set C: [1,2,3,5,7,11,13,17,19]

Please print out: ((A Union B) Intersect C)

5.) Present a Truth Table for the following statement:

!(A XOR C) NAND (B OR A)

Explanation / Answer

using namespace std;

class test{

public :

string numberToSeven;

int convertedNumber[10];

string convertToBaseSeven(int number){

int temp;

while(number != 0){

temp = number % 7;

number = number / 10;

numberToSeven = numberToSeven + to_string(temp);

}

return numberToSeven;

}

void convertToHammingCode(int number){

convertToBinary(number);

int temp = convertedNumber[0];

int dataatrec[10],c,c1,c2,c3,i;

convertedNumber[1] = convertedNumber[3];

convertedNumber[3] = temp;

convertedNumber[0] = 0;

//now we have 6 binary into convertedNumber array 0110

//Calculation of even parity

convertedNumber[6]=convertedNumber[0]^convertedNumber[2]^convertedNumber[4];

convertedNumber[5]=convertedNumber[0]^convertedNumber[1]^convertedNumber[4];

convertedNumber[3]=convertedNumber[0]^convertedNumber[1]^convertedNumber[2];

cout<<" Encoded convertedNumber is ";

for(i=0;i<7;i++)

cout<<convertedNumber[i];

  

cout<<" Enter received data bits one by one ";

for(i=0;i<7;i++)

cin>>dataatrec[i];

c1=dataatrec[6]^dataatrec[4]^dataatrec[2]^dataatrec[0];

c2=dataatrec[5]^dataatrec[4]^dataatrec[1]^dataatrec[0];

c3=dataatrec[3]^dataatrec[2]^dataatrec[1]^dataatrec[0];

c=c3*4+c2*2+c1 ;

if(c==0) {

cout<<" No error while transmission of data ";

}

else {

cout<<" Error on position "<<c;

  

cout<<" convertedNumber sent : ";

for(i=0;i<7;i++)

cout<<convertedNumber[i];

  

cout<<" Data received : ";

for(i=0;i<7;i++)

cout<<dataatrec[i];

  

cout<<" Correct message is ";

  

//if errorneous bit is 0 we complement it else vice versa

if(dataatrec[7-c]==0)

dataatrec[7-c]=1;

else

dataatrec[7-c]=0;

for (i=0;i<7;i++) {

cout<<dataatrec[i];

}

}

  

return 0;

}

}

void convertToBinary(int number){

int temp;

int i=1;

string convertedNumber = "";

while(number != 0){

temp = number % 2;

number = number / 10;

convertedNumber = convertedNumber + to_string(temp);

convertedNumber[i++] = temp;

}

}

int[] printUnion(int arr1[], int arr2[], int m, int n){

// Before finding union, make sure arr1[0..m-1]

// is smaller

if (m > n)

{

int *tempp = arr1;

arr1 = arr2;

arr2 = tempp;

int temp = m;

m = n;

n = temp;

}

int totalResult[m+n];

int k=0;

// Now arr1[] is smaller

// Sort the first array and print its elements (these two

// steps can be swapped as order in output is not important)

sort(arr1, arr1 + m);

for (int i=0; i<m; i++){

//cout << arr1[i] << " ";

totalResult[k++] = m;

}

// Search every element of bigger array in smaller array

// and print the element if not found

for (int i=0; i<n; i++)

if (binarySearch(arr1, 0, m-1, arr2[i]) == -1){

//cout << arr2[i] << " ";

totalResult[k++] = arr2[i];

}

return totalResult;

}

// Prints intersection of arr1[0..m-1] and arr2[0..n-1]

void printIntersection(int arr1[], int arr2[], int m, int n)

{

// Before finding intersection, make sure arr1[0..m-1]

// is smaller

if (m > n)

{

int *tempp = arr1;

arr1 = arr2;

arr2 = tempp;

int temp = m;

m = n;

n = temp;

}

// Now arr1[] is smaller

// Sort smaller array arr1[0..m-1]

sort(arr1, arr1 + m);

// Search every element of bigger array in smaller

// array and print the element if found

for (int i=0; i<n; i++)

if (binarySearch(arr1, 0, m-1, arr2[i]) != -1)

cout << arr2[i] << " ";

}

// A recursive binary search function. It returns

// location of x in given array arr[l..r] is present,

// otherwise -1

int binarySearch(int arr[], int l, int r, int x)

{

if (r >= l)

{

int mid = l + (r - l)/2;

// If the element is present at the middle itself

if (arr[mid] == x) return mid;

// If element is smaller than mid, then it can only

// be presen in left subarray

if (arr[mid] > x)

return binarySearch(arr, l, mid-1, x);

// Else the element can only be present in right subarray

return binarySearch(arr, mid+1, r, x);

}

// We reach here when element is not present in array

return -1;

}

int[] truthTableForXOR(int a[], int b[])){

int table[4];

int k = 0;

for(int i=0; i<2; i++){

for(int j=0; j<2; j++){

if(a[i]==0){

if(b[j]==0){

table[k++] = 0;

} else{

table[k++] = 1;

}

} else{

if(b[j]==0){

table[k++] = 1;

} else{

table[k++] = 0;

}

}

}

}

return table;

}

int[] truthTableForOR(int a[], int b[])){

int table[4];

int k = 0;

for(int i=0; i<2; i++){

for(int j=0; j<2; j++){

if(a[i]==0){

if(b[j]==0){

table[k++] = 0;

} else{

table[k++] = 1;

}

} else{

table[k++] = 1;

}

}

}

return table;

}

int[] truthTableForNAND(int a[], int b[]){

int truthTable[4];

int k=0;

for(i = 0; i< 4; i++){

for(j=0; j< 4; j++){

if(a[i]==0){

truthTable[k++] = 1;

} else{

if(b[j] == 0){

truthTable[k++] = 1;

} else{

truthTable[k++] = 0;

}

}

}

}

return truthTable;

}

int[] truthTableNOT(int a[]){

int truthTable[4];

int k=0;

for(int i=0;i<4;i++){

if(a[i] == 0){

truthTable[k++] = 1;

} else{

truthTable[k++] = 0;

}

}

return truthTable;

}

}

int main(){

test t = new test();

cout<< t.convertToBaseSeven(871);

cout<< t.convertToHammingCode(6);

int UnionResult[20];

UnionResult = printUnion(A,B);

printintersection(UnionResult, C);

int a[4],b[4];

a = truthTableForXOR(A,C);

b = truthTableForOR(B,A);

a = truthTableNOT(a);

a = truthTableForNAND(a,b);

//a have reuslt

for(int i =0 ;i<4;i++){

cout<< a[i];

}

}