Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cours
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
jeremy.meissner
cours
Commits
90e53aaa
Verified
Commit
90e53aaa
authored
3 years ago
by
orestis.malaspin
Browse files
Options
Downloads
Patches
Plain Diff
ajout contenu anagrammes
parent
a42c6a5e
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
slides/cours_3.md
+143
-3
143 additions, 3 deletions
slides/cours_3.md
with
143 additions
and
3 deletions
slides/cours_3.md
+
143
−
3
View file @
90e53aaa
---
title
:
"
Introduction
aux
algorithmes"
date
:
"
2021-10-06"
---
# Quelques algorithmes simples
##
Voyons q
uelques algorithmes supplémentaires
##
Q
uelques algorithmes supplémentaires
-
Remplissage d'un tableau et recherche de la valeur minimale
...
...
@@ -135,7 +140,142 @@ boucle (ind < SIZE-1) {
*
Afficher le résultat trié;
*
Vérifier algorithmiquement que le résultat est bien trié.
# Un type de tableau particulier
## Les chaînes de caractères
```
C
string = tableau + char + magie noire
```
# Le type `char`{.C}
-
Le type
`char`
{.C} est utilisé pour représenter un caractère.
-
C'est un entier 8 bits signé.
-
En particulier:
-
Écrire
```
C
char c = 'A';
```
-
Est équivalent à:
```C
char c = 65;
```
-
Les fonctions d'affichage interprètent le nombre comme sa valeur ASCII.
# Chaînes de caractères (strings)
-
Chaîne de caractère
`==`
tableau de caractères
**terminé par la valeur**
`'\0'`
{.C} ou
`0`
{.C}.
## Exemple
```
C
char *str = "HELLO !";
char str[] = "HELLO !";
```
Est représenté par
|
`H`
|
`E`
|
`L`
|
`L`
|
`O`
| |
`!`
|
`\0`
|
|------|------|------|------|------|------|------|-----|
|
`72`
|
`69`
|
`76`
|
`76`
|
`79`
|
`32`
|
`33`
|
`0`
|
# Syntaxe
```
C
char name[5];
name[0] = 'P'; // = 70;
name[1] = 'a'; // = 97;
name[2] = 'u'; // = 117;
name[3] = 'l'; // = 108;
name[4] = '\0'; // = 0;
char name[] = {'P', 'a', 'u', 'l', '\0'};
char name[5] = "Paul";
char name[] = "Paul";
char name[100] = "Paul is not 100 characters long.";
```
# Fonctions
-
Il existe une grande quantités de fonction pour la manipulation de chaînes de caractères dans
`string.h`
.
-
Fonctions principales:
```C
// longueur de la chaîne (sans le \0)
size_t strlen(char *str);
// copie jusqu'à un \0
char *strcpy(char *dest, const char *src);
// copie len char
char *strncpy(char *dest, const char *src, size_t len);
// compare len chars
int strncmp(char *str1, char *str2, size_t len);
// compare jusqu'à un \0
int strcmp(char *str1, char *str2);
```
-
Pour avoir la liste complète:
`man string`
.
. . .
## Quels problèmes peuvent se produire avec `strlen`, `strcpy`, `strcmp`?
# Les anagrammes
## Définition
Deux mots sont des anagrammes l'un de l'autre quand ils contiennent les mêmes
lettres mais dans un ordre différent.
## Exemple
|
`t`
|
`u`
|
`t`
|
`u`
|
`t`
|
`\0`
|
` `
|
` `
|
|------|------|------|------|------|------|------|-----|
|
`t`
|
`u`
|
`t`
|
`t`
|
`u`
|
`\0`
|
` `
|
` `
|
## Problème: Trouvez un algorithme pour déterminer si deux mots sont des anagrammes.
# L
a fin
# L
es anagrammes
## Des questions?
## Il suffit de:
1.
Trier les deux mots.
2.
Vérifier s'ils contiennent les mêmes lettres.
```
C
void tri(char tab[]);
int strlen(char mot[]) {
int i = 0;
while (mot[i] != '\0') {
i++;
}
return i;
}
bool is_equal(char mot1[], char mot2[]) {
if (strlen(mot1) != strlen(mot2)) {
return false;
}
for (int i = 0; i < strlen(mot1); ++i) {
if (mot1[i] != mot2[i]) {
return false;
}
}
return true;
}
int main() {
char mot1[] = "tutut";
char mot2[] = "tutut";
printf("%s et %s ", mot1, mot2);
tri(mot1);
tri(mot2);
boll anagramme = is_equal(mot1, mot2);
if (anagramme) {
printf("sont des anagramme!");
} else {
printf("ne sont pas des anagramme!");
}
}
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment