begin process at 2012 05 30 02:09:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

problème avec une fonction mélanger mot


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème avec une fonction mélanger mot

dimanche 20 février 2011 à 10:20:57 | problème avec une fonction mélanger mot

lewan

bonjour,

voilà j'ai écris une fonction me permettant de mélanger un mot!!
Dans un premier temps je crée un dictionnaire de mot aléatoire et dans un second temps je crée une fonction qui mélange se mot.
Je me retrouve avec un problème lors de la compilation mon mot se trouve tronqué!!
Il semble y avoir un problème dans mes boucles for où la longueur de mon mot que je souhaite calculer n'est pas mis à jour!!! auriez vous une idée???


[/code]#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#define N 5

char * un_mot(){

int i;
char *dico[N]= {"maison", "mitochondrie", "escherichia", "institut", "programation"}; //remplissage de notre tableau de mot


srand((unsigned int) time(NULL));
i=rand()%N; //on choisit un chiffre aléatoire compris entre o et N-1

//printf("%s \n",dico[i]); // on affiche le mot choisi aléatoirement

return dico[i];
}


char * enlever_une_lettre(char * mot){

char *motReponse;
char motinitial[strlen(mot)+1];
strcpy(motinitial,mot);

int longueur_mot,c,i,j;
char *copieChaine;

longueur_mot=strlen(motinitial);
srand((unsigned int) time(NULL));

copieChaine=malloc(sizeof(char)*(longueur_mot+1));//on crée une chaine de caractere qui aura la même taille que notre chaine initiale
motReponse=malloc(sizeof(char));


for(i=0;i<longueur_mot;i++){
c=rand()%(longueur_mot);//on cherche à obtenir un nombre aléatoire compris etre 0 et la longueur de la chaine étudiée
copieChaine[i] =motinitial[c]; //on copie le caratere de la position aléatoire dans notre chaine copie

for(j=c;j<longueur_mot;j++){
motinitial[j]=motinitial[j+1]; //le dernier caractere de notre chaine prend la place du caratere à la position "c", ainsi à chaque tour de boucle le caratere est éliminé
//motinitial[j+1]='\0';
motinitial[longueur_mot]='\0';
}

}

printf("le mot melange: %s \n", copieChaine);

printf("votre réponse:\n");
scanf("%s",motReponse);

return 0;
}

int main(){

enlever_une_lettre(un_mot());


return 0;
}[/code]
lundi 21 février 2011 à 11:11:51 | Re : problème avec une fonction mélanger mot

Chouchou182

Salut,

Code C/C++ :
char motinitial[strlen(mot)+1];


La taille du tableau que tu déclares doit être connue à la compilation.

Allocation dynamique ?

Code C/C++ :
char * motinitial;
motinitial = malloc(sizeof (*motinitial) * (strlen(mot) + 1));


Remarque annexe : tu peux te passer d'initialiser le générateur de
nombre aléatoires (appel à srand) plusieurs fois. Une fois (par exemple
au début de main) suffit.

Bonne prog,
--
Chouchou.
lundi 21 février 2011 à 12:00:57 | Re : problème avec une fonction mélanger mot

Chouchou182

Hello,

Il y a en effet d'autres soucis plus loin.

Un algorithme linéaire de mélange de tableau (sauf faute de frappe) :

Code C/C++ :
void
melange(const char * s) {
  char * t = strdup(s);
  size_t i = 0;
  size_t r = strlen(s);
  while ( r ) {
	size_t c = rand() % r;
	char tmp = t[c];
	t[c] = t[i];
	t[i] = tmp;
	++i;
	--r;
  }
  printf("Original: %s\nMélange : %s\n", s, t);
  free(t);
}


Fonctionne comme suit.
Pour chaque case (i) du tableau, choisit une case (c) au hasard dans la suite et échange les contenus.

Bonne prog,
--
Chouchou.


Cette discussion est classée dans : int, mot, char, longueur, motinitial


Répondre à ce message

Sujets en rapport avec ce message

Hachage fermé problème de lecture [ par mcflysupersonic ] Bonjour je suis nouveau sur le forum est ceci est ma première question donc j'espère que je ne me suis pas trompé d'endroit pour poster.Voilà j'ai un Fatal signal: Segmentation Fault (SDL Parachute Deployed) [ par broks ] Je ne comprends vraiment pas pourkoa ca ne marche pas...C'est surement un probleme au niveau de la fonction saisi puisque je plante lorsque je dois sa Probleme dans mon programme password [ par Jarod1980 ] Salut tout le monde,Voilà j'ai un problème dans mon programme de password. Je m'explique: J'ai développé en premier lieu un programme où l'utilisateur Probleme dans mon prog password dans la gestion ' * ' [ par Jarod1980 ] Salut,Voila j'ai développé un programme de password qui récupère le password crypté dans un fichier et le compare au password rentré par l'utilisateur Pendu en C [ par the_kaiser ] Voila je suis débutant en C (en programmation tous cours d'ailleurs puisque le C est le premier language que je teste) et je tente de faire un pendu. aide code mot anagramme [ par sahbibenayed ] bonjour;je travaille sur borland C++;je souhaite coder un programme permattant de scanner une chaine de caractere, puis afficher dans chaque ligne les AIDE [ par alex64100 ] BOJOUR je dois coder un correcteUr d'orthographe mon code est truffé d'erreurs, j'ai du mal à les corriger svp aidez-moi #include #include #inclu Problème d allocation dynamique [ par Beqtb0x ] /*Bonjour a tous, je viens d'arriver sur ce site, je suis étudiant en première année d'informatique et j'ai un problème a un tp que même la prof n'est PUISSANCE 4 C++ [ par AlenDjavo ] salut tout le monde je suis bloque dans mon pussance 4 je n`arive pas a afficher mon tableu quelquen peux me aider svp dsl pour le fautes. exercice d'algo [ par Mjblue ] int chainehsrd( int i; int N; char Mot=''; char Mot[255]; int E=97; char L=(char)E) { for (i=0; i< char Mot[255]-1; i++)


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,092 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales