All pastes #577126 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-06-19 19:55 UTC
rendered paste body
#include <stdio.h>

int
main (void)
{
  int i = 0;
  char buf[256];
  char n1[64], n2[64];
  int nb, nb1, nb2;
  int test = 0;
  char *p, *p2, *ret;

  printf("Entrer le nombre\n");
  /** on regarde la chaine de caractère correspondant au nombre saisie **/
  scanf("%s", &buf);

  /** on attribue un pointeur à buf                                                          
      *p correspond à buf[0] au depart                                                       
      **/
  p = buf;

  /** on attribue un pointeur aussi à buf **/
  p2 = buf;

  /** on boucle jusqu'à tend qu'on tombe sur autre chose que des nombres, tout en            
      faisant evolué le pointeur                                                             
  **/
  while ((isdigit(*p)) && (*p != 0))
    p++;

  /** on verifie bien que *p c'est un / **/
  if (*p == '/')
    {
      /** entre le debut de la chaine de caractère et le /, on enregistre, cette portion     
          de chaine de caractère dans une variable n1 correspondant au numérateur            
      **/
      strncpy(n1, p2, p - p2);

      /** on transforme la chaine de caractère n1 en nombre **/
      nb1 = atoi(n1);

      /** on attribue le nombre 1 à test pour dire que le nombre est une fraction **/
      test = 1;
    }

  /** on fais evolue le pointeur pour enlever le / **/
  p++;

  /** apres le / et la fin de la chaine de caractère, on enregistre, cette portion de chaine
      de caractère dans une variable n2 correspondant au dénominateur **/
  strncpy(n2, p, p - p2);

  /** on transforme n2 en nombre **/
  nb2 = atoi(n2);

  /** si test n'est pas égal à 0, c'est que le nombre est une fraction **/
  if (!test)
    nb = nb1/nb2;

  /** sinon la chaine de caractère correspond tout simplement à un nombre à par entière **/
  else
    nb = atoi(buf);

  return 0;
}