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 inconnu


Sujet :

C

  1. #1
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut Problème inconnu
    Bonsoir,
    J'ai une appli qui déconne, aprés l'affichage du resultat j'ai une erreur de mémoire, je ne sais ou j'ai galérer
    Merci d'avance
    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
    /*Méthode Erathosienne*/
    #include <stdio.h>
     
     
    int main(void){
     
         long cpt,mult,Indice;
     
             printf("Entrez votre limite:  ");
              scanf("%d",&Indice);
     
             long *Prim;
     
             Prim= malloc(sizeof(*Prim)*Indice);
     
             for(cpt=0; cpt<Indice; cpt++)
               Prim[cpt]=cpt;
     
             for(cpt=2; cpt<Indice; cpt++)
              for (mult=2; mult<Indice/2; mult++)
                 Prim[cpt*mult]=0; 
     
             printf("\nLes nombre premier entre 2 et %d sont:\n%d",Indice,Prim[cpt]);
     
              for (cpt=1; cpt<Indice; cpt++)
                if(Prim[cpt]!=0)
                  printf("\n%d",Prim[cpt]);
     
              free(Prim);             
     
         system("pause");
          return 0;
        }
    Compil your life guy!
    The Aures Project

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut

    Lorque tu sors de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(cpt=2; cpt<Indice; cpt++)
    cpt vaut Indice. Tu fais un printf avec Prim[cpt], donc tu sors de la zone allouée pour Prim qui est indicée de 0 à Indice-1.
    J'ai l'impression aussi que tu dépasses la taille du tableau avec ta double boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(cpt=2; cpt<Indice; cpt++)
              for (mult=2; mult<Indice/2; mult++)
                 Prim[cpt*mult]=0;
    Si Indice = 50, rien qu'avec cpt = 3 et mult = 17 tu dépasses la taille du tableau, as-tu bien recopié le code ??
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Problème inconnu
    Citation Envoyé par Goundy
    J'ai une appli qui déconne, aprés l'affichage du resultat j'ai une erreur de mémoire, je ne sais ou j'ai galérer
    Ca sent le comportement indéfini.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Entrez votre limite:  10
     
    Les nombre premier entre 2 et 10 sont:
    0
    1
    2
    3
    5
    7
    Gné ?

    0 et 1 ne sont pas premiers...

    Une simple instrumentation permet de constater un bug de conception :
    (débordement de tableau)
    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
     
    #line 1
    /* Methode Erathosienne */
    #include <stdio.h>
    #include <assert.h>
     
    int main (void)
    {
        long cpt,mult,Indice;
     
        printf("Entrez votre limite:  ");
        scanf("%d",&Indice);
     
        long *Prim = malloc(sizeof(*Prim)*Indice);
     
        if (Prim != NULL)
        {
     
            for(cpt=0; cpt<Indice; cpt++)
            {
                Prim[cpt]=cpt;
            }
     
            for(cpt=2; cpt<Indice; cpt++)
            {
                for (mult=2; mult<Indice/2; mult++)
                {
                    assert (cpt*mult <Indice);
                    Prim[cpt*mult]=0;
                }
            }
     
            printf("\nLes nombre premier entre 2 et %d sont:\n%d",Indice,Prim[cpt]);
     
            for (cpt=1; cpt<Indice; cpt++)
            {
                if(Prim[cpt]!=0)
                {
                    printf("\n%d",Prim[cpt]);
                }
            }
     
            free(Prim);
        }
        return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Entrez votre limite:  10
    Assertion failed: cpt*mult <Indice, file main.c, line 26
     
    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information.
     
    Press ENTER to continue.
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    merci lol, mauvais calcule je vais corriger ca
    Compil your life guy!
    The Aures Project

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    C'est Eratosthène (je suppose...)

  6. #6
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    Citation Envoyé par Le Furet
    C'est Eratosthène (je suppose...)
    ²
    oui lol
    Compil your life guy!
    The Aures Project

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème inconnu avec SDL
    Par flintoo dans le forum SDL
    Réponses: 17
    Dernier message: 09/11/2009, 08h28
  2. Problème inconnu dans mon code
    Par mouchT8 dans le forum C
    Réponses: 5
    Dernier message: 17/05/2008, 20h52
  3. problème inconnue en c++
    Par fatjoe dans le forum C++
    Réponses: 11
    Dernier message: 11/05/2008, 12h35
  4. Réponses: 3
    Dernier message: 22/10/2007, 20h43
  5. Périphériques : Problème inconnu
    Par mick009 dans le forum Windows XP
    Réponses: 19
    Dernier message: 24/08/2007, 16h06

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