Your question is Debug a C++ Program. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
10x Genomics sequencers stream raw optical readings from each imaging cycle into a fixed-size buffer before they get processed downstream. Here is the buffer class you are asked to debug.
#include <iostream>
class SampleBuffer {
public:
SampleBuffer(int size) {
length = size;
data = new double[length];
for (int i = 0; i <= length; i++) {
data[i] = 0.0;
}
}
~SampleBuffer() {
delete data;
}
void loadReading(int index, double value) {
data[index] = value;
}
double* getWindow(int start, int count) {
double window[count];
for (int i = 0; i < count; i++) {
window[i] = data[start + i];
}
return window;
}
void trimTrailingZeros() {
unsigned int i = length - 1;
while (i >= 0 && data[i] == 0.0) {
i--;
}
length = i + 1;
}
private:
double* data;
int length;
};
int main() {
SampleBuffer buffer(1024);
for (int i = 0; i < 1024; i++) {
buffer.loadReading(i, i * 0.01);
}
double* window = buffer.getWindow(0, 10);
std::cout << window[0] << std::endl;
return 0;
}
Debug this class and explain what is actually wrong with it. Walk through each issue you find, what would actually happen when this code runs on a real sequencer buffer, and what you would change and why.