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

Langage C++ Discussion :

erreur variable corrupted


Sujet :

Langage C++

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 48
    Points : 49
    Points
    49
    Par défaut erreur variable corrupted
    Bonsoir,

    J'ai le code suivant qui permet de compter le nombre de fois où la variation dépasse la valeur 1 dans une itération bien définit.
    Le code marche bien, sauf à la fin où j'obtiens l'erreur "Run-time check failure #2 - stack around the variable 'r' was corrupted. Je pense que la réponse doit être toute bête, peut-être faut-il détruire l'array r ?
    J'utilise Visual Studio 2015.

    D'avance merci

    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
    #include <iostream>
    #include <math.h>
    using namespace std;
     
    int main()
    {
     
    	int cpt = 0;
    	double max;
    	double min;
    	double dist;
     
     
    	double r[1000];
    	for (int i = 0; i < 1001; i++)
    	{
    		r[i] = sin((i + 1.0) / 100.0) + cos((i + 1.0) / 50.0) + ((i + 1.0) / 2000.0)*cos((i + 1) / 2.0);
    	}
    	max = r[0];
    	min = r[0];
     
    	for (int i = 1; i < 1000; i++)
    	{
    		if (r[i] > max)
    		{
    			max = r[i];
    			dist = abs(max - min);
    			if (dist > 1)
    			{
    				cpt++;
    				max = r[i];
    				min = r[i];
    			}
    		}
    		if (r[i] < min)
    		{
    			min = r[i];
    			dist = abs(max - min);
    			if (dist > 1)
    			{
    				cpt++;
    				max = r[i];
    				min = r[i];
    			}
    		}
     
    	}
     
    	cout << "The number is " << cpt << endl;
    	return 0;
    }

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Une boucle qui va de 0 à 1001 alors qu'il n'y a que 1000 éléments dans le tableau va causer un problème.

    Je te conseille de passer par std::array et remplacer les valeurs magiques dans les boucles par r.size().

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 48
    Points : 49
    Points
    49
    Par défaut
    Bonsoir,

    Effectivement, c'est stupide.

    Que voulez-vous dire par (je débute):
    Je te conseille de passer par std::array et remplacer les valeurs magiques dans les boucles par r.size().

    Merci

  4. #4
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Code C++11 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <array>
    // ...
    std::array<double, 1000> r;
    for (size_t i = 0; i < r.size(); ++i) // size_t est un entier non signé (suffisamment grand pour parcourir les tableaux)
    // ...

    Edit : http://en.cppreference.com/w/cpp/container/array

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

Discussions similaires

  1. erreur variable non defini
    Par lilemy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2007, 17h16
  2. [SQL] Erreur variables html/php
    Par Ragnarok85 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/05/2007, 20h52
  3. problème "stack arround variable .. corrupted"
    Par FOX19881 dans le forum C++
    Réponses: 7
    Dernier message: 15/07/2006, 18h16
  4. Réponses: 4
    Dernier message: 16/06/2006, 00h27
  5. erreur => variable inonue
    Par sam01 dans le forum Langage
    Réponses: 5
    Dernier message: 22/03/2006, 23h20

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