Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercices pour débutants en C (suite)

Venez vous entrainer!

    3 juillet 2010 à 12:23:17

    Oulà, je n'ai pas les conaissances requises pour le réussir ^^
    • Partager sur Facebook
    • Partager sur Twitter
      3 juillet 2010 à 12:24:11

      Citation : perimgui


      Comment ça le contacter ? C'est Lithrein qui s'en occupe ?


      Bah tu as certainement remarquer qu'il est l'auteur des derniers exos.

      Tu peux le contacter par MP, pour discuter de ton exos, et voir comment gèrer ça.
      Ensuite, le tableau du 1er post sera mis à jour, ne t'inquiètes pas.

      C'est simplement pour conserver un semblant d'organisation. :-°

      • Partager sur Facebook
      • Partager sur Twitter
      Zeste de Savoir, le site qui en a dans le citron !
        3 juillet 2010 à 12:26:45

        Oulà, l'exercice que Lithrein à posté (Zchance) est trop compliqué pour les débutants
        • Partager sur Facebook
        • Partager sur Twitter
          3 juillet 2010 à 12:29:23

          Certes, mais les débutants ne participant pas, que faire ?
          • Partager sur Facebook
          • Partager sur Twitter
            3 juillet 2010 à 12:32:22

            Ben je suis débutant mais je trouve qu'il est trop dure : on ne peut pas participer quand c'est trop dure (enfin je trouve)
            • Partager sur Facebook
            • Partager sur Twitter
              3 juillet 2010 à 13:57:52

              La norme ne s'appliquait qu'au cochon de la page precedente..

              Ensuite pour les exos ouais, on va tenter de poster des exos plus simples, faut que jevoie ca avec Lithrein ;)
              • Partager sur Facebook
              • Partager sur Twitter
                3 juillet 2010 à 14:07:44

                Citation : Adroneus

                La norme ne s'appliquait qu'au cochon de la page precedente..


                Toujours moi qui doit faire des codes spéciaux hein !

                Voila mon code pour le zBinary, je sais ce que vous allez me dire, on pouvais faire plus simple, mais c'était pour essayer d'utilisé un peu les opérateurs bitwise.

                char		*dec2bin(int n)
                {
                	char	*binary;
                	int	max;
                	int	i;
                
                	i = max = 0;
                	while ((2 << max) <= n)
                		++max;
                	binary = malloc(max + 1);
                	while (max >= 0)
                		{
                			if (n >= (1 << max))
                				{
                					binary[i] = '1';
                					n = n - (1 << max);
                				}
                			else
                				binary[i] = '0';
                			--max;
                			++i;
                		}
                	binary[i] = '\0';
                	return (binary);
                }
                
                • Partager sur Facebook
                • Partager sur Twitter
                  3 juillet 2010 à 14:19:52

                  Citation : perimgui


                  Oulà, l'exercice que Lithrein à posté (Zchance) est trop compliqué pour les débutants


                  non...
                  Les exos plus simples tu les trouves dans le tuto ou par centaines sur le net, donc aucuns intérêt.

                  Mon avis, je ne suis plus concerné... :)
                  Pour proposer des exos, il faut au moins être à l'aise avec le tuto C du site qui présente seulement le minimum...
                  • on s'intéresse aux exos déjà proposés pour éviter les redites
                  • on ne propose pas d'exo si on est pas capable de faire les exos précédents

                  Les exos précédents sont simples pour la plupart, normalement c'est juste de l'entrainement.

                  Avec un peu d'effort c'est très accessible, quelque soit l'exercice.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Zeste de Savoir, le site qui en a dans le citron !
                    3 juillet 2010 à 14:44:03

                    Oui mais plusieurs execrcices on tété posté et ne sont pas finis.

                    Sinon, je ne comprends pas bien ce code :

                    #include <stdio.h>
                    #include <stdlib.h>
                    #include <time.h>
                    
                    time_t
                    vendredi_13 (void) {
                        /* Votre code ici */
                    }
                    
                    int
                    main (void) {
                        
                        time_t vendredi = vendredi_13();
                        struct tm date = *localtime(&vendredi);
                        char const * const jours[] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
                        char const * const mois[] = {"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"};
                        
                        printf("%s %d %s %d\n", jours[date.tm_wday], date.tm_mday, mois[date.tm_mon], 1900+date.tm_year);
                        
                        return EXIT_SUCCESS;
                    }
                    




                    Et encore une question : il faut bien que l'utilisateur entre la date d'aujourd'hui non ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 juillet 2010 à 14:48:52

                      Citation : perimgui


                      Oui mais plusieurs execrcices on tété posté et ne sont pas finis.


                      un seul -> Zgrep
                      pour le reste tout est dans l'énoncé" et dans le topic dédié.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Zeste de Savoir, le site qui en a dans le citron !
                        3 juillet 2010 à 14:53:08

                        Et zIdentificator alors ? Il n'est pas fini que zchance est arrivé.

                        Et je maintient que c'est trop difficile de faire zchance ... j'ai même pas un début d'idée.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          3 juillet 2010 à 14:55:48

                          Parce que tu cherche pas, si t'allais lire les docs de time.h u en aurais un ;) quant a zIdentificator, c'est pas un Exo pour debutant.. c'est un exo qu'on m'a demande d'epingler la... Il est pas "officiel" si tu veux
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 juillet 2010 à 14:56:34

                            zIdentificator est un exercice proposé sur le forum par candide, et qui n'a aucun rapport avec ce topic. ;)

                            Les exercices ici sont répertoriés dans le premier post.

                            Si tu le souhaites, rein ne t'empêche de faire comme candide.
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Zeste de Savoir, le site qui en a dans le citron !
                              3 juillet 2010 à 15:00:17

                              En fait je me demande pourquoi on se fait chier à essayer de proposer des trucs alors que c'est contesté de partout et que personne ne fait les exos (je parle des débutants).
                              Pourquoi ne pas clore tout simplement les exercices pour débutants (bah oui ils sont pas intéressés...) et faire uniquement des exercices pour gens plus avancés ? Au moins ça donnera envie aux gens qui font les exos d'avoir un minimum de challenge, plutôt que de poster un code fait en 5 minutes à peine.
                              Comme ça les débutants pourront dire "les exercices sont trop durs" et là on sera d'accord, mais on ne leur donnera pas d'exercices.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 juillet 2010 à 15:04:03

                                Je peux faire épingler des exercices ? J'en ai deux mais je pense que vous les trouverez trop facile. Enfin pour des débutants comme moi, c'est du bon niveau.

                                @pouet_forever (si ça s'écrit comme ça ^^ ) Non, ne le prends pas mal : en faite : on ne les conteste pas tant que ça... Et non, je suis contre le fait de clore ce topic qui est précis seulement, il faudrait mettre plusieurs niveau de difficulté.

                                La doc de time.h ? Elle se trouve où ?

                                Et si, les exercices sont interressant !
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 juillet 2010 à 15:09:25

                                  MP moi pour qu'on discute des exos si tu veux ;)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    3 juillet 2010 à 15:10:49

                                    Citation : perimgui


                                    La doc de time.h ? Elle se trouve où ?



                                    En fait, pas besoin de <time.h> pour cet exo.

                                    Tu connais le nombre de jours dans une semaine?
                                    tu connais le nombre de jour dans un mois?
                                    tu connais la définition d'une année bissextile?

                                    l'exo est fini...
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Zeste de Savoir, le site qui en a dans le citron !
                                      3 juillet 2010 à 21:38:12

                                      Voici mon code pour zTri ;).
                                      #include <stdio.h>
                                      #include <stdlib.h>
                                      #include <string.h>
                                      #include <time.h>
                                      
                                      void		swap(unsigned int *a, unsigned int *b);
                                      size_t		my_strlen(char const * const str);
                                      int		my_atoi(char *nbstr);
                                      char		my_read(void);
                                      char		*my_readstr(void);
                                      void		*xmalloc(size_t size);
                                      void		*xrealloc(void *ptr, size_t size);
                                      unsigned int	*create_tab(size_t n);
                                      unsigned int	*tri_insertion(unsigned int *tab, size_t n);
                                      unsigned int	*tri_selectif(unsigned int *tab, size_t n);
                                      unsigned int	*tri_bulle(unsigned int *tab, size_t n);
                                      
                                      void		swap(unsigned int *a, unsigned int *b)
                                      {
                                      	*a ^= *b;
                                      	*b ^= *a;
                                      	*a ^= *b;
                                      }
                                      
                                      size_t	my_strlen(char const * const str)
                                      {
                                      	size_t	i;
                                      
                                      	i = 0;
                                      	while (str[i])
                                      		++i;
                                      	return (i);
                                      }
                                      
                                      int	my_atoi(char *nbstr)
                                      {
                                      	size_t i;
                                      	int nb;
                                      	int pow;
                                      
                                      	nb = 0;
                                      	i = my_strlen(nbstr) - 1;
                                      	pow = 1;
                                      	while (nbstr[i])
                                      		{
                                      			nb += (nbstr[i] - 48) * pow;
                                      			pow *= 10;
                                      			--i;
                                      		}
                                      	return nb;
                                      }
                                      
                                      char	my_read(void)
                                      {
                                      	char	c;
                                      
                                      	return ((fread(&c, 1, 1, stdin)) ? c : 0);
                                      }
                                      
                                      char	*my_readstr(void)
                                      {
                                      	size_t	i;
                                      	char	*buff;
                                      
                                      	buff = xmalloc(BUFSIZ);
                                      	i = 0;
                                      	while(((buff[i] = my_read()) != '\n') && i <= BUFSIZ)
                                      		++i;
                                      	buff[i] = '\0';
                                      	if (xrealloc(buff, strlen(buff) + 1) == NULL)
                                      		exit(EXIT_FAILURE);
                                      	return (buff);
                                      }
                                      
                                      void	*xmalloc(size_t size)
                                      {
                                      	void *ptr;
                                      
                                      	if ((ptr = malloc(size)) == NULL)
                                      		{
                                      			fprintf(stderr, "Virtual memory exhausted\n");
                                      			exit(EXIT_FAILURE);
                                      		}
                                      	return (ptr);
                                      }
                                      
                                      void	*xrealloc(void *ptr, size_t size)
                                      {
                                      	if (realloc(ptr, size) == NULL)
                                      		{
                                      			fprintf(stderr, "Virtual memory exhausted\n");
                                      			exit(EXIT_FAILURE);
                                      		}
                                      	return (ptr);
                                      }
                                      
                                      unsigned int	*create_tab(size_t n)
                                      {
                                      	size_t i;
                                      	unsigned int *tab;
                                      
                                      	i = 0;
                                      	tab = malloc(n * sizeof(int));
                                      	while (i < n)
                                      			tab[i++] = rand();
                                      	return (tab);
                                      }
                                      
                                      unsigned int	*tri_insertion(unsigned int *tab, size_t n)
                                      {
                                      	size_t i;
                                      	size_t j;
                                      	size_t x;
                                      
                                      	i = 1;
                                      	while (i < n)
                                      		{	
                                      			x = tab[i];
                                      			j = i;
                                      			while ((j > 0) && (tab[j - 1] > x))
                                      				{
                                      					tab[j] = tab[j - 1];
                                      					--j;
                                      				}
                                      			tab[j] = x;
                                      			++i;
                                      		}
                                      
                                      	return (tab);
                                      }
                                      
                                      unsigned int	*tri_selectif(unsigned int *tab, size_t n)
                                      {
                                      	size_t i;
                                      	size_t j;
                                      	size_t min;
                                      
                                      	i = 0;
                                      	while (i < (n - 1))
                                      		{
                                      			min = i;
                                      			j = i + 1;
                                      			while (j < n)
                                      				{
                                      					if (tab[j] < tab[min])
                                      						min = j;
                                      					++j;
                                      				}
                                      			if (min != i)
                                      				{
                                      					swap(&tab[i], &tab[min]);
                                      				}
                                      			++i;
                                      		}
                                      
                                      	return (tab);
                                      }
                                      
                                      unsigned int	*tri_bulle(unsigned int *tab, size_t n)
                                      {
                                      	size_t i;
                                      	int no_exchange;
                                      
                                      	no_exchange = 0;
                                      	while (!no_exchange)
                                      		{
                                      			no_exchange = 1;
                                      			i = 0;
                                      			while (i < (n - 1))
                                      				{
                                      					if (tab[i] > tab[i + 1])
                                      						{
                                      							swap(&tab[i], &tab[i + 1]);
                                      							no_exchange	=	0;
                                      						}
                                      					++i;
                                      				}
                                      			n--;
                                      		}
                                      	return (tab);
                                      }
                                      
                                      
                                      int	main(void)
                                      {
                                      	size_t n;
                                      	int time_start, time_end;
                                      
                                      	srand(time(NULL));
                                      	printf("Combien d'éléments voulez-vous trier ? ");
                                      	n = my_atoi(my_readstr());
                                      
                                      	printf("Tri à insertion en cours ........ ");
                                      	time_start = time(NULL);
                                      	tri_insertion(create_tab(n), n);
                                      	time_end = time(NULL);
                                      	printf("%3d secondes\n", (time_end - time_start));
                                      
                                      	printf("Tri à selection en cours ........ ");
                                      	time_start = time(NULL);
                                      	tri_selectif(create_tab(n), n);
                                      	time_end = time(NULL);
                                      	printf("%3d secondes\n", (time_end - time_start));
                                      
                                      	printf("Tri à bulles en cours ........... ");
                                      	time_start = time(NULL);
                                      	tri_bulle(create_tab(n), n);
                                      	time_end = time(NULL);
                                      	printf("%3d secondes\n", (time_end - time_start));
                                      
                                          return (0);
                                      }
                                      


                                      Et celle pour le zStrcapitalize :D.
                                      int	isupper(const int c)
                                      {
                                      	return (c > 64 && c < 91);
                                      }
                                      
                                      int	islower(const int c)
                                      {
                                      	return (c > 96 && c < 123);
                                      }
                                      
                                      int	tolower(const int c)
                                      {
                                      	return ((isupper(c)) ? c + 32 : c);
                                      }
                                      
                                      int	toupper(const int c)
                                      {
                                      	return ((islower(c)) ? c - 32 : c);
                                      }
                                      
                                      void	*xmalloc(size_t size)
                                      {
                                      	void *ptr;
                                      
                                      	if ((ptr = malloc(size)) == NULL)
                                      		{
                                      			fprintf(stderr, "Virtual memory exhausted\n");
                                      			exit(EXIT_FAILURE);
                                      		}
                                      	return (ptr);
                                      }
                                      
                                      size_t	my_strlen(char const * const str)
                                      {
                                      	size_t i;
                                      
                                      	i = 0;
                                      	while (str[i])
                                      		++i;
                                      	return (i);
                                      }
                                      
                                      char	*strcapitalize(char *str)
                                      {
                                      	char *new_str;
                                      	size_t i;
                                      
                                      	i = 0;
                                      	new_str = xmalloc(my_strlen(str) + 1);
                                      	while (str[i])
                                      		{
                                      			if (!i)
                                      				new_str[i] = toupper(str[i]);
                                      			else
                                      				new_str[i] = tolower(str[i]);
                                      			++i;
                                      		}
                                      	new_str[i] = '\0';
                                      	return (new_str);
                                      }
                                      
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        3 juillet 2010 à 22:07:00

                                        J't'ai dit de faire une fonction swap --"
                                        vas faire un tour du cote de ctype.h et fais gaffe a la norme_p
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          3 juillet 2010 à 22:21:16

                                          Je comprend pas oui et y'a quoi dans ctype.h ?
                                          Si c'est pour le strCapitalize, il dise que toute les fonctions qu'on utilises doivent être recodé ;).

                                          Je modif pour la fonction swap.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            3 juillet 2010 à 22:23:40

                                            Citation : bestpig

                                            Je comprend pas oui et y'a quoi dans ctype.h ?
                                            Si c'est pour le strCapitalize, il dise que toute les fonctions qu'on utilises doivent être recodé ;).

                                            Je modif pour la fonction swap.


                                            C'est vrai que pour cet exo, il était demandé de ne pas employer les fonctions de <ctype.h> ;)

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Zeste de Savoir, le site qui en a dans le citron !
                                              3 juillet 2010 à 22:29:49

                                              Arf eh bien refais les ^^ , parce que c'est mal vu qu'au milieu d'un code tu aies des valeurs comme ca sans qu'on sache trop a quoi ca correspond (enfin moi je vois ca mal ^^ )
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                3 juillet 2010 à 22:57:06

                                                Voila j'ai refait les fonction isupper, islower, tolower, toupper.
                                                Ca simplifie le code du tout, car il met en majuscule que si c'est une minuscule.
                                                Donc plus besoin de faire les test, si c'est la première lettre, alors toupper, sinon tolower ;).
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  4 juillet 2010 à 2:12:50

                                                  Pour isupper et islower t'as pas besoin des ternaires ;)
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    4 juillet 2010 à 3:26:39

                                                    bestpig > Ce n'est pas très "idiomatique" d'écrire c > 64 , c'est mieux d'écrire c >= 'A' . Pour 32 c'est 'a'-'A'.


                                                    Citation : Adroneus

                                                    Pour isupper et islower t'as pas besoin des ternaires ;)

                                                    Ni pour toupper et islower (mais c'est plus dur).
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      4 juillet 2010 à 9:51:37

                                                      Tout en ne conservant qu'une seule ligne et en respectant son indentaion? Hum.. J'vois pas ^^ comment tu f'rais? (j'dois pas etre reveille --' )
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        4 juillet 2010 à 11:50:42

                                                        Je vois pas comment je peut faire islower et isupper en 1 ligne sans ternaire.
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          4 juillet 2010 à 11:54:28

                                                          L'expression entre les parentheses va etre evaluee, et retournee, donc si c'est vrai tu retourne vrai et si c'est faux tu retourne faux (resp. 1 et 0)
                                                          int	isupper(const int c)
                                                          {
                                                          	return (c > 64 && c < 91);
                                                          }
                                                          
                                                          int	islower(const int c)
                                                          {
                                                          	return (c > 96 && c < 123);
                                                          }
                                                          
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            4 juillet 2010 à 12:07:00

                                                            Ha oui pas faux, j'y avait pas penser xD.

                                                            Je poste mon code pour le zAddition, la génération des matrices est aléatoire, hauteur et largeur sont généré aléatoirement ;).

                                                            Citation

                                                            Matrice 1 :
                                                            24 24 05 50
                                                            33 52 64 24
                                                            65 09 36 70

                                                            Matrice 2 :
                                                            23 91 90
                                                            41 10 05
                                                            37 92 67

                                                            Fusion en cours...

                                                            Matrice 3 :
                                                            24 24 05 50 23 91 90
                                                            33 52 64 24 41 10 05
                                                            65 09 36 70 37 92 67



                                                            #include <stdio.h>
                                                            #include <stdlib.h>
                                                            #include <string.h>
                                                            #include <time.h>
                                                            
                                                            typedef struct matrice {
                                                            	int *value;
                                                            	size_t height;
                                                            	size_t width;
                                                            } matrice;
                                                            
                                                            int		xrand(int a, int b);
                                                            void	*xmalloc(size_t size);
                                                            matrice	create_matrice(size_t height, size_t width);
                                                            matrice	merge_matrice(matrice mat1, matrice mat2);
                                                            void	print_matrice(matrice mat);
                                                            
                                                            int	xrand(int a, int b)
                                                            {
                                                            	return ((rand() % (b - a + 1)) + a);
                                                            }
                                                            
                                                            void	*xmalloc(size_t size)
                                                            {
                                                            	void *ptr;
                                                            
                                                            	if ((ptr = malloc(size)) == NULL)
                                                            		{
                                                            			fprintf(stderr, "Virtual memory exhausted\n");
                                                            			exit(EXIT_FAILURE);
                                                            		}
                                                            	return (ptr);
                                                            }
                                                            
                                                            matrice	create_matrice(size_t height, size_t width)
                                                            {
                                                            	struct matrice mat;
                                                            	size_t i;
                                                            	size_t j, t;
                                                            
                                                            	mat.value = xmalloc(height * width * sizeof(int));
                                                            	mat.height = height;
                                                            	mat.width = width;
                                                            	i = j = 0;
                                                            	t = 0;
                                                            	while (i < height)
                                                            		{
                                                            			j = 0;
                                                            			while (j < width)
                                                            				{
                                                            					mat.value[t] = rand() % 99;
                                                            					++t;
                                                            					++j;
                                                            				}
                                                            			++i;
                                                            		}
                                                            	return (mat);
                                                            }
                                                            
                                                            matrice	merge_matrice(matrice mat1, matrice mat2)
                                                            {
                                                            	struct matrice mat_merged;
                                                            	size_t i;
                                                            	size_t j;
                                                            	size_t a;
                                                            	size_t b;
                                                            
                                                            	mat_merged.value = xmalloc(mat1.height * mat1.width * mat2.width * sizeof(int));
                                                            	mat_merged.height = mat1.height;
                                                            	mat_merged.width = mat1.width + mat2.width;
                                                            	i = j = a = b = 0;
                                                            	while (i < mat1.height)
                                                            		{
                                                            			j = 0;
                                                            			while (j < mat_merged.width)
                                                            				{
                                                            					if (j < mat1.width)
                                                            						{
                                                            							mat_merged.value[a + b] = mat1.value[a];
                                                            							++a;
                                                            						}
                                                            					else
                                                            						{
                                                            							mat_merged.value[a + b] = mat2.value[b];
                                                            							++b;
                                                            						}
                                                            					++j;
                                                            				}
                                                            			++i;
                                                            		}
                                                            	return (mat_merged);
                                                            }
                                                            
                                                            void	print_matrice(matrice mat)
                                                            {
                                                            	size_t i;
                                                            	size_t j;
                                                            	size_t t;
                                                            
                                                            	i = j = t = 0;
                                                            	while (i < mat.height)
                                                            		{
                                                            			j = 0;
                                                            			while (j < mat.width)
                                                            				{
                                                            					printf("%.2d ", mat.value[t]);
                                                            					++t;
                                                            					++j;
                                                            				}
                                                            			printf("\n");
                                                            			++i;
                                                            		}
                                                            	printf("\n");
                                                            }
                                                            
                                                            int	main(void)
                                                            {
                                                            	matrice	matrix1;
                                                            	matrice	matrix2;
                                                            	matrice	matrix_f;
                                                            	size_t	heigth;
                                                            
                                                            	srand(time(NULL));
                                                            	heigth = xrand(1, 5);
                                                            
                                                            	matrix1 = create_matrice(heigth,  xrand(1, 5));
                                                            	matrix2 = create_matrice(heigth, xrand(1, 5));
                                                            
                                                            	printf("Matrice 1 :\n");
                                                            	print_matrice(matrix1);
                                                            	printf("Matrice 2 :\n");
                                                            	print_matrice(matrix2);
                                                            
                                                            	printf("Fusion en cours...\n\n");
                                                            	matrix_f = merge_matrice(matrix1, matrix2);
                                                            
                                                            	printf("Matrice 3 :\n");
                                                            	print_matrice(matrix_f);
                                                                return (0);
                                                            }
                                                            
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              4 juillet 2010 à 18:57:09

                                                              Pour upper et lower, on remarque que 'a' - 'A' = 32; et que 32 est une puissance de 2 : pour passer des majuscules aux minuscules il suffit de mettre le bit de poids 32 à 1.
                                                              int _tolower(int c)
                                                              {
                                                                  return c | 32;
                                                              }
                                                              int _toupper(int c)
                                                              {
                                                                  return ~(~c|32);
                                                              }
                                                              
                                                              PS : Pour toupper je ne suis pas sûr que ce soit le plus simple.
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Exercices pour débutants en C (suite)

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown