Inverser une chaîne de caractères à l'aide d'une fonction récursive
Je suis actuellement étudiant de C et je ne peux pas obtenir au-delà de cet exercice. Je dois créer une fonction récursive pour inverser string1
en string2
. Voici mon code. Je serais heureux de vous remercie de votre aide.
#include <stdio.h>
#define MAX 100
void reverse(char s1[],char s2[],int n,int j);
int main()
{
char string1[MAX]="How Are You Mate";
char string2[MAX]="";
int n=0;
int i=0;
int j=0;
for(i=0;string1[i]!='#include <stdio.h>
#define MAX 100
void reverse(char s1[],char s2[],int n,int j);
int main()
{
char string1[MAX]="How Are You Mate";
char string2[MAX]="";
int n=0;
int i=0;
int j=0;
for(i=0;string1[i]!='\0';i++)
n++;
reverse(string1,string2,n,j);
printf("String-a normal:\n%s\n",string1);
printf("String-a reverse:\n%s\n",string2);
return 0;
}
void reverse(char s1[],char s2[],int n,int j)
{
if(n>0)
{
s2[j]=s1[n];
reverse(s1,s2,n-1,j+1);
}
else
s2[j]='\0';
}
';i++)
n++;
reverse(string1,string2,n,j);
printf("String-a normal:\n%s\n",string1);
printf("String-a reverse:\n%s\n",string2);
return 0;
}
void reverse(char s1[],char s2[],int n,int j)
{
if(n>0)
{
s2[j]=s1[n];
reverse(s1,s2,n-1,j+1);
}
else
s2[j]='#include <stdio.h>
#define MAX 100
void reverse(char s1[],char s2[],int n,int j);
int main()
{
char string1[MAX]="How Are You Mate";
char string2[MAX]="";
int n=0;
int i=0;
int j=0;
for(i=0;string1[i]!='\0';i++)
n++;
reverse(string1,string2,n,j);
printf("String-a normal:\n%s\n",string1);
printf("String-a reverse:\n%s\n",string2);
return 0;
}
void reverse(char s1[],char s2[],int n,int j)
{
if(n>0)
{
s2[j]=s1[n];
reverse(s1,s2,n-1,j+1);
}
else
s2[j]='\0';
}
';
}
qu'est-ce que
Le code ne compile bien,le problème c'est que cela ne marche pas montrer tous les caractères lorsque j'imprime le 2 chaîne.
s2[] représente la deuxième chaîne
l'exercice de mentionner tout avantage que vous pourriez obtenir de l'aide d'une fonction récursive pour inverser une chaîne de caractères en C, dont les "chaînes" ne peuvent pas être retournés facilement et donc ne correspondent pas à ce modèle très bien?
Il dit la même chose que vous avez dit.À l'aide d'une fonction récursive ne pas faire un programme plus rapide,mais encore il vous demande un exercice avec une fonction récursive.Je ne peux pas avancer sans la résolution de cet exercice.
s2[]
pour?Le code ne compile bien,le problème c'est que cela ne marche pas montrer tous les caractères lorsque j'imprime le 2 chaîne.
s2[] représente la deuxième chaîne
l'exercice de mentionner tout avantage que vous pourriez obtenir de l'aide d'une fonction récursive pour inverser une chaîne de caractères en C, dont les "chaînes" ne peuvent pas être retournés facilement et donc ne correspondent pas à ce modèle très bien?
Il dit la même chose que vous avez dit.À l'aide d'une fonction récursive ne pas faire un programme plus rapide,mais encore il vous demande un exercice avec une fonction récursive.Je ne peux pas avancer sans la résolution de cet exercice.
OriginalL'auteur Lind | 2013-03-10
Vous devez vous connecter pour publier un commentaire.
L'inversion commence par la copie de la
n
-ème caractère destring1
tableau dansstring2
. Len
-ème caractère se trouve être le terminateur null. Il devient le premier caractère de votre nouvelle chaîne, la chaîne semble vide de tout standard C routines, y comprisprintf
.Appel
de la
main
devrait résoudre le problème. La condition de l'reverse
doit être modifié à partirif(n>0)
àif(n>=0)
ainsi.Je n'ai pas mis n-1 sur la fonction, mais j'ai déclaré int n=-1.Comme pour le n>=0 ce qui était nécessaire grâce.
Départ
n
à-1
serait trop de travail. Par ailleurs, vous pouvez déposer la déclaration dej
demain
, parce qu'il est affecté à zéro, et n'est pas modifié après que, de sorte que vous pouvez passer0
que votre dernier paramètre dereverse
pour le même effet.OriginalL'auteur dasblinkenlight
en place (l'appelant pouvait faire une copie de la chaîne avant l'appel de cette fonction) de la chaîne inverse avec tail-recursion
O, si vous ne voulez pas les pointeurs:
Mais pouvez-vous expliquer à votre professeur?
Je fixe ma solution originale,et oui je le comprends,même si je dois lire les pointeurs de nouveau parce que je n'ai pas une idée claire sur eux.
OriginalL'auteur wildplasser
Bien qu'il n'a pas enregistrer la chaîne résultante n'importe où, vous avez l'idée.
OriginalL'auteur Michal Rus
J'ai corrigé le programme. Vous trouverez les modifications ci-dessous
OriginalL'auteur kriya
je recommande l'utilisation de la bibliothèque , de la taille=strlen(array) en lieu et place de
de compter le nombre de caractères dans l'arra
OriginalL'auteur Martin Voroňák