Je me suis mis à la programmation sous C depuis quelques semaines seulement, et suis bloqué sur un exercice :
Sans utiliser de pointeur, Ecrire la fonction partie_presente qui retourne 1 si une chaîne de caractère est présente dans une autre chaine de caractères et 0 sinon. Les deux chaînes seront passées en paramètre de la fonction.
J'ai beau tourné le problème dans tous les sens, je n'arrive pas, je suis un novice, et c'est ma première de mande sur le forum, espérant ne pas l'avoir déposé dans le mauvais endroit, et espérant une aide de votre part.
D'avance merci.
#include<stdio.h>
#include<string.h>
/* c'est du langage C */
int partie_presente(char ch1 [], char ch2[])
{
int i=0, j=0, k=0;
int h=0, ps=0;
printf("Entrez une chaîne de caractères: ");
fgets(ch1,1000,stdin);
printf("Entrez la séquence recherchée: ");
fgets(ch2,1000,stdin);
char tmp[strlen(ch2)];
for(i=0; i<strlen(ch1); i++)
{
for(j=i; j<strlen(ch2) ; j++)
{
strncpy(tmp, ch1,strlen(ch2));
h=strcmp(tmp,ch2);
}
if(h==0)
{
ps=1;
}
}
if(ps==1)
printf("La séquence est présente\n");
else
printf("La séquence n'est pas présente\n");
return ps;
}
int main()
{
char ch1[1000], ch2[1000];
partie_presente(ch1, ch2);
return 0;
}
Ecrire la fonction partie_presente qui retourne 1 si une chaîne de caractère est présente dans une autre chaine de caractères et 0 sinon. Les deux chaînes seront passées en paramètre de la fonction.
Bon déjà tu ne respectes pas ce qui est demandé, Tu dois envoyer les chaînes de caractère en argument à la fonction et non pas les saisir dans la fonction ! Et la fonction doit juste renvoyer 1 si ch2 et présente dans ch1, c'est tout, elle ne doit rien afficher !
Met ça en ordre avant de continuer !
Ensuite, ton procédé me semble mal barré, normalement tu n'as pas besoin de calculer les longueur de chaîne (strlen), ni de faire de copie (strncpy, ni de comparaison de chaîne (strcmp), seulement des comparaisons de caractères.
Je viens de le faire j'ai utilisé des boucles while car ça me semble plus simple, à toi de voir.
Tout d'abord, merci pour cette réponse rapide et pour vos indications.
J' ai saisi la demande et la saisie de la chaine dans la fonction car au fait, ceci est une partie d'un long exercice. Donc j'ai tronqué l'exercice et j'ai ajouté la demande et la saisie de la chaine dans la fonction pour que ceci soit clair.
Une remarque : la chaine 1 est plus longue que la chaine 2, et la chaine 2 ne contient pas un seul caractère mais une partie ( un mot, une phrase ....)
J'ai tout essayé (sans pointeur, comme ceci a été demandé) depuis 3 jours sans résultat, et je me suis tourné vers ce forum espérant de l'aide car je ne vois toujours pas mes erreurs.
Une seule boucle while contenant 2 lignes (dont un ternaire), 4 ou 5 lignes sinon.
Rouloude a raison, tu sembles parti dans un truc compliqué pour quelque chose de très très simple. Prend une feuille et un crayon, et demande toi comment savoir si "salut" est dans "54sjtPOsalutOIUehd6"
Je cherche le 's' de "salut" :
'5' n'est pas un 's'
'4' n'est pas un 's'
's' est un 's'
maintenant je cherche le 'a'
'j' n'est pas un 'a', je cherche de nouveau le 's'
...
Bonne continuation.
Edit : il faut savoir quelle chaîne doit être trouvée dans laquelle, mais la taille des chaînes n'y fait rien si la "contenante" est plus petite que la "contenue", le résultat sera la même que si la contenue n'est pas présente dans la contenante.
Ensuite, ton procédé me semble mal barré, normalement tu n'as pas besoin de calculer les longueur de chaîne (strlen), ni de faire de copie (strncpy, ni de comparaison de chaîne (strcmp), seulement des comparaisons de caractères.
Je viens de le faire j'ai utilisé des boucles while car ça me semble plus simple, à toi de voir.
Une remarque : la chaine 1 est plus longue que la chaine 2, et la chaine 2 ne contient pas un seul caractère mais une partie ( un mot, une phrase ....)
J'ai comme l'impression que c'est plus un problème d'algorithmique que de C. Il faut commencer par réfléchir à comment faire, avant de de faire feu de tout bois avec n'importe quoi comme code.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Tu dois envoyer les chaînes de caractère en argument à la fonction et non pas les saisir dans la fonction !
A quoi servent les paramètres de la fonction si tu fais les saisies dans la fonction !!!
Edit :
Ligne 26 tu testes quoi ? Je crois que tu n'as pas compris l'utilisation des fonctions. Ce n'est pas de la sorte que l'on récupère le retour d'une fonction !
Commence petit , je reprends avec "salut" est-il dans "5sOsalOsalut6" ? :
je prend la première lettre de "salut", le 's', si je ne trouve même pas la première lettre, aucune chance d'y trouver le mot au complet.
Tant que je n'arrive pas à la fin de l'une des 2 chaînes :
la 1ère lettre de "5sOsalOsalut6" est elle égale à la 1ère lettre de "salut" ? non, je continue à chercher le 's'
la 2ième de "5sOsalOsalut6" est elle égale à la 1ère de "salut" ? oui, je passe à la lettre suivante le 'a'
la 3ième de "5sOsalOsalut6" est elle égale à la 2ième de "salut" ? non, je reprend au 's'
la 4ième de "5sOsalOsalut6" est elle égale à la 1ère de "salut" ? oui, je passe à la lettre suivante le 'a'
la 5ième de "5sOsalOsalut6" est elle égale à la 2ième de "salut" ? oui, je passe à la lettre suivante le 'l'
la 6ième de "5sOsalOsalut6" est elle égale à la 3ième de "salut" ? oui, je passe à la lettre suivante le 'u'
la 7ième de "5sOsalOsalut6" est elle égale à la 4ième de "salut" ? non, je reprend au 's'
la 8ième de "5sOsalOsalut6" est elle égale à la 1ère de "salut" ? oui, je passe à la lettre suivante le 'a'
la 9ième de "5sOsalOsalut6" est elle égale à la 2ième de "salut" ? oui, je passe à la lettre suivante le 'l'
la 10ième de "5sOsalOsalut6" est elle égale à la 3ième de "salut" ? oui, je passe à la lettre suivante le 'u'
la 11ième de "5sOsalOsalut6" est elle égale à la 4ème de "salut" ? oui, je passe à la lettre suivante le 't'
la 12ième de "5sOsalOsalut6" est elle égale à la 5ième de "salut" ? oui, je passe à la lettre suivante le '\0'
fin de l'une des deux chaînes trouvée, la boucle s'arrête.
si j'ai atteint le '\0' du mot que je cherche, c'est que j'ai trouvé ce mot, sinon, c'est que je suis arrivé à la fin de "5sOsalOsalut6" sans avoir trouvé toutes les lettres de "salut"
Bonne continuation.
EDIT : je ne t'ai pas tout dit, il pourrait y avoir 2 's' de suite dans la chaînes "contenante", il y a une ptite astuce .
l'erreur c'est ta méthode : avant de penser à commencer à coder il faut avoir un algo, ce que tu n'as pas et du coup tu cherches vaguement à tâtonner pour que ton programme tombe presque par hasard en marche.
pour toutes les positions i de ch1 qui contiennent un caractère faire
tant que le caractère en position i dans ch1 est le même que celui en position i dans ch2
incrémenter i
sortir de la fonction en renvoyant 1
Ce qui ne veut rien dire.
Normalement on fait tout ça dans l'autre sens :
On écrit un algo en français que l'on implémente en C ensuite …
Toi tu ponds un code et tu essayes d'en comprendre le sens ensuite … c'est forcément voué à l'échec.
Donc conseil : arrête tout, respire un grand coup, prend du papier et un crayon et essaye de résoudre le problème à la main, puis de pondre un algo puis ensuite tu seras libre comme le vent pour pisser du code.
Commence petit , je reprends avec "salut" est-il dans "5sOsalOsalut6" ? :
je prend la première lettre de "salut", le 's', si je ne trouve même pas la première lettre, aucune chance d'y trouver le mot au complet.
Tant que je n'arrive pas à la fin de l'une des 2 chaînes :
la 1ère lettre de "5sOsalOsalut6" est elle égale à la 1ère lettre de "salut" ? non, je continue à chercher le 's'
la 2ième de "5sOsalOsalut6" est elle égale à la 1ère de "salut" ? oui, je passe à la lettre suivante le 'a'
la 3ième de "5sOsalOsalut6" est elle égale à la 2ième de "salut" ? non, je reprend au 's'
la 4ième de "5sOsalOsalut6" est elle égale à la 1ère de "salut" ? oui, je passe à la lettre suivante le 'a'
la 5ième de "5sOsalOsalut6" est elle égale à la 2ième de "salut" ? oui, je passe à la lettre suivante le 'l'
la 6ième de "5sOsalOsalut6" est elle égale à la 3ième de "salut" ? oui, je passe à la lettre suivante le 'u'
la 7ième de "5sOsalOsalut6" est elle égale à la 4ième de "salut" ? non, je reprend au 's'
la 8ième de "5sOsalOsalut6" est elle égale à la 1ère de "salut" ? oui, je passe à la lettre suivante le 'a'
la 9ième de "5sOsalOsalut6" est elle égale à la 2ième de "salut" ? oui, je passe à la lettre suivante le 'l'
la 10ième de "5sOsalOsalut6" est elle égale à la 3ième de "salut" ? oui, je passe à la lettre suivante le 'u'
la 11ième de "5sOsalOsalut6" est elle égale à la 4ème de "salut" ? oui, je passe à la lettre suivante le 't'
la 12ième de "5sOsalOsalut6" est elle égale à la 5ième de "salut" ? oui, je passe à la lettre suivante le '\0'
fin de l'une des deux chaînes trouvée, la boucle s'arrête.
si j'ai atteint le '\0' du mot que je cherche, c'est que j'ai trouvé ce mot, sinon, c'est que je suis arrivé à la fin de "5sOsalOsalut6" sans avoir trouvé toutes les lettres de "salut"
Bonne continuation.
EDIT : je ne t'ai pas tout dit, il pourrait y avoir 2 's' de suite dans la chaînes "contenante", il y a une ptite astuce .
- Edité par drx il y a environ 10 heures
Merci de votre retour, comme dit dans mon premier poste : je suis un novice et je me suis mis au C que depuis quelques semaines.
J'ai encore essayé de suivre vos recommandations , mais je bloque toujours au même endroit :
#include<stdio.h>
#include<string.h>
int partie_presente(char ch1 [], char ch2[])
{
int i=0, j=0;
for(i = 0; ch1[i] != '\0'; ++i)
{
for(j=0;ch2[j]!='\0';++j)
if (ch2[j] != ch1[i+j])
{
i=i+1;
}
}
return 0;
}
int main()
{
char ch1[1000], ch2[1000];
printf("Entrez une chaîne de caractères: ");
fgets(ch1,1000,stdin);
printf("Entrez la séquence recherchée: ");
fgets(ch2,1000,stdin);
partie_presente(ch1, ch2);
if (partie_presente)
printf("La séquence n'est pas présente\n");
else
printf("La séquence est présente\n");
return 0;
}
Bon, pour commencer, si tu mets un return 0, ta fonction va toujours retourner 0...
Voici, ce que j'ai fait :
bool strInStr(char str1[], char str2[])
{
int lire = 0,
comparer = 0;
tant que pas fin de str1 et pas fin de str2 :
{
si str1[lire] est égal à str2[comparer]
{
incrémenter lire;
}
sinon si lire>0
{
remettre lire à 0;
reprendre en début de boucle;
}
incrémenter comparer;
}
retourner : str1[lire] est un caractère de fin de chaîne;
}
Pour comprendre un peu comment ça fonctionne tu pourrais simplifier le problème dans un premier temps et essayer d'écrire (puis coder) une fonction qui vérifie si une chaîne commence par une autre, par exemple :
int commence_par(char chaine[], char prefixe[]);
renvoie 1 si chaine commence par prefixe.
Pour te donner des indices :
toujours commencer à penser aux cas «particuliers» que se passe-t-il si la longueur des deux chaines est nulle ? si seulement une des deux chaines est vide ? si prefixe est plus longue que chaine ?
une fois que tu as traité/éliminé ces cas tu peux rentrer dans le vif du sujet.
En algo ce serait qqch comme :
algo commence_par( chaine, prefixe ) → entier
// on peut partir du principe qu'avec un prefixe vide la fonction va toujours renvoyer 1
si longueur(prefix) = 0 alors
renvoyer 1
// un prefixe doit toujours être plus court que la chaine
sinon si longueur(chaine) < longueur(prefixe) alors
renvoyer 0
// si on arrive ici c'est que forcément 1 ≤ longueur(prefixe) ≤ longueur(chaine)
sinon
indice ← 0
tant que prefixe[indice] = chaine[indice] et indice<longueur(prefixe) faire
indice ← indice + 1
fin tant que
// au sortir de la boucle si indice vaut longueur(prefixe) c'est que la chaine commence par prefixe, sinon c'est qu'il y a eu un caractère différent à un moment donné
si indice = longueur(prefixe) alors
renvoyer 1
sinon
renvoyer 0
fin si
fin si
C'est un peu comme programmer en français, c'est plus clair et la traduction en C est aisée.
Essaye donc de faire ça et ensuite de le modifier pour revenir au problème initial.
Bah si tu veux te mettre à l'informatique, il y a peut-être des langages plus facile d'accès aux débutant comme python, ou son challenger qui monte en puissance → Julia.
en revanche pour le jardinage j'ai deux mains gauches pas vertes du tout ✋✋je nepourrais donc pas t'aider 😀
Ce n'est pas de la sorte que l'on récupère le retour d'une fonction !
Tu va avoir des difficultés à voir si ton code fonctionne :
partie_presente(ch1, ch2);
if (partie_presente)
printf("La séquence n'est pas présente\n");
else
printf("La séquence est présente\n");
à cause de ton code de test qui n'exploite pas le retour de la fonction. partie_presente n'est pas la valeur retourné par la fonction mais son adresse.
Tu dois impérativement corriger cela pour pouvoir tester ta fonction !
Pour récupérer le retour d'une fonction on procède ainsi :
Je trouve l'algorithme de drx un peu compliqué, du coup j'en propose un plus simple mais moins efficace (on va faire plus de comparaisons). De plus ça va me permettre de présenter la méthode que j'aime bien : partir du plus global et, ensuite, détailler. (C'est parce que l'algorithme de drx est d'entrée détaillé que je le trouve plus compliqué.)
Principe : on cherche la petite chaîne en position 0, puis en position 1, puis en position 2 et ainsi de suite. On s'arrête si on la trouve, sinon on continue.
Algorithme général :
- Si ch1 est plus petite que ch2, ch2 ne peut pas être incluse, donc on retourne Faux.
- Sinon, on cherche ch2 à chaque position possible (boucle) et, si on la trouve, on retourne Vrai.
- Si en sortie de boucle on n'a toujours rien trouvé, on retourne Faux.
Donc on peut écrire quelque chose comme :
bool partie_presente(char* ch1, int taille1, char* ch2, int taille2)
// retourne vrai si ch2 est incluse dans ch1
{
if (taille1 < taille2) return false ;
bool trouve = false ; // pour l'instant on n'a rien trouvé
int debut = 0 ; //
inf fin = /* à calculer */
for (int i = debut ; i <= fin ; i++)
{
trouve = partie_presente_n(ch1, taille1, ch2, taille 2, i)
if (trouve) break ;
}
return trouve ;
}
où 'partie_presente_n' cherche si ch2 est présente en position n. Son prototype sera donc :
bool partie_presente_n(char* ch1, int taille1, char* ch2, int taille 2, int n)
Que faut la variable 'fin' ? Mettons que ch1 fasse 20 caractères (0 à 19) et ch2 fasse 5 caractères (0 à 4). Si ch2 est tout à la fin de ch1, il est situé dans ch1 aux indices 15 à 19. Donc fin = 15. De façon générale, on aura donc :
fin = taille2 - taille1 ;
Il ne reste plus qu'à écrire la fonction 'partie_presente_n', ce qui n'est pas difficile normalement.
c'est l'explication qui semble compliquée, le code est relativement simple, comme la soluce a été lachée voici ce que j'avais:
bool strInStr(char str[], char isInStr[])
{//str is somewhere within isInStr ?
int readIndex = 0,//char read index in str / starts from begin
compIndex = 0;//char compare index in isInStr / starts from begin
//while none of strings ends
while( str[readIndex] != '\0'
&& isInStr[compIndex] != '\0')
{
if (str[readIndex] == isInStr[compIndex]) //same char
{
readIndex++; //check next char in str
}
else if(readIndex) //different and not first of str
{
readIndex = 0; //start again from 1st char of str
continue; //continue without increment : isInStr[compIndex] needs to be compared again to str[0]
}
compIndex++; //next char in isInStr to compare
}
return str[readIndex] == '\0';//success if end of str is reached
}
Robun, je pense que le prototype est imposé ! et passer la taille des chaînes de caractère à des fonctions qui travaille sur ces chaînes de caractères c'est pas top !
Edit, bon ben, je mets la mienne :
int partie_presente(char ch1[], char ch2[])
{
int i=0;
while(ch1[i]!='\0')
{
int j=0;
int k=i;
while(ch1[k]==ch2[j])
{
k++;
j++;
if(ch2[j]=='\0') return 1;
}
i++;
}
return 0;
}
Bon je poste la mienne … j'ai essayé de faire clair et pédagogique (ce qui n'est pas mon fort)
#include <stdio.h>
#include <string.h>
int partie_presente(char botte_de_foin[], char aiguille[]);
int main(void)
{
char str1[] = "salut",
str2[] = "kuFDUssalusalutFH549";
printf("\"%s\" est-il dans \"%s\" ? : %s", str1,
str2,
partie_presente(str2, str1) ? "oui" : "non");
return 0;
}
int verifier_partie_presente_position(char botte_de_foin[], size_t a_partir_de, char aiguille[], size_t longueur_aiguille);
int partie_presente(char botte_de_foin[], char aiguille[])
{
size_t longueur_botte = strlen(botte_de_foin);
size_t longueur_aiguille = strlen(aiguille);
// on commence par les cas limites
if (longueur_aiguille == 0)
return 1;
if (longueur_aiguille > longueur_botte)
return 0;
// on cherche un caractère dans botte de foin qui soit le même que le premier de aiguille
for (size_t i = 0; i <= longueur_botte - longueur_aiguille; i++) {
if ((botte_de_foin[i] == aiguille[0]) && verifier_partie_presente_position(botte_de_foin, i, aiguille, longueur_aiguille))
// si on le trouve alors on vérifie la présence d'aiguille à partir de cette position
return 1;
}
return 0;
}
int verifier_partie_presente_position(char botte_de_foin[], size_t a_partir_de, char aiguille[], size_t longueur_aiguille)
{
// on compare botte_de_foin à partir de a_partir_de avec aiguille sur une longueur longueur_aiguille
// si on ne trouve aucune différence → c'est ok, sinon c'est que c'est pas bon
// ici on a l'assurance de ne faire aucun overflow
for (size_t i = 0; i < longueur_aiguille; i++)
if (botte_de_foin[a_partir_de + i] != aiguille[i])
return 0;
return 1;
}
je ne pense pas que la phase strlen() soit utile. strlen() est un scan de chaîne, s'il faut scanner les 2 chaînes en entier pour s'épargner d'avoir à les scanner en partie, il y a paradoxe. On peut à la rigueur vérifier que les arguments sont non NULL.
De plus, il n'est pas nécessaire de multiplier l'étude des cas d'echecs (ou réussite) possibles, quand une seule formule répond à toutes à la fois. On ne demande pas à la fonction si c'est trop court ou trop long, on demande si c'est dedans. Un argument NULL serait un cas de plantage, donc on peut vérifier, mais si l'algo fonctionne quelues soient les tailles, inutile de s'en inquiétre.
Après, la logique est la même, on cherche la première lettre, une fois trouvée, on déroule les 2 mots et si on est arrivé au bout de ce qu'on cherche, c'est qu'on l'a trouvé.
Après, la logique est la même, on cherche la première lettre, une fois trouvée, on déroule les 2 mots et si on est arrivé au bout de ce qu'on cherche, c'est qu'on l'a trouvé.
- Edité par drx il y a 9 minutes
Perso j'ai plus essayé de faire pédagogique qu'idiomatique.
Merci à tous pour vos interventions et cette interréaction qui m'a semblé bien instructive.
Pour être honnête : J'ai fini par utiliser la fonction proposée par rouloude qui est courte .
N'empêche que les autres solutions étaient bonnes aussi.
Une petite histoire: Depuis mars dernier, on est confiné, déconfiné, couvre feu, présentiel, télétravail ...., j'ai 59 ans , mes enfants sont grands et sont partis (et c'est normal), ... au début on tue le temps par la lecture (je ne suis pas télé, mais du tout) , mais au bout d'un certain temps, la lecture devient imposée car rien d'autre à faire ...
Puis je me suis rappelé ma jeunesse et les années 80 , le bon vieux temps qu'être étudiant, avec la grande disquette-galette , avec du Basic puis QuickBasic, puis le Pascal et enfin le Turbo-Pascal et surtout les "goto" .... ( et ça s'arrête là pour moi).
En cherchant sur internet j'ai lu un peu partout que le langage de base est le "C" , et qui a conduit au C++ et même à Python. Je n'ai pas vérifié si c'est vrai, mais j'ai décidé de m'y mettre.
Ceci va faire fonctionner mes neurones, ne pas vieillir avant l'âge, m'occuper, et surtout trouver du plaisir (quand on arrive, bien sûr) .
En cherchant sur internet j'ai lu un peu partout que le langage de base est le "C" , et qui a conduit au C++ et même à Python.
Malheureux ! Tu cherches à déclencher une flamewar ? une guerre de religion ! 🤣
VitelAdam a écrit:
Ceci va faire fonctionner mes neurones, ne pas vieillir avant l'âge, m'occuper, et surtout trouver du plaisir (quand on arrive, bien sûr) .
Merci à vous tous.
Sérieux, essaye des langages comme python ou julia qui ont un interpréteur, ce qu'on appelle une interface REPL (Read, Eval, Print, Loop). C'est très interactif et ça devient très ludique avec les notebook html …
Jette un oeil sur jupyter que tu peux installer en local ou essayer online → https://jupyter.org/try
Que tu choisisses tel ou tel code importe peu, tu aurais eu 100 codes différents si nous avions été 100 à proposer une solution (c'est une image).
Ce qui est important est que tu comprennes ce que ça fait et l'approche utilisée pour résoudre ce problème. ça ressemblait peut-être à une blague, mais ce n'en était pas une, même au 21ième siècle, un stylo et cahier restent une très bonne solution pour se mettre les idées au clair. J'ai un cahier plein de dessins, de chiffres et de notes dans lequel j’essaie différentes approches et refait mentalement un bout de code ligne par ligne en notant les résultats... Avec l'expérience, les projets se complexifient et les notes ne sont jamais de trop.
Pour passer en résolu ça se passe tout en haut au niveau du titre de ton post, à droite.
Bonne continuation.
PS : Reste sur le C, faire soi-même sa petite cuisine est plus stimulant que de se taper le cheeseburger froid des langages haut niveau
PS : Reste sur le C, faire soi-même sa petite cuisine est plus stimulant que de se taper le cheeseburger froid des langages haut niveau
D'un autre côté, éplucher les oignons et pleurer, c'est pas toujours le pied :-) De même que faire une sauce béarnaise: elle est meilleure faite maison, mais quel boulot avant d'y arriver (oui, je cuisine). Alors oui, l'acheter toute faite, c'est pas mal quand on en trouve une bonne.
- Edité par edgarjacobs 19 janvier 2021 à 23:41:44
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
En cherchant sur internet j'ai lu un peu partout que le langage de base est le "C" , et qui a conduit au C++ et même à Python. Je n'ai pas vérifié si c'est vrai, mais j'ai décidé de m'y mettre.
La syntaxe du langage C (les accolades, les points-virgules, les nombreux opérateurs et notamment l'incrémentation par ++ et décrémentation par --, et la façon d'écrire les if, while, for, switch...) est effectivement une origine de la syntaxe de nombreux langages, dont C++, Java, JavaScript, PHP, C#.
Et le C++ a évolué à partir du C (l'inventeur de C++ travaillait vers 1980 au même endroit que l'inventeur de C) et évite de diverger inutilement de C.
Pour Python je ne connais pas trop.
En outre, C reste aussi utilisé pour écrire certains logiciels de base, comme le noyau Linux. C a été conçu pour la programmation système, c'est pour cela qu'il reste fondamental, même si on ne le voit plus guère dans les applications.
Problème chaîne sans pointeur
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Bonhomme !! | Jeu de plateforme : Prototype.
Bonhomme !! | Jeu de plateforme : Prototype.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Bonhomme !! | Jeu de plateforme : Prototype.
Bonhomme !! | Jeu de plateforme : Prototype.
Bonhomme !! | Jeu de plateforme : Prototype.
Bonhomme !! | Jeu de plateforme : Prototype.
Bonhomme !! | Jeu de plateforme : Prototype.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent