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
No related merge requests found
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