diff --git a/data/observations.csv b/data/observations.csv new file mode 100644 index 0000000..1623a0a --- /dev/null +++ b/data/observations.csv @@ -0,0 +1,309 @@ +21.9842 +21.7581 +20.3317 +19.5654 +18.4387 +18.1895 +17.9179 +18.4969 +18.5817 +18.7231 +19.0235 +19.1551 +18.503 +18.1866 +18.4088 +18.5614 +18.9263 +19.8182 +19.6392 +19.448 +20.3961 +20.856 +20.0111 +19.7122 +19.6393 +20.2044 +20.6745 +20.9641 +20.987 +21.4181 +22.0903 +22.9011 +23.1856 +23.1438 +24.5059 +23.8048 +23.7439 +23.7864 +23.6277 +23.5784 +24.3131 +24.2345 +24.0506 +25.2879 +24.5417 +24.416 +24.0499 +24.8416 +26.1848 +26.059 +26.278 +25.947 +24.57 +25.7953 +26.1772 +21.637 +20.8044 +21.2202 +21.4483 +21.3265 +21.4522 +22.1567 +21.2005 +21.8201 +21.8922 +21.2829 +21.691 +21.9073 +21.8999 +22.4921 +23.091 +22.9029 +21.78 +22.3628 +21.782 +22.8817 +23.2461 +22.5977 +22.5249 +22.9437 +23.2262 +23.6612 +22.0035 +22.2962 +21.4614 +21.0843 +20.862 +20.5839 +21.0559 +20.75 +20.0175 +21.08 +22.2855 +21.7719 +21.8775 +20.715 +21.7389 +20.9424 +21.0288 +20.6347 +20.5185 +19.557 +19.5903 +19.8005 +20.0054 +18.9145 +17.5569 +18.2497 +18.9768 +18.913 +17.7473 +17.5332 +16.8433 +17.0894 +16.5124 +16.8723 +16.8382 +17.8679 +17.2709 +16.8711 +16.9977 +17.2664 +17.6355 +17.7124 +17.4833 +18.1532 +18.0147 +18.3091 +18.1614 +18.0731 +17.7743 +17.6733 +17.8462 +17.6158 +17.0086 +17.0413 +16.7688 +15.9408 +15.8146 +16.7554 +17.2173 +17.1845 +16.7648 +16.9685 +16.6086 +16.777 +16.2856 +16.8755 +17.5664 +17.1563 +17.0222 +17.1949 +17.0234 +18.0512 +18.2109 +18.3833 +18.5936 +18.0192 +16.7518 +16.9765 +16.6521 +17.1186 +16.9276 +16.735 +16.6417 +16.5475 +16.319 +17.1544 +17.1258 +16.782 +16.574 +15.7363 +15.8822 +16.246 +16.6573 +17.3642 +18.1907 +18.9223 +19.3984 +19.3214 +19.7454 +19.0246 +18.6678 +18.5537 +18.434 +18.295 +18.7623 +19.1416 +18.423 +19.2333 +16.9295 +16.1695 +15.7126 +15.11 +15.6375 +16.2298 +16.0105 +16.3597 +16.8983 +16.2363 +16.1087 +16.0732 +16.0866 +15.4799 +15.4901 +15.1357 +14.9419 +14.5956 +14.4675 +14.8724 +14.6566 +14.7395 +14.306 +14.2899 +14.5299 +13.658 +13.9283 +13.9814 +13.8731 +14.3818 +14.4888 +13.9376 +13.2164 +12.4192 +12.6536 +12.5945 +12.472 +13.0177 +12.9878 +13.1938 +12.8169 +13.0 +13.4272 +14.3676 +14.5086 +14.6899 +14.6603 +15.2235 +14.9401 +14.678 +14.1578 +13.7841 +13.7414 +14.0257 +13.9266 +13.633 +13.6662 +13.7461 +13.7733 +14.1807 +13.6857 +12.8259 +12.8045 +12.0804 +11.9076 +11.8925 +12.1878 +11.4473 +11.7443 +11.9018 +11.8522 +10.9605 +10.0606 +10.0322 +10.0922 +9.7514 +9.5414 +9.9665 +9.0947 +8.4189 +7.8427 +7.8709 +7.8952 +8.0466 +8.2845 +8.3503 +8.6805 +8.4318 +8.0374 +7.6969 +7.7813 +8.2339 +8.3929 +8.9659 +8.9943 +8.9255 +8.1654 +8.0587 +8.2914 +8.1901 +8.6859 +9.4245 +8.8442 +8.5382 +8.8773 +9.0943 +9.4174 +9.532 +9.5271 +10.0768 +9.9917 +9.9453 +10.0757 +9.7374 +10.1048 +9.8322 +10.2562 +10.987 +11.6205 diff --git a/data/production.csv b/data/production.csv new file mode 100644 index 0000000..6fc9a35 --- /dev/null +++ b/data/production.csv @@ -0,0 +1,52 @@ +désignation,largeur,hauteur,epaisseur,temps +Plywood,1000,500,4,58.4795321637427 +Hardwood,1000,600,16,66.3900414937759 +MDF,1200,2000,10,128 +Particleboard,1100,1000,2,80.9248554913295 +Plywood,900,700,8,63.3663366336634 +Hardwood,1900,1000,14,116 +MDF,300,1600,2,73.5009671179884 +Plywood,2000,1500,3,141.129032258065 +Hardwood,1100,1500,8,105.263157894737 +MDF,2000,1400,14,131.528046421663 +Particleboard,1000,2000,19,115.606936416185 +Plywood,1100,300,10,54.368932038835 +Hardwood,1600,300,2,75.2475247524752 +MDF,400,1600,13,79.2079207920792 +Plywood,1700,1300,18,117.1875 +Hardwood,800,1400,16,86.105675146771 +Plywood,1200,700,17,73.5009671179884 +Hardwood,1200,1500,19,105.675146771037 +MDF,1700,1900,9,147.540983606557 +Plywood,1400,1200,14,106.122448979592 +Hardwood,1700,1300,10,124.48132780083 +MDF,1800,1600,12,137.931034482759 +Particleboard,800,1300,14,81.0810810810811 +Hardwood,100,800,9,35.7852882703777 +MDF,1300,1100,16,95.6175298804781 +Particleboard,1300,100,12,55.5555555555556 +Plywood,1300,1000,2,91.2698412698413 +Hardwood,1200,2000,11,129.292929292929 +MDF,500,200,5,28.8659793814433 +Plywood,1400,200,17,62.5 +Hardwood,600,1000,5,62.015503875969 +MDF,1800,1900,8,145.669291338583 +Particleboard,300,200,8,19.8807157057654 +Plywood,800,500,14,50.5836575875486 +Hardwood,1800,1500,5,126.923076923077 +MDF,1400,600,8,77.8210116731518 +Plywood,1100,1900,14,123.456790123457 +Hardwood,1800,1800,13,141.176470588235 +MDF,800,500,4,50.9803921568627 +Particleboard,1700,1100,5,112.676056338028 +Plywood,1900,700,3,105.476673427992 +Hardwood,2000,2000,6,156.555772994129 +MDF,400,500,4,36 +Plywood,1700,1700,6,136.82092555332 +Hardwood,1100,1200,15,93.4959349593496 +MDF,800,600,18,56.5656565656566 +Particleboard,900,600,15,60.3621730382294 +Plywood,1200,1300,12,99.601593625498 +Hardwood,900,500,11,54.2635658914729 +MDF,1800,1200,13,116.731517509728 +Plywood,1300,1300,17,107.883817427386 diff --git a/string.md b/string.md index 1554e2f..05873a1 100644 --- a/string.md +++ b/string.md @@ -154,7 +154,9 @@ stdlib.h : fonctions pour gérer la conversion de type numérique en chaîne de #### Longueur d'une chaîne de caractères +```c size t strlen(const char *str); +``` Cette fonction va nous permettre de récupérer la taille de n'importe quelle chaîne de caractères sans compter le '\0' final. La fonction retourne un size t (entier long non signé) et prend en paramètre une chaîne de caractères. @@ -225,9 +227,11 @@ printf (" Apres : %s\n", dest ) ; Ces fonctions renvoient l'adresse de l'information recherchée en cas de succès, sinon le pointeur NULL. -- char *strchr(const char *s, int c); : elle permet de rechercher un caractère dans une chaîne. Elle renvoie un pointeur sur ce caractère. Si le caractère est présent plusieurs fois, elle renvoie un pointeur sur la première occurrence ; -- char *strrchr(const char *s, int c); : la même que précédemment mais retourne un pointeur sur la dernière occurrence ; -- char *strstr(const char *s1, const char *s2); : elle permet de savoir si s2 est inclue dans s1. Si elle trouve elle renvoie un pointeur sur la position dans s1. Son rˆole est donc de rechercher des sous-chaînes. +- `char *strchr(const char *s, int c);` : elle permet de rechercher un caractère dans une chaîne. Elle renvoie un pointeur sur ce caractère. Si le caractère est présent plusieurs fois, elle renvoie un pointeur sur la première occurrence ; + +- `char *strrchr(const char *s, int c);` : la même que précédemment mais retourne un pointeur sur la dernière occurrence ; + +- `char *strstr(const char *s1, const char *s2);` : elle permet de savoir si s2 est inclue dans s1. Si elle trouve elle renvoie un pointeur sur la position dans s1. Son rˆole est donc de rechercher des sous-chaînes. #### Conversion de chaîne de caractères en valeur numérique diff --git a/td1.c b/td1.c new file mode 100644 index 0000000..e69de29 diff --git a/td1.md b/td1.md new file mode 100644 index 0000000..e69de29 diff --git a/td2.md b/td2.md new file mode 100644 index 0000000..c62c735 --- /dev/null +++ b/td2.md @@ -0,0 +1,77 @@ + + +```C +#include + +float calculMoyenne(int tab[5]) { + int somme = 0; + for (int i = 0 ; i < 5 ; i++) { + somme = somme + tab[i]; + } + //return somme / 5; // 2 entiers -> entiers + //return somme / 5.0; // 1 entier 1 float -> float + return (float)somme / 5; // cast conversion de type +} + +float calculMoyenneN(int tab[], int nb) { + int somme = 0; + for (int i = 0 ; i < nb ; i++) { + somme = somme + tab[i]; + } + return (float)somme / nb; // cast conversion de type +} + +void main() { + + puts("Test de la fonction calculMoyenne"); + int t1[5] = { 1, 1, 1, 1, 1 }; + float r1 = calculMoyenne(t1); + printf("Attendu 1 ; calculé %f\n", r1); + + int t2[5] = { 1, 2, 3, 4, 5 }; + float r2 = calculMoyenne(t2); + printf("Attendu 3 ; calculé %f\n", r2); + + int t3[5] = { 11, 8, 7, 13, 3 }; + float r3 = calculMoyenne(t3); + printf("Attendu 8,4 ; calculé %f\n", r3); + + //exit(0); + + puts("Quelle est la taille du tableau"); + int taille; + scanf("%d", &taille); + int tableau[taille]; // variable-length array (VLA) + // fonctionne que sur les versions récentes des compilateurs + + int *tableauP; // Un pointeur = une entrée sur une zone mémoire + tableauP = malloc(taille * sizeof(int)); + // sizeof(int) = 4 octets + // tableau 5 cases x 4 = 20 octets + + puts("Bonjour entrer des valeurs :"); + + int p = 0; + int q = 1; + + for (int i = 0 ; i < taille ; i++) { + tableau[i] = 0; + } + + while (1) { + int valeur; + scanf("%d", &valeur); + if (valeur < 0) break; + printf("valeur saisie = %d\n", valeur); + tableau[p] = valeur; + p++; + if (p == taille) p = 0; + + float moyenne = calculMoyenneN(tableau, q); + if (q < taille) q++; + printf("Moyenne = %f\n", moyenne); + } + + free(tableauP); +} +``` diff --git a/td3.md b/td3.md new file mode 100644 index 0000000..74a0922 --- /dev/null +++ b/td3.md @@ -0,0 +1,11 @@ +### Travaux dirigés n° 3 + +1. Ouvrir le fichier [observations.csv](data/observations.csv) en lecture + +2. Parcourir toutes les lignes du fichier + +3. Mémoriser la valeur minimale et la valeur maximale + +4. Calculer la moyenne et la variance de l'échantillon de données. + +5. Afficher les resultats. diff --git a/td4.md b/td4.md new file mode 100644 index 0000000..52f7391 --- /dev/null +++ b/td4.md @@ -0,0 +1,3 @@ +# Travaux dirigés n° 4 + +Séparer les 4 colonnes du fichier export.csv en 4 fichiers indépendants : A.csv B.csv C.csv et D.csv diff --git a/td5.md b/td5.md new file mode 100644 index 0000000..64b8365 --- /dev/null +++ b/td5.md @@ -0,0 +1,17 @@ +# Travaux dirigés n° 5 + +Un machine outil de découpe génère tous les jours un fichier récapitulatif du travail effectué. + +Écrire un programme en C qui va lire le fichier _production.csv_ et effectuer des calculs statistiques. + +Lire la totalité du fichier : Afficher à la fin de la lecture afficher le périmètre total, ainsi que le volume total de découpe. + +Pour chaque ligne calculer la vitesse vl de découpe en fonction du périmètre seul et la vitesse vv en fonction du volume. + +Calculer la vitesse vl maximale et minimale, la vitesse vv maximale et minimale de l'ensemble des lignes. + +Répondre à la question suivante : La vitesse de découpe est fonction de ... + +Proposer une structure qui permet de stocker les information du fichier csv au format binaire en ajoutant aux colonnes existantes le périmètre et le volume. + +Écrire un deuxième programme qui demande à l'utilisateur un nombre compris entre 1 et 45. Lire le fichier binaire en vous positionnant (fonction fseek) à la ligne renseignée par l'utilisateur. Lire 5 lignes d'un coup et afficher le périmètre moyen ainsi que le volume moyen de ces 5 lignes. Recommencer la demande, si l'utilisateur entre un nombre négatif sortir du programme. diff --git a/td6.md b/td6.md new file mode 100644 index 0000000..e69de29