Skip to content
Snippets Groups Projects
Commit f8b3e0a7 authored by Kai Renz's avatar Kai Renz
Browse files

Initial commit

parents
No related branches found
No related tags found
Loading
cmake_minimum_required(VERSION 3.26)
project(02_ifm_refactoring)
set(CMAKE_CXX_STANDARD 17)
add_executable(02_ifm_refactoring main.cpp
fl.cpp)
# Refactoring Challenge
1. Look at the code in `fl.cpp`
2. Use the refactoring-techniques from the lecture.
3. Find out, what the function `fl` does. Try to write down a specification.
fl.cpp 0 → 100644
//
// Created by Kai Renz on 02.11.23.
//
int fl(int* i,int l) {
for (int k=0;k<l;k++) {
if (i[k]<0||i[k]>=l) {
i[k]=-1;
} else {
if (i[k]!=k) {
int v=i[k];
if (i[k]!=k) {
i[k]=-1;
}
while (v>=0&&v<l&&i[v]!=v) {
int t=i[v];
i[v]=v;
v=t;
}
}
}
}
int m=0;
for (;m<l&&i[m]!=-1;m++) {}
return m;
}
\ No newline at end of file
main.cpp 0 → 100644
#include <iostream>
int fl(int *i,int l);
void expect(bool b, std::string text) {
if (!b) {
std::cout << text << std::endl;
exit(-1);
}
}
int main() {
int r = fl( (int[]) {0,1,2} ,3);
expect(r==3,"Expected r to be 3");
r = fl( (int[]) {1,2},2);
expect(r==0,"Expected r to be 0");
r = fl( (int[]) {0, -1,2},3);
expect(r==1,"Expected r to be 1");
r = fl( (int[]) {0, -1,1,2,3},5);
expect(r==4,"Expected r to be 4");
r = fl( (int[]) {0, 3,2,1,3},5);
expect(r==4,"Expected r to be 4");
r = fl( (int[]) {1, 2,3,4,5},5);
expect(r==0,"Expected r to be 0");
r = fl( (int[]) {-1, 0,1,2,3},5);
expect(r==4,"Expected r to be 4");
r = fl( (int[]) {4, 3,2,1,0},5);
expect(r==5,"Expected r to be 5");
r = fl( (int[]) {4, -1,1,2,3},5);
expect(r==0,"Expected r to be 0");
std::cout << "Success!";
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment