karen pointer sur fonctions en static, sed resolution eof

This commit is contained in:
Hugo LAMY
2022-02-10 17:21:01 +01:00
parent c287ea7c97
commit 504f6c3524
29 changed files with 369 additions and 8 deletions

62
d01/ex04/Makefile.replace Normal file
View File

@@ -0,0 +1,62 @@
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# . name = value . name is case sensitive #
# VARIABLES . or name = value \ . use VPATH only for .c #
# . value . or .cpp #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
NAME = sed
CC = clang++
CFLAGS = -Wall -Wextra -Werror $(INCLUDES) -std=c++98 -g3
VPATH = $(D_SRCS)
LIBS =
INCLUDES = -I$(D_HEADERS)
D_SRCS = .
SRCS = main.cpp \
Sed.cpp
D_HEADERS = .
HEADERS = Sed.hpp
D_OBJS = builds
OBJS = $(SRCS:%.cpp=$(D_OBJS)/%.o)
RM_D_OBJS = rm -rf $(D_OBJS)
ifeq "$(D_OBJS)" "."
RM_D_OBJS =
endif
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# . target: prerequisites . $@ : target #
# RULES . recipe . $< : 1st prerequisite #
# . recipe . $^ : all prerequisites #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
all: $(NAME)
$(D_OBJS)/%.o: %.cpp | $(D_OBJS)
$(CC) $(CFLAGS) -c $< -o $@
$(D_OBJS):
mkdir $@
$(OBJS): $(HEADERS:%=$(D_HEADERS)/%)
$(NAME): $(OBJS)
$(CC) $(OBJS) -o $@ $(LIBS)
clean:
rm -f $(OBJS)
fclean: clean
rm -f $(NAME)
$(RM_D_OBJS)
re: fclean all
.PHONY : all clean fclean re bonus run valgrind

View File

@@ -37,8 +37,8 @@ void Sed::replace() {
str.erase(str.begin());
str.push_back(file.get());
}
for (int i = 0; str[i + 1]; i++)
new_file << str[i];
str.erase(str.end() - 1);
new_file << str;
}

BIN
d01/ex04/sed Executable file

Binary file not shown.

View File

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@
hello

View File

@@ -0,0 +1,5 @@
ce fichier
contient
plusieurs lignes
les unes au dessus des autres
youhouuu ioieux

View File

@@ -0,0 +1,5 @@
ce fich++r
cont++nt
plus++urs lignes
les unes au dessus des autres
youhouuu io++ux

View File

@@ -0,0 +1 @@
....................................................;

View File

@@ -0,0 +1 @@
++++++++++++++++++++++++++++++++++++++++++++++++++++;

View File

@@ -0,0 +1,2 @@
...................................................;
. . . . . . . . . . . . . . . . . . . . . . . . . .;

View File

@@ -0,0 +1,2 @@
++++++++++++++++++++++++++++++++++++++++++++++++++.;
. . . . . . . . . . . . . . . . . . . . . . . . . .;

View File

@@ -0,0 +1 @@
test de mmdr foubar

View File

@@ -0,0 +1 @@
test de m||| foubar

View File

@@ -0,0 +1,2 @@
trouve ce mot toutouille
et celui-la toutoutouille

View File

@@ -0,0 +1,2 @@
trouve ce mot ||||||||||
et celui-la tou||||||||||

View File

@@ -0,0 +1,27 @@
No more tears, my heart is dry
I don't laugh and I don't cry
I don't think about you all the time
But when I do - I wonder why
You have to go out of my door
And leave just like you did before
I know I said that I was sure
But rich men can't imagine poor.
One day baby, we'll be old
Oh baby, we'll be old
And think of all the stories that we could have told
Little me and little you
Kept doing all the things they do
They never really think it through
Like I can never think you're true
Here I go again - the blame
The guilt, the pain, the hurt, the shame
The founding fathers of our plane
That's stuck in heavy clouds of rain.
One day baby, we'll be old
Oh baby, we'll be old
And think of all the stories that we could have told

View File

@@ -0,0 +1,27 @@
No more tears, my heart is dry
I do000 laugh and I do000 cry
I do000 think about you all the time
But when I do - I wonder why
You have to go out of my door
And leave just like you did before
I know I said that I was sure
But rich men ca000 imagine poor.
One day baby, we'll be old
Oh baby, we'll be old
And think of all the stories that we could have told
Little me and little you
Kept doing all the things they do
They never really think it through
Like I can never think you're true
Here I go again - the blame
The guilt, the pain, the hurt, the shame
The founding fathers of our plane
That's stuck in heavy clouds of rain.
One day baby, we'll be old
Oh baby, we'll be old
And think of all the stories that we could have told

View File

@@ -0,0 +1,4 @@
No more tears, my heart is dry
I don't laugh and I don't cry
I don't think about you all the time
But when I do - I wonder why

View File

@@ -0,0 +1,4 @@
No more tears, my heart is doo
oooooooolaugh and I don't coo
oooooooothink about you all the time
But when I do - I wonder why

View File

@@ -1,13 +1,9 @@
#include "Karen.hpp"
void (Karen::*Karen::_fp[4])() = { &Karen::_debug, &Karen::_info, &Karen::_warning, &Karen::_error};
Karen::Karen() {
_fp[0] = &Karen::_debug;
_fp[1] = &Karen::_info;
_fp[2] = &Karen::_warning;
_fp[3] = &Karen::_error;
_level[0] = "DEBUG";
_level[1] = "INFO";
_level[2] = "WARNING";

View File

@@ -14,7 +14,7 @@ public:
private:
void (Karen::*_fp[4])();
static void (Karen::*_fp[4])();
std::string _level[4];
void _debug( void );

Binary file not shown.

View File

@@ -80,6 +80,30 @@ private:
//
//
//
// /// NEGATIVS INTEGERS ///////////////////////////////////////
//
// 5 0101 0 0000 0 0000 0000 0000 0000 0000 0000 0000 0000
// 1010 + 1 1 0001 1 0000 0000 0000 0000 0000 0000 0000 0001
// -5 1011 2 0010 2 0000 0000 0000 0000 0000 0000 0000 0010
// 3 0011 3 0000 0000 0000 0000 0000 0000 0000 0011
// 4 0100 4 0000 0000 0000 0000 0000 0000 0000 0100
// -> 5 0101 5 0000 0000 0000 0000 0000 0000 0000 0101
// 6 0110 6 0000 0000 0000 0000 0000 0000 0000 0110
// 7 0111 7 0000 0000 0000 0000 0000 0000 0000 0111
// ...
// 0111 1111 1111 1111 1111 1111 1111 1111 MAXINT
// 1000 0000 0000 0000 0000 0000 0000 0000 MININT
// ...
// 8 1000 -8 1111 1111 1111 1111 1111 1111 1111 1000
// 9 1001 -7 1111 1111 1111 1111 1111 1111 1111 1001
// 10 1010 -6 1111 1111 1111 1111 1111 1111 1111 1010
// -> 11 1011 -5 1111 1111 1111 1111 1111 1111 1111 1011
// 12 1100 -4 1111 1111 1111 1111 1111 1111 1111 1100
// 13 1101 -3 1111 1111 1111 1111 1111 1111 1111 1101
// 14 1110 -2 1111 1111 1111 1111 1111 1111 1111 1110
// 15 1111 -1 1111 1111 1111 1111 1111 1111 1111 1111
//
//
// /// FLOATS VS FIXED /////////////////////////////////////////
//
// 1.....................23

66
d02/ex01/Fixed.cpp Normal file
View File

@@ -0,0 +1,66 @@
#include "Fixed.hpp"
void printBits(std::string before, unsigned int num)
{
int i = 0;
std::cout << before;
for (unsigned int mask = 1U << 31; mask; mask = mask >> 1)
{
std::cout << ((num & mask) != 0);
i++;
if (i % 8 == 0)
std::cout << ' ';
}
std::cout << "(" << num << ")" << '\n';
}
// default/parametric constructor
Fixed::Fixed( void ) : _value( 0 ) {
std::cout << "Default constructor called" << '\n';
return;
}
// copy constructor
Fixed::Fixed( Fixed const & src ) {
std::cout << "Copy constructor called" << '\n';
*this = src;
return;
}
// destructor
Fixed::~Fixed( void ) {
std::cout << "Destructor called" << '\n';
return;
}
Fixed::Fixed( int integer ) {
std::cout << integer << '\n';
printBits("integer : ", integer);
this->_value = integer << this->_frac;
printBits("this->_value : ", this->_value);
}
// assignement operator
Fixed & Fixed::operator=( Fixed const & rhs ) {
std::cout << "Copy assignment operator called" << '\n';
if ( this != &rhs )
this->_value = rhs.getRawBits();
return *this;
}
int Fixed::getRawBits( void ) const {
std::cout << "getRawBits member function called" << '\n';
return this->_value;
}
void Fixed::setRawBits( int const raw ) {
this->_value = raw;
}

29
d02/ex01/Fixed.hpp Normal file
View File

@@ -0,0 +1,29 @@
#ifndef FIXED_HPP
# define FIXED_HPP
#include <iostream>
#include <string>
class Fixed {
public:
Fixed( void ); // default/parametric constructor
Fixed( Fixed const & src ); // copy constructor
~Fixed( void ); // destructor
Fixed( int integer);
Fixed( float const floater );
Fixed & operator=( Fixed const & rhs ); // assignement operator
int getRawBits( void ) const;
void setRawBits( int const raw );
private:
int _value;
static int const _frac = 8;
};
#endif

62
d02/ex01/Makefile Normal file
View File

@@ -0,0 +1,62 @@
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# . name = value . name is case sensitive #
# VARIABLES . or name = value \ . use VPATH only for .c #
# . value . or .cpp #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
NAME = fixed
CC = clang++
CFLAGS = -Wall -Wextra -Werror $(INCLUDES) -std=c++98
VPATH = $(D_SRCS)
LIBS =
INCLUDES = -I$(D_HEADERS)
D_SRCS = .
SRCS = main.cpp \
Fixed.cpp
D_HEADERS = .
HEADERS = Fixed.hpp
D_OBJS = builds
OBJS = $(SRCS:%.cpp=$(D_OBJS)/%.o)
RM_D_OBJS = rm -rf $(D_OBJS)
ifeq "$(D_OBJS)" "."
RM_D_OBJS =
endif
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
# . target: prerequisites . $@ : target #
# RULES . recipe . $< : 1st prerequisite #
# . recipe . $^ : all prerequisites #
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
all: $(NAME)
$(D_OBJS)/%.o: %.cpp | $(D_OBJS)
$(CC) $(CFLAGS) -c $< -o $@
$(D_OBJS):
mkdir $@
$(OBJS): $(HEADERS:%=$(D_HEADERS)/%)
$(NAME): $(OBJS)
$(CC) $(OBJS) -o $@ $(LIBS)
clean:
rm -f $(OBJS)
fclean: clean
rm -f $(NAME)
$(RM_D_OBJS)
re: fclean all
.PHONY : all clean fclean re bonus run valgrind

BIN
d02/ex01/fixed Executable file

Binary file not shown.

36
d02/ex01/main.cpp Normal file
View File

@@ -0,0 +1,36 @@
#include "Fixed.hpp"
#include <iostream>
int main( void ) {
Fixed a( 1 );
std::cout << a.getRawBits() << '\n';
Fixed b( 6 );
std::cout << b.getRawBits() << '\n';
Fixed c( -6 );
std::cout << c.getRawBits() << '\n';
Fixed d( -1 );
std::cout << d.getRawBits() << '\n';
// Fixed a;
// Fixed const b( 10 );
// Fixed const c( 42.42f );
// Fixed const d( b );
//
// a = Fixed( 1234.4321f );
//
// std::cout << "a is " << a << std::endl;
// std::cout << "b is " << b << std::endl;
// std::cout << "c is " << c << std::endl;
// std::cout << "d is " << d << std::endl;
//
// std::cout << "a is " << a.toInt() << " as integer" << std::endl;
// std::cout << "b is " << b.toInt() << " as integer" << std::endl;
// std::cout << "c is " << c.toInt() << " as integer" << std::endl;
// std::cout << "d is " << d.toInt() << " as integer" << std::endl;
return 0;
}