Programmation en C les tableaux

Tom -  
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,

Je souhaite comparer les caractères de deux tableaux les un après les autres et afficher les caractères qui se ressemble.

Ici je souhaite comparer le tableau voyelle qui contient (a,e,i,o,u,y,) au tableau nom celui-ci contient le nom tapez ultérieurement par l'utilisateur du programme.

Exemple: nom=tom

Comparer tom à a,e,i,o,u,y

resultat: les deux tableau ont comme caractere(s) identique: o.

Voici mon code:
#include<stdio.h> 
#include <string.h> 
main() 
{ 
     char nom[20],prenom[20]; 
     int i,n; 
void main(){char voyelle[7]; 
Chaine[0]= 'a'; 
Chaine[1]= 'e'; 
Chaine[2]= 'i'; 
Chaine[3]= 'o'; 
Chaine[4]= 'u'; 
Chaine[5]= 'y'; 
Chaine[6]= '\0';} 
  printf("Tapez vote nom et prenom: \n"); 
  scanf("%s %s",&nom,&prenom);       
  i=0; 
  n=0; 
  while(nom[i]!=0) 
  i++; 
  while(prenom[n]!=0) 
  n++; 
  printf("Votre nom comporte: %d lettres et votre prenom: %d lettres", i,n); 
   
  // strcmp(nom,voyelle)  ??? 
   
  fflush(stdin); 
  getchar();     
} 


A voir également:

3 réponses

mcdavis Messages postés 12 Statut Membre 6
 
Je crois :
char voyelleEnCommun[]; 
int j, k, l=0; 
for(j=i;j>0;j--) { // pour chaque lettre du nom 
    for(k=0;k<6;k++) { // on test chaque voyelles 
    if(nom[i] == voyelle[k]) { 
        voyelleEnCommun[l] = voyelle[k]; // On note la voyelle en commun 
        l++;                                             //  dans un tableau 
     } else 
         ; 
     } 
    } // on a tester toutes les lettres du mot 

for(;l>0;l--) // l le nombre ee voyelles en commun 
printf("%c ,", voyelleEnCommun[l]); // affiche les voyelles trouver 
printf(" sont presentes dans votre nom"); 
}
1
fiddy Messages postés 11653 Statut Contributeur 1 847
 
char voyelleEnCommun[];
Tu as oublié de déclarer la taille du tableau.

if(nom[i] == voyelle[k]) {
C'est quoi i ? l plutôt non ?
0
mcdavis Messages postés 12 Statut Membre 6
 
effectivement :
char voyelleEnCommun[i+1];// nombre de lettre du nom
et pour le if c'est nom[j] car c'est la lettre du nom qu'on est entrain de tester
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
char voyelleEnCommun[i+1];// nombre de lettre du nom
C'est quoi le i ?
0
mcdavis Messages postés 12 Statut Membre 6
 
le i c'est Tom qui l'avait codé, c'est le nombre de lettre du nom
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Ah ok je vois.
Dans ce cas, for(j=i;j>0;j--), il vaut mieux commencer à i-1, sinon tu commences avec '\0'. Certes rien de dramatique.

Sinon pour Tom,
Si tu utilises cet algorithme, n'oublie pas de mettre ton compilateur en ISO C99, sinon cela ne fonctionnera pas. Ou alors utilise malloc pour faire déclarer le tableau.
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Bonjour,

Plusieurs remarques :

main() -> int main (void)

Tu peux directement déclarer ton tableau de voyelle en une ligne :
char voyelle[]="aeiou";

void main(){ ???
Attention tu déclares une fonction dans une fonction (de même nom en plus).

Pour le scanf, je te conseille :
scanf("%19s %19s",nom,prenom);


Pour le nombre de lettre, tu peux utiliser directement la fonction strlen.
strlen(nom) qui te renverra le nombre de caractères.

Pour évaluer le nombre de voyelles, tu peux faire :
for(i=0; i < strlen(voyelle) + 1; i++)  
   if ( strchr(nom, voyelle[i]) )  
       printf("voyelle commune : \n", voyelle[i]); 

A partir de ça, tu peux

fflush(stdin);
A ne jamais utiliser.

Et enfin n'oublie pas : "return 0;" juste après ton dernier getchar();

Cordialement,

Google is your friend
1
mcdavis Messages postés 12 Statut Membre 6
 
Juste une petite erreur :
printf("Voyelle en commun : %c \n", voyelle[i]);
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Très juste :-).
0
Tom
 
Merci à tous et désolé pour le code affreux :D
0