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 :

problème avec un exercice en C


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    developpeur
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 67
    Points
    67
    Par défaut problème avec un exercice en C
    bonjour


    http://smi.hebergratuit.com/td3_2011.pdf

    l'exercice 8 de cette série

    ma solution
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
        int A[50][50],i,j,N,M,k,v,*T;
     
     
         /*taille du tableau*/
    printf("entrer le nombre de ligne et colonne de A = \n");
    scanf("%d",&M);
    printf(" le nombre de ligne et  colonne est %d\n\n",M);
     
     /*remplissage du tableau*/
     N=0;
     for(i=0;i<M;i++)
     {
         for(j=0;j<M;j++)
         {
     
         printf("A[%d][%d] = ",i,j);
         scanf("%d",&A[i][j]);
        if((i>j) && ((A[i][j]%2)==0))
         N++;
         }
     
     }
      /*Affiche A*/
    printf("le nombre N egale a %d",N);
     printf("\n************la Matrice A************\n\n");
     for(i=0;i<M;i++)
     {
         for(j=0;j<M;j++)
         {
     
         printf("%7d",A[i][j]);
     
         }
         printf("\n\n");
     }
     
     /*edition*/
     
     T=(int *)malloc(N*sizeof(int));
     if(T==NULL){printf("problème mmemoire");system("pause");return 1;}
     
     k=0;
     
     for(i=0;i<M;i++)
    {
        for(j=0;j<M;j++)
        {
        if((i>j) && ((A[i][j]%2)==0) )
        T[k]=A[i][j];
        k++;
        }
    }
     
     /*triage de T*/
     for(i=1;i<N;i++)
     {
         for(j=0;j<i;j++)
         {
             if(T[j]>T[i])
             {
                 v=T[i];
                 for(k=i;k>j;k--)
                     T[k]=T[k-1];
             }
             T[j]=v;
     
         }
     }
     
     for(i=0;i<N;i++)
     {
         printf("T[%d] = %d",i,T[i]);
     }
     
     
     
    }
    quand je compile je pense qu'il me donne des adresse ou je ne sais pas

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    quand je compile je pense qu'il me donne des adresse ou je ne sais pas
    Mais encore ?

    Chez moi, ça compile et ça se lance..

  3. #3
    Membre du Club
    Profil pro
    developpeur
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 67
    Points
    67
    Par défaut
    oui vous avez raison merci

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    By the way, la ligne if(T==NULL){printf("problème mmemoire");system("pause");return 1;} est tout simplement ignole

  5. #5
    Membre du Club
    Profil pro
    developpeur
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 67
    Points
    67
    Par défaut
    le rôle de cette ligne est importent car peut être qu'il n y a pas de nombre pair donc la taille du tableau va être null donc sa pose problème au niveau d'alloument dynamique

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Je ne parle pas de la raison de l'action, ni même de ce qu'elle fait.

    Je parle de la façon de l'écrire... Je te conseille plutôt de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(T==NULL)
    {
         printf("problème mmemoire");
         system("pause");
         return 1;
    }
    Ensuite, puisqu'on considère la ligne précédente T=(int *)malloc(N*sizeof(int));, je dirais alors que ta raison ("peut être qu'il n y a pas de nombre pair") est mauvaise. Tu peux allouer une taille de zéro à ma connaissance (la page de man ne semble pas me contredire). Essaye le code suivant :
    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
     
    #include <stdlib.h>
    #include <stdio.h>
     
    int main(void)
    {
        int *ptr_Test=NULL;
     
     
        printf("Le pointeur est nul (=%d), on l'alloue...\n",ptr_Test);
     
        ptr_Test = malloc (sizeof(int) * 0);
        if(NULL==ptr_Test)
        {
            printf("Erreur lors du malloc : le pointeur est toujours nul\n");
        }
        else
        {
            printf("Succes du malloc : le pointeur n'est plus nul (%d)\n",ptr_Test);
        }
     
        free(ptr_Test);
     
        printf("Le pointeur pointe toujours vers l'adresse (=%d)\n",ptr_Test);
     
        system("pause");
        return 0;
    }

  7. #7
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Tu peux allouer une taille de zéro à ma connaissance ...
    C'est à éviter, le résultat dépend de l'implémentation :

    n1256 :
    7.20.3 Memory management functions
    ....
    If the size of the space requested is zero, the behavior is implementation defined:
    either a null pointer is returned, or the behavior is as if the size were some nonzero value, except that the returned pointer shall not be used to access an object.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  8. #8
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Ah merci pour cette information !

    Dommage qu'elle ne soit pas présente dans la man page de Developpez. C'est possible de rajouter cette information ?

    Tu me cites bien le fichier http://www.open-std.org/jtc1/sc22/wg...docs/n1256.pdf (norme du C99), Diogene ?

  9. #9
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par Bktero Voir le message
    ....
    Tu me cites bien le fichier http://www.open-std.org/jtc1/sc22/wg...docs/n1256.pdf (norme du C99), Diogene ?
    Oui, il s'agit de ce document.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

Discussions similaires

  1. problème avec un exercice en LDA
    Par djoufouf dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 07/01/2013, 01h31
  2. Réponses: 1
    Dernier message: 12/12/2011, 10h42
  3. Réponses: 1
    Dernier message: 24/10/2011, 10h49
  4. [static_cast] Problème avec un exercice.
    Par sekiryou dans le forum C++
    Réponses: 25
    Dernier message: 09/04/2008, 13h21
  5. [c++] second problème avec exercices du livre Big c++
    Par TERRIBLE dans le forum Contribuez
    Réponses: 6
    Dernier message: 06/11/2005, 21h07

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