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 :

Rien ne s'affiche


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Par défaut Rien ne s'affiche
    Bonjour,

    Je suis une débutante en programmation sous C++. Je voulais écrire une fonction qui génére des nombres aléatoires (leur nombre est "taille") à partir d'un intervalle donné (qui est sous la forme d'un tableau array contenant 2 éléments). et qui retourne ces nombres aléatoires dans un tableau de 2 dimensions (2 lignes et "taille" colonnes).
    Lorsque je fais appel à la fonction en main et j'essaye d'afficher le tableau retourné rien ne s'affiche !! Merci d'avance pour votre aide.
    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
    vector<vector<double>> rand_numbers(size_t taille,array<double,2> minmax){
    	vector<vector<double>> T(2,vector<double> (taille));
        T.clear();
    	for(size_t i(0);i<T.size();++i){
    		for(size_t j(0);j<T[0].size();++j){
    		T[i][j]=(minmax[0] + (minmax[1]-minmax[0])*(double)(rand()/(RAND_MAX + 1.0)));//
    	}
    	}
    return T;
    }
     
    int main(){
    vector<vector<double>> vek(2,vector<double>(20));
    array<double,2> Bornes={-5,5};
    vek=randum_numbers(20,Bornes);
     
    for(size_t i(0);i<vek.size();++i){
    	for(size_t j(0);j<vek[i].size();++j){
     
    	cout << "le tableau vek est "<<vek[i][j] << endl;
    }
    }
    return 0;
    }

  2. #2
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Ce qui me saute aux yeux c'est T.clear(); suivi du T.size();.
    Le vecteur est vidé, il est donc de taille 0.

    Le mieux dans ce cas est de tester ligne par ligne pour repérer l'algo qui ne fonctionne pas.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Par défaut
    Merci pour la réponse PilloBuenaGente :
    En fait j'utilise le T.clear() car j'ai lu ds un cours de cpp que après avoir crée un tableau vide, il peut contenir n'importe quoi. il faut d'abord le vider.
    T.size() serait égale à 2 (le nombres de lignes)
    T[0].size() le nombre de colonnes qui est la variables taille.

    En fait j'ai essayé la compilation ligne par ligne, mais ça ne m'a pas trop aidé.

    Merci de bien vouloir m'aider

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    En C++, les classes de la bibliothèque standard (la STL) sont propres. Quand elles sont construites, elles contiennent des choses bien définies.
    Par exemple, un vecteur est vide, et une array contient des 0.

    Pour etre précis, cppreference dit:
    constructor (implicitly declared)
    default-constructs or copy-constructs every element of the array
    (public member function)
    autrement dit: les éléments sont construits avec leur valeur par défaut (0 pour les nombres) ou par copie (sous-entendu quand on fait une copie)

  5. #5
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par hazeul Voir le message
    En fait j'utilise le T.clear() car j'ai lu ds un cours de cpp que après avoir crée un tableau vide, il peut contenir n'importe quoi. il faut d'abord le vider.
    Cela vaut pour un tableau static (double[taille]) où les valeurs ne sont pas initialiser, le vecteur quant à lui est de taille zéro par défaut.

    Si après avoir enlevé le clear() le problème reste le même, il faudrait vérifier les valeurs (par des simples cout <<) à plusieurs endroit pour voir là où ça coince.
    Egalement peut être reposer le problème sur papier histoire d'avoir un algorithme clair.

    (Le mieux ici serait peut-être quelque chose comme : std::vector<std::array<double, 2>>)

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Je voulais écrire une fonction qui génére des nombres aléatoires (leur nombre est "taille") à partir d'un intervalle donné (qui est sous la forme d'un tableau array contenant 2 éléments).
    et qui retourne ces nombres aléatoires dans un tableau de 2 dimensions (2 lignes et "taille" colonnes).
    C'est déjà bien compliqué, il y a plusieurs choses à faire.

    Commence par créer une fonction simple, double random(double min, double max);, qui retourne un nombre aléatoire entre min et max.

    Éventuellement, il serait utile de procéder avec une structure intermédiaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Point {
    public:
        const double x, y;
        Point(double x, double y) :x(x), y(y) {};
    };
    Tu pourras alors écrire simplement une autre fonction: Point random_point(double min, double max);.

    Ce qui te permettrait d'écrire la fonction suivante, qui est autrement plus claire que ce que tu as fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    std::vector<Point> points(size_t taille, double min, double max) {
        std::vector<Point> points(taille);
        for (int i=0; i < taille; ++i) {
            points.push_back( random_point(min, max) );
        }
        return points;
    }
    Citation Envoyé par mon grand-père
    Si c'est trop difficile, commence par faire un morceau simple, et sers-t-en.
    Si par contre j'ai mal compris, il suffira de procéder de manière similaire:
    • D'abord la fonction d'aléatoire dans un intervalle,
    • puis une fonction générant N nombres alléatoires,
    • et enfin une seconde générant plusieurs lignes.

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Par défaut
    Merci pour vos réponses

    En fait j'ai déjà créé 2 fonctions avant celle ci. Une qui retourne un vector d'une seul dimension et qui prend en paramètres des valeurs (doubles). après j'ai changé ces paramétres en un tableau array (qui est minmax) et ça a marché pour ces deux fonctions. Alors que quand j'essaye de modifier les valeurs de retour de façon à ce que j'aie un vector de 2 dimensions ça ne marche plus !!!

    En plus de ça j'ai une fenètre d'erreur windows qui s'affiche : le programme Nom_du_dossier.exe a cessé de fonctionner

    Avez-vs déja rencontré ce problem ?

    Mercii encore

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

Discussions similaires

  1. [CKEditor] Rien ne s'affiche
    Par Seth77 dans le forum Bibliothèques & Frameworks
    Réponses: 13
    Dernier message: 28/04/2006, 13h40
  2. [MySQL] Probleme dans ma rrequete rien ne s'affiche
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/03/2006, 01h49
  3. [Display lists] Rien ne s'affiche !!!
    Par guepe dans le forum OpenGL
    Réponses: 13
    Dernier message: 06/03/2006, 12h31
  4. [Eclipse3.1] Plus rien ne s'affiche dans ma console !
    Par tnodev dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 12/10/2005, 12h05
  5. [JAVASCRIPT] Rien ne s'affiche lors d'une pause
    Par stephane93fr dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/05/2005, 15h38

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