From da810b2da2158dc1b8fd0f0274f770bae9750d90 Mon Sep 17 00:00:00 2001 From: Orestis Malaspinas <orestis.malaspinas@hesge.ch> Date: Tue, 19 Jan 2021 12:20:25 +0100 Subject: [PATCH] =?UTF-8?q?exemples=20ajout=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exemples/Makefile | 12 +++++ exemples/alot_of_scanfs.c | 96 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 exemples/Makefile create mode 100644 exemples/alot_of_scanfs.c diff --git a/exemples/Makefile b/exemples/Makefile new file mode 100644 index 0000000..2c0d498 --- /dev/null +++ b/exemples/Makefile @@ -0,0 +1,12 @@ +CC=gcc +OPTIONS=-Wall -Wextra -pedantic -fsanitize=address +LIBS=-fsanitize=address -lm + +alot_of_scanfs: alot_of_scanfs.o + $(CC) -o $@ $< $(LIBS) + +alot_of_scanfs.o: alot_of_scanfs.c + $(CC) -c $^ $(OPTIONS) + +clean: + rm -f *.o alot_of_scanfs diff --git a/exemples/alot_of_scanfs.c b/exemples/alot_of_scanfs.c new file mode 100644 index 0000000..4ca876d --- /dev/null +++ b/exemples/alot_of_scanfs.c @@ -0,0 +1,96 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +// Ce programme prend en argument deux entiers se trouvant chacun +// sur une nouvelle ligne et affiche +// la somme des deux entiers en argument sur une nouvelle ligne. + +// Ex: +// 12 +// 19 +// +// 31 + +void sum_two() { + int a, b; + scanf("%d %d", &a, &b); + + printf("\n%d\n", a + b); +} + +// Ce programme prend en argument 12 nombres à virgule flottante se trouvant chacun +// sur une nouvelle ligne. Multiplie chaque nombre par deux et affiche leur somme +// sur une nouvelle ligne suivi de CHF. + +// Ex: +// 12.2 +// 45.5 +// 1.5 +// 65.1 +// 89.4 +// 567.6 +// 112.8 +// 67.0 +// 35.1 +// 112.2 +// 3.3 +// 9.8 +// +// 2243.000000 CHF + +void sum_array() { + float sum = 0.0; + for (int i = 0; i < 12; ++i) { + float a = 0.0; + scanf("%f", &a); + a *= 2.0; + sum += a; + } + + printf("\n%f CHF\n", sum); +} + +// Ce programme prend en argument 2 chaînes de caractères sur des lignes séparées (longueur max de 80), +// les sépare au milieu et retourne les 4 chaînes chacune sur une nouvelle ligne +// (si la longueur N est paire on sépare en 2 chaînes de longueur N/2, sinon la première +// aura une longueur de N/2 et la seconde N/2+1). + +// Ex: +// abcdefgh +// asdfghjkl +// +// abcd +// efgh +// asdf +// ghjkl + +void split_mid() { + char str_one[2][41], str_two[2][41]; + for (int j = 0; j < 2; ++j) { + char str[81]; + scanf("%s", str); + int n = strlen(str); + int n1 = n / 2; + int n2 = n - n1; + for (int i = 0; i < n1; ++i) { + str_one[j][i] = str[i]; + } + str_one[j][n1] = '\0'; + for (int i = 0; i < n2; ++i) { + str_two[j][i] = str[n1 + i]; + } + str_two[j][n2] = '\0'; + } + printf("\n"); + for (int j = 0; j < 2; ++j) { + printf("%s\n", str_one[j]); + printf("%s\n", str_two[j]); + } +} + +int main() { + sum_two(); + sum_array(); + split_mid(); +} \ No newline at end of file -- GitLab