[C][Minuscules/majuscules]

salemgaaloul Messages postés 1 Statut Membre -  
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   -
URGENT !! Svp. c un exercice que j'ai pas trouver la solution.
comment ecrire une fonction qui fait la conversion d'uun caractère miniscule en un caractère majuscule en langage C. ?
sans utiliser la fonction toupper( ).
merci.

7 réponses

  1. kmanber Messages postés 546 Date d'inscription   Statut Membre 256
     
    tu prend les codes ascii
    a=97
    A=65
    donc 97 devient 65

    ca revient à soustraire 32, il faut quand même controler l'intervale et tenir compte de lettres accentuées

    http://www.lookuptables.com/

    voilà l'exemple inverse, à toi de l'adapter

    #include <stdio.h>
    #include <stdlib.h>

    void
    minuscule(char s[])
    {
    int index;

    /* la chaîne est parcourue par index */
    for (index= 0; s[index] != '\0'; index++)
    /* si le caractère à la position index est majuscule*/
    if (s[index] >= 'A' && s[index] <= 'Z')
    /* le remplacer par son équivalent en minuscule */
    s[index]= s[index] - 'A' + 'a';
    }

    char salut[]= "chaine de caractère à traiter\n";

    int main(void)
    {
    minuscule(salut);
    puts(salut);
    return EXIT_SUCCESS;
    }

    bonne chance
    10
  2. MetaHack Messages postés 20 Statut Membre 32
     
    de Minuscules ---> majuscules avec la notion de pointeur en C

    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    char* majuscule(char *s)
    {
    char *p;
    for (p=s;*p;p++)
    if (*p >= 'a' && *p <= 'z')
    *p=*p +'A'-'a';// ou bien -32
    return s;
    }
    main()
    {
    char s1[65];
    printf("donner une chaine s1: ");
    gets(s1);
    printf("la chaine en majuscule :");
    puts(majuscule(s1));
    getch();
    }
    5
  3. firefoo
     
    Pourquoi se casser la tête ?

    #include <stdio.h> 
    
    int main(void) 
    { 
         char a; 
    
         while ( a != '\n' ) 
         { 
             scanf("%c", &a); 
             printf("%c", a - 32); 
         } 
         printf("\n"); 
         return 0; 
    } 
    
    4
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Et pourquoi déterrer un topic avec un programme moins bon que ceux proposés ? Pour info il ne faut jamais faire une comparaison avec une variable non initialisée. Et aussi ne pas oublier de vider le flux clavier.
      0
  4. metamaroc.com
     
    de Minuscules ---> majuscules avec la notion de pointeur en C

    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    char* majuscule(char *s)
    {
    char *p;
    for (p=s;*p;p++)
    if (*p >= 'a' && *p <= 'z')
    *p=*p +'A'-'a';// ou bien -32
    return s;
    }
    main()
    {
    char s1[65];
    printf("donner une chaine s1: ");
    gets(s1);
    printf("la chaine en majuscule :");
    puts(majuscule(s1));
    getch();
    }
    2
    1. scercro
       
      *p=*p -'A'+'a';
      0
      1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > scercro
         
        Non !
        De minuscule en majuscule, c'est bien : *p += 'A' - 'a';
        0
    2. the don
       
      #include<stdio.h>
      #include<stdlib.h>
      main()
      {
      char s[100];
      int i=0;
      printf("entrez une chaine \t");
      gets(s);
      while(s[i]!='\0')
      {
      if(97<=s[i])
      s[i]-=32;
      i++;}

      puts(s);
      system("pause");
      }
      0
    3. the don
       
      voila c plus simple ;)
      0
    4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Je trouve que *p='A' - 'a' bien plus simple en plus d'être plus lisible.
      En plus tu ne vérifies pas la borne inférieure !
      La fonction gets() ne doit pas être utilisée. On utilise plutôt la fonction fgets...
      Et enfin, le post date de plus de deux ans...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   50
     
    Bonsoir,
    bien que le sujet date déjà je poste juste ceux code alternatif au tien (@Max)

    
    /* Mise en majuscule */
    char f_UpChar(char c){
    	
    	return ( ((c)>='a') && ((c)<='z') ? ((c)-'a' + 'A') : (c) );
    }
    
    /* Mise en Miniscule */
    char f_DownChar(char c){
    	
    	return ( ((c)<='A') && ((c)<='Z') ? ((c)-'A' + 'a') : (c) );
    } 
    
    
    1
  7. hssissen Messages postés 844 Date d'inscription   Statut Membre Dernière intervention   50
     
    UPCASE()?
    0
  8. Max
     
    Une fonction qui fait le boulo en 2 lignes :

    char min(char car){
    return ((car<'A') || (car>'Z')) ? (car) : (car+32);
    }

    Merci K&R
    0