IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

pb tab entier et tab caracteres


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut pb tab entier et tab caracteres
    bonjour a tous,

    voila mon probleme aujourd'hui est en fait d'echanger certains caracteres dans un tableau de caracteres a certaines positions stocke dans un tableau d'entier , sauf erreur elle echange uniquement le tab[0] alors que les echanges sont verifies.
    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    int   *pos;
      int   *pos1;
      int   i;
      int   j;
     
      i = 0;
      j = 0;
      write(1, tab, size);
      my_putchar('\n');
      pos = search_point(size ,tab);
      pos1 = calcul(pos); // tab entier du style tab[0] = 0 tab[1]= 7 ......
      while (j < 12)
        {
          pos1[j] = i;
          my_putstr("ok");
          tab[i] = 'x';
          my_putchar(tab[i]);
          j++;
        }
      my_putchar('\n');
      my_putstr(tab);

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par aimad41
    voici le code:
    C'est possible d'avoir du code qui compile ?

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut ok
    c'est tout simple par exemple ma chaines de caracteres c'est celle-ci

    "bonjour......bienv.e.nue ds..ts..l.es"
    il faut remplacer les points par des 'x'
    la fonction search_pos chercher les positions des ..
    la fonction calcul stocke les positions dans un tab entier.
    c'est tout ca tient dans un main

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Je ne comprends pas pourquoi tu utilises des fonctions supplémentaires.

    On pourrait avoir le code de tes fonctions calcul et et search_point pour y avoir un peu plus clair.

    Tu ne peux pas parcourir ta chaine en une seule fois et remplacer directement ?

    Pourquoi il y a un i<12 dans ton while ?
    Pourquoi tu utilises un while avec un j++ alors qu'un for serait plus approprié ? (même si c'est équivalent)

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut ok
    okvoila le code complet, quand aux for, je ne sait pas encore l'utiliser mais le principe est le meme.
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    #include <stdlib.h>
    #include <fcntl.h>
     
    //fct qui retourne la position possible des 'x'
    int     *search_point(int size, char *aff)
    {
      int   *pos;
      int   i;
      int   p;
     
      i = 0;
      p = 0;
      pos = malloc(sizeof (int) * strlen(aff));
      if (aff == NULL)
        my_putstr("echec malloc\n");
      write(1, aff, size);
      my_putchar('\n');
      while (aff[i] != '\0')
        {
          if (aff[i] == '.')
            {
              pos[p] = i;
              p++;
            }
          i++;
        }
      p -= 1;
      while (p >= 0)
        {
          printf("Position possible de x trouver: %d\n", pos[p]);
          p--;
        }
      printf("retour effectue de search_point \n");
      return(pos);
    }
    //fct qui retourne le nbre de caracteres par ligne , ou si il n'y a que 1 ligne retourne 0
    int     search_line(char *aff)
    {
      int   pos;
      int   p;
     
      pos = 0;
      p = 0;
      while (aff[pos] != '\0')
        {
          if (aff[pos] == '\n')
            {
              p++;
            }
          pos++;
        }
      pos = 0;
      while (aff[pos] != '\n')
        {
          pos++;
        }
      printf("valeur totale de pos == %d\n", pos);
      if (p >= 1)
        return(pos + 1);
      else
        return(0);
    }
    //fct qui remplace les . par des 'x' aux positions stockes dans le tableau de search_point
    void    point(int size, char *tab)
    {
      int   *pos;
      int   i;
      int   j;
     
      i = 0;
      j = 0;
      write(1, tab, size);
      my_putchar('\n');
      pos = search_point(size ,tab);
      while (j < 12)
        {
          pos1[j] = i;
          my_putstr("ok");
          tab[i] = 'x';
          my_putchar(tab[i]);
          j++;
        }
      my_putchar('\n');
      my_putstr(tab);}
     
    int     main(int ac, char **av)
    {
      int   rd;
      char  *tab;
      tab = malloc(sizeof(*tab) *(200));
      rd = read(0, tab, 1000);
      if (rd == -1)
        my_putstr("Could not read properly the file\n");
      else
        point(rd, tab);
    }
    voila

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par aimad41
    okvoila le code complet,
    Tu as donc un problème de compilation, c'est ça ?
    Project : Forums
    Compiler : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums2\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `search_point':
    main.c:14: warning: implicit declaration of function `strlen'
    main.c:16: warning: implicit declaration of function `my_putstr'
    main.c:18: warning: implicit declaration of function `my_putchar'
    main.c:31: warning: implicit declaration of function `printf'
    main.c: In function `point':
    main.c:78: error: `pos1' undeclared (first use in this function)
    main.c:78: error: (Each undeclared identifier is reported only once
    main.c:78: error: for each function it appears in.)
    main.c: At top level:
    main.c:87: warning: unused parameter 'ac'
    main.c:87: warning: unused parameter 'av'
    Process terminated with status 1 (0 minutes, 3 seconds)
    3 errors, 6 warnings

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut ok
    non aucune erreur de compilation je rectifie le code sur quelque variables, les fonctions sont dans ma lib donc.......

    voici le code corrige:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    #include <stdlib.h>
    #include <fcntl.h>
     
    //fct qui retourne la position possible des 'x'
    int     *search_point(int size, char *aff)
    {
      int   *pos;
      int   i;
      int   p;
     
      i = 0;
      p = 0;
      pos = malloc(sizeof (int) * strlen(aff));
      if (aff == NULL)
        my_putstr("echec malloc\n");
      write(1, aff, size);
      my_putchar('\n');
      while (aff[i] != '\0')
        {
          if (aff[i] == '.')
            {
              pos[p] = i;
              p++;
            }
          i++;
        }
      p -= 1;
      while (p >= 0)
        {
          printf("Position possible de x trouver: %d\n", pos[p]);
          p--;
        }
      printf("retour effectue de search_point \n");
      return(pos);
    }
    //fct qui retourne le nbre de caracteres par ligne , ou si il n'y a que 1 ligne retourne 0
    int     search_line(char *aff)
    {
      int   pos;
      int   p;
     
      pos = 0;
      p = 0;
      while (aff[pos] != '\0')
        {
          if (aff[pos] == '\n')
            {
              p++;
            }
          pos++;
        }
      pos = 0;
      while (aff[pos] != '\n')
        {
          pos++;
        }
      printf("valeur totale de pos == %d\n", pos);
      if (p >= 1)
        return(pos + 1);
      else
        return(0);
    }
    //fct qui remplace les . par des 'x' aux positions stockes dans le tableau de search_point
    void    point(int size, char *tab)
    {
      int   *pos;
      int   i;
      int   j;
     
      i = 0;
      j = 0;
      write(1, tab, size);
      my_putchar('\n');
      pos = search_point(size ,tab);
      while (j < 12)
        {
          pos[j] = i;
          my_putstr("ok");
          tab[i] = 'x';
          my_putchar(tab[i]);
          j++;
        }
      my_putchar('\n');
      my_putstr(tab);}
     
    int     main(int ac, char **av)
    {
      int   rd;
      char  *tab;
      tab = malloc(sizeof(*tab) *(200));
      rd = read(0, tab, 1000);
      if (rd == -1)
        my_putstr("Could not read properly the file\n");
      else
        point(rd, tab);
    }
    j''aurez pu simplifier le code et dire s'il rencontre un '.' qu'il le remplace par 'x' mais par la suite , je vais cimpliquer le code de facon a ce que les x soit par pair de 2 ou 3 ou 4 ect.... c'est pour cette raisonque je stocke les positions possible de x dans un tableau et ma fonction calcul va definir par la suite, les positions necessaires au bon respect de ce que je demande.

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par aimad41
    non aucune erreur de compilation je rectifie le code sur quelque variables, les fonctions sont dans ma lib donc.......
    Et on est censés deviner ce qu'il y a dans ta lib ? Désolé, mais quand j'ai passé mon bac, y'avait pas d'option voyance...

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/05/2013, 10h11
  2. tab[] = "mail", echo tab[] me renvoit "1ail"
    Par eilijah dans le forum Langage
    Réponses: 2
    Dernier message: 08/12/2008, 12h20
  3. Probleme Insert entiers - chaine de caracteres
    Par keub51 dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/02/2007, 20h13
  4. Réponses: 3
    Dernier message: 02/10/2006, 00h05
  5. OnKeyDown avec TAB et SHIFT TAB
    Par StarMusic dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/12/2003, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo