Fct recursive pour convertir "123" en ch
Résolu
bibliomax
Messages postés
30
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
bonjour tout le monde j'aimerais bien que quelqu'un m'aide à résoudre un ce problème de récursivité
cette fonction prend en paramètre un tableau de caractères et un entier qui représente le nombre de ces caractères qui sont entre '0' et '9' et calcule l'entier correspondant
sachant que le dernier caractères représente le 1er chiffre l'avant dernier représente le 2ème..
voilà ce que j'ai pu faire mais c'est faux le résultat n'est pas bon
int tolnt(char *s,int nb){
if(nb>0) return (tolnt(s,nb-1) * todigit(s[nb-1]));
else return 10;
}
a l'appel par exemple tolnt("12234",5) ===> la fonction doit retourner ceci 43221
merci de votre intérêt
bonjour tout le monde j'aimerais bien que quelqu'un m'aide à résoudre un ce problème de récursivité
cette fonction prend en paramètre un tableau de caractères et un entier qui représente le nombre de ces caractères qui sont entre '0' et '9' et calcule l'entier correspondant
sachant que le dernier caractères représente le 1er chiffre l'avant dernier représente le 2ème..
voilà ce que j'ai pu faire mais c'est faux le résultat n'est pas bon
int tolnt(char *s,int nb){
if(nb>0) return (tolnt(s,nb-1) * todigit(s[nb-1]));
else return 10;
}
a l'appel par exemple tolnt("12234",5) ===> la fonction doit retourner ceci 43221
merci de votre intérêt
A voir également:
- Fct recursive pour convertir "123" en ch
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- 123 chat - Télécharger - Messagerie
- 123 solitaire - Télécharger - Cartes
- Convertir epub en kindle - Guide
- 123 pdf - Télécharger - PDF
4 réponses
Je ne réponds pas exactement à la question, car je préfère ma question ;-)
Bonne continuation.
#include <string.h> #include <stdio.h> #include <stdlib.h> int retourne(const char* chn) { char* str = strdup(chn); int i, result, lng = strlen(str); for (i=0; i<(lng)/2; i++) { char tmp = str[i]; str[i] = str[lng-1-i]; str[lng-1-i] = tmp; } result = atoi(str); free(str); return result; } int main() { char* chaine = "12234"; printf("\"%s\" -> %d\n", chaine, retourne(chaine)); return EXIT_SUCCESS; }Je te laisse donc adapter ma réponse à la tienne, Etienne ! Il est des nô-ôtres, il a codé son prog comme les au-autres ;-)
Bonne continuation.
merci de votre réponse mais c'est pas ça ce que je voulais parce que avec la méthode classique c'est facile
en plus la fonction retourne un entier et pas une chaine de caractères mais comme j'ai dit avant ça c'est à la porté de tout le monde ... les choses se complique si la fonction devrait être récursive il faut récupérer le dernier caractère le multiplier par 10 et puis l'additionner avec l'avant dernier et le processus continu
en plus la fonction retourne un entier et pas une chaine de caractères mais comme j'ai dit avant ça c'est à la porté de tout le monde ... les choses se complique si la fonction devrait être récursive il faut récupérer le dernier caractère le multiplier par 10 et puis l'additionner avec l'avant dernier et le processus continu
La méthode récursive n'est pas plus difficile que la méthode itérative...
Elle est même plus simple en fait.
Voici un exemple simple :
Elle est même plus simple en fait.
Voici un exemple simple :
#include <stdio.h> #include <string.h> int toInt(const char *s, const int nb) { if (nb>1) { return s[strlen(s)-nb]-'0'+10*toInt(s,nb-1); } else{ return s[strlen(s)-1]-'0'; } } int main(void) { char *s="12345"; printf("%d\n",toInt(s,strlen(s))); return 0; }