Programmation en C les tableaux

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();     
} 


3 réponses

  1. 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. Contributeur
      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 ?
    2. 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
    3. Contributeur
      char voyelleEnCommun[i+1];// nombre de lettre du nom
      C'est quoi le i ?
    4. le i c'est Tom qui l'avait codé, c'est le nombre de lettre du nom
    5. Contributeur
      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.
  2. Contributeur
    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. Juste une petite erreur :
      printf("Voyelle en commun : %c \n", voyelle[i]);
    2. Contributeur
      Très juste :-).