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

Implement a LFSR.cpp file that includes the header file below. Reference : http:

ID: 3805022 • Letter: I

Question

Implement a LFSR.cpp file that includes the header file below.

Reference :
http://bits.usc.edu/cs103/coursework/lfsr/

//Header File

#ifndef LFSR_H
#define LFSR_H

class LFSR
{
private:
    Queue q;                    // Queue object

    int   t1, t2;               // Tap index values - two integers (peek offsets from front of queue)

    bool XOR(int a, int b);
    // XOR(...)   
    // Exclusive OR function                           
    // a | b | a XOR b
    // ----------------
    // 0 | 0 |    0
    // 0 | 1 |    1
    // 1 | 0 |    1
    // 1 | 1 |    0

public:
    LFSR(string seed, int tap1, int tap2);
    // LFSR(...)
    // Initializes t1 and t2 to tap1 and tap2, respectively
    // and parses seed string to loading queue with starting values
   
    void NextState();          
    // NextState()
    // Iterator method computes and queues next pseudo-random number in sequence
    // Algorithm
    // (1) temp = Peek(tap1) XOR Peek(tap2)
    // (2) Dequeue
    // (3) Enqueue(temp)
                               

Explanation / Answer

#include"LFSR.hpp"
#include<iostream>
using namespace std;
//You should Deque instead of Queue as std::Deque q so that you can peek without popping the element

LFSR::LFSR(std::string seed,int tap1,int tap2)//Constructor
{
   t1 = tap1;
   t2 = tap2;
   std::string::iterator it;
   int index = 0;
   for(it = seed.begin();it < seed.end();it++)//Parsing string into Deque by iterating each character in the string
   {
       q.push_back(int(*it));
   }
}

LFST::NextState()
{
   int temp = XOR(q[tap1],q[tap2]);//peek(tap1) XOR peek(tap2)
   q.pop_front();//dequeing first element
   q.push_back(temp);//pushing the bit at the end of the deque

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote