From 98c13508cc8b56de85366d4da5a1c676eeeb96a0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Wed, 1 Mar 2017 23:04:06 +0100 Subject: [PATCH] Add TP2 exercice 1, the sorting algorithm SelectionSwap. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- TP2/exo1/Makefile | 79 +++++++++++++++++++++++++++++++++++++++++++++++ TP2/exo1/exo1.c | 44 ++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 TP2/exo1/Makefile create mode 100644 TP2/exo1/exo1.c diff --git a/TP2/exo1/Makefile b/TP2/exo1/Makefile new file mode 100644 index 0000000..7ce716c --- /dev/null +++ b/TP2/exo1/Makefile @@ -0,0 +1,79 @@ +# Sample Makefile to build simple project. +# +# This Makefile expect all source files (.c) to be at the same level, in the +# current working directory. +# +# It will automatically generate dependencies, compile all files, and produce a +# binary using the provided name. +# +# Set BINARY_NAME to the name of the binary file to build. +# Set BUILD_TYPE to either debug or release +# +# Automatic dependencies code from: +# http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/#tldr +BINARY_NAME=exo1 +BUILD_TYPE=debug + +# ==================================== +# DO NOT CHANGE STUFF BEYOND THIS LINE +# ==================================== + +all: $(BINARY_NAME) + +CC=gcc +LD=gcc + +WARN_FLAGS = -Wall -Wextra +STD_FLAG = -std=c99 + +ifeq ($(BUILD_TYPE),debug) +BUILDDIR := .build/debug +DEBUG_FLAG = -g +STRIP_FLAG = +OPTI_FLAG = -O0 +else +BUILDDIR := .build/release +DEBUG_FLAG = +STRIP_FLAG = -s +OPTIFLAG = -O3 +endif + +CFLAGS := $(CFLAGS) $(WARN_FLAGS) $(STD_FLAG) $(OPTI_FLAG) $(DEBUG_FLAG) +LDFLAGS := $(LDFLAGS) $(STRIP_FLAG) + +OBJDIR := $(BUILDDIR)/objs +$(shell mkdir -p $(OBJDIR)) + +SRCS=$(wildcard *.c) +OBJS=$(patsubst %.c,$(OBJDIR)/%.o,$(SRCS)) + +DEPDIR := $(BUILDDIR)/deps +$(shell mkdir -p $(DEPDIR)) +DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Td +POSTCOMPILE = mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d + +$(BINARY_NAME): $(OBJS) + @echo "[LD ] $@" + @$(LD) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@ + +$(OBJDIR)/%.o: %.c $(DEPDIR)/%.d + @echo "[C ] $*" + @$(CC) $(DEPFLAGS) $(CFLAGS) -c $< -o $@ + @$(POSTCOMPILE) + +$(DEPDIR)/%.d: ; + +.PRECIOUS: $(DEPDIR)/%.d + +include $(wildcard $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRCS)))) + +clean: + @echo "[CLN]" + -@rm -r $(BUILDDIR) + -@rm $(BINARY_NAME) + +disassemble: $(BINARY_NAME) + objdump -d $< | less + +symbols: $(BINARY_NAME) + objdump -t $< | sort | less diff --git a/TP2/exo1/exo1.c b/TP2/exo1/exo1.c new file mode 100644 index 0000000..27ff6b9 --- /dev/null +++ b/TP2/exo1/exo1.c @@ -0,0 +1,44 @@ +#include + +void permuter (int T[], int n, int i1, int i2) { + int tmp = T[i1]; + T[i1] = T[i2]; + T[i2] = tmp; +} + +int i_min(int T[], int n, int d) { + int min = d; + for (int i = d+1; i < n; i++) { + if (T[i] < T[min]) { + min = i; + } + } + return min; +} + +void SelecEch(int T[], int n) { + int imin, d = 0; + while (d < n-1) { + imin = i_min(T, n, d); + permuter(T, n, d, imin); + d++; + } +} + +void AfficheTab(int T[], int n) { + for (int i = 0; i < n; i++) { + printf("valeur a index=%d=%d\n", i, T[i]); + } +} + +int main() { + int T[6] = {2, 5, 3, 1, 4, 6}; + + AfficheTab(T, 6); + + SelecEch(T, 6); + + AfficheTab(T, 6); + + return 0; +} -- 2.34.1