Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1

    Profil pro fouad issam
    Inscrit en
    décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : fouad issam

    Informations forums :
    Inscription : décembre 2010
    Messages : 4
    Points : -1
    Points
    -1

    Par défaut Compter nombre de répétitions des valeurs reel dans un tableau

    salut
    j ai genre nombre aléatoire selon loi exponentiel les valeur entre 0.0001 et 4.999

    j'ai besoin de Compter nombre de répétitions des valeurs reel

    pour les entier cette methode marche
    mais pour reel je sais pas
    voila le code
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    float  freq[1000],nbr[1000];
     for( int i=0;i<1000;i++)  nbr[i]=0;
        srand(time(0));
        cout << fixed  << setprecision(4);
        for ( n =0.0001 ; n < 4.999 ;n++ ){
     
     
      nbr[n]=Exponential(1);
      freq[nbr[n]]++;
    }
    les erreur 34 C:\Dev-Cpp\main.cpp invalid types `float[1000][float]' for array subscript

    si il y a autre methode donne moi essentielle les valeur reel dans nbr[n] et le problème comment obtenirnombre de répétitions des valeurs pour tracer le graphe j'ai bloquer

  2. #2
    Membre habitué Avatar de zhouyu
    Homme Profil pro Loïc
    Étudiant
    Inscrit en
    octobre 2009
    Messages
    87
    Détails du profil
    Informations personnelles :
    Nom : Homme Loïc
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2009
    Messages : 87
    Points : 129
    Points
    129

    Par défaut

    Salut.
    Ton message fait mal aux yeux et utilise la balise CODE pour le code...
    Pas besoin d'écrire en gros par ailleur...

    Les indices de tableaux sont toujours des entiers positifs.

  3. #3

    Profil pro fouad issam
    Inscrit en
    décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : fouad issam

    Informations forums :
    Inscription : décembre 2010
    Messages : 4
    Points : -1
    Points
    -1

    Par défaut

    alors il faut utilser autre methode si ilya qlq un peut aider stp je suis bloquer ici
    pour terminer la 2 partie trace graphe

  4. #4
    Modérateur

    Homme Profil pro Cyrille
    Network programmer
    Inscrit en
    juin 2010
    Messages
    2 176
    Détails du profil
    Informations personnelles :
    Nom : Homme Cyrille
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Network programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 2 176
    Points : 5 641
    Points
    5 641

    Par défaut

    Bonjour,

    Merci de
    - utiliser les balises code
    - utiliser un français avec des phrases compréhensibles
    - ne pas abuser de la "mise en page"

    Enfin j'ajouterais de (re)voir un cours de base.
    ++ est une incrementation, ce qui signifie "ajouter 1"
    Utiliser un double en index de tableau ?! Wtf
    Que vient faire un srand ? dans la boucle ?
    Dev-cpp est plus que largement obsolete

  5. #5
    Membre confirmé
    Avatar de EtherOS
    Homme Profil pro Lionel Tidjon
    Etudiant Polytechnicien
    Inscrit en
    juillet 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Nom : Homme Lionel Tidjon
    Localisation : Cameroun

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

    Informations forums :
    Inscription : juillet 2012
    Messages : 58
    Points : 210
    Points
    210

    Par défaut Proposition

    généralement ce genre de calcul est très evident avec MATLAB mais puisqu'on est en c++ on va faire avec :

    Code :
    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
    /*Utiliser  les tableaux dynamiques et non les tableaux 
    statiques pour freq   et nbr (la mémoire coute chère) */
    
     // Envoie moi ton énoncé
     // Ce Programme n'est pas éfficient en terme de temps d'éxecution(~ 8s) et en compléxité O(n.k)
    
    
    #include <iostream>
    #include <iomanip>
    #include <cstdlib>
    #include <ctime>
    #include <cmath>
    
    
    #define BUFFER 1000
    
    using namespace std;
    
    
    float Exponential(int mean)
    {
    	//Generate a random number between 0 and 1.
    	//REMEMBER: Always cast the oparands of a division to float, or truncation will be performed.
        float R;
    
    	R = (float)rand()/(float)(RAND_MAX+1);
    
    	//Put it as a parameter to the inverse distribution function.
    	return  -mean*log(R);
    }
    
    int main()
    {
    
       float *freq = new float[BUFFER],*nbr = new float[BUFFER];
    
       for( int i=0;i<BUFFER;i++)
       {
         nbr[i]=0;
        }
    
        srand(time(0));
    
        cout << fixed  << setprecision(4);
    
        float n =0.0001 , m = 0.0000;
    
        int pos = 0,next = 0 ;
    
        while( n < 4.999)
        {
           nbr[pos++]=Exponential(1);
    
           while(m <=nbr[pos++])
           {
            next++; // next est l'entier le plus proche de nbr[next]
            m++;
           }
          freq[next]++;
           n++;
        }
        std::cout <<freq[next]<<"\n";
    
        delete freq;
        delete nbr;
    
        system("PAUSE");
        return 0;
    }

  6. #6
    r0d
    r0d est déconnecté
    Expert Confirmé Sénior

    Profil pro
    Inscrit en
    août 2004
    Messages
    4 098
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : août 2004
    Messages : 4 098
    Points : 5 754
    Points
    5 754

    Par défaut

    Bonjour,

    je ne sais pas ce que vous essayer d'implémenter, mais:

    1.
    Code :
    float freq[1000],nbr[1000];
    c'est le mal. Préférer:
    Code :
    1
    2
    std::vector<double> frequencies;
    std::vector<double> numbers;
    i. Préférer les conteneurs de la stl plutôt que des "c-style" array
    ii. Si le nombre d'éléments que l'on va insérer dans ces tableaux est connu, utiliser la fonction membre reserve() de la classe vector.
    iii. Préférer l'utilisation des doubles sur les float (gotw #67).
    iv. utiliser des noms de variables explicites
    v. une chose par ligne (même les déclarations de variables).

    2. Cette ligne de code est une abomination.
    i. elle ne peut pas fonctionner: le tableau nbr est un tableau de flottant! Vous essayez d'accéder à un élément du tableau avec un indice qui est un flottant là!
    ii. cette ligne fais plusieurs choses à la fois, avec des effets de bords que vous ne maîtrisez certainement pas. Préférer quelque chose comme ça:
    Code :
    1
    2
    3
    int index = (int) number[pos];
    double my_number = numbers[index];
    ++pos;
    Le code que j'ai écris là n'a aucun sens (je ne sais pas ce que vous voulez faire), mais c'est pour montrer qu'il ne faut faire qu'une seule chose par ligne, c'est une des règles primordiales du développement logiciel.

  7. #7

    Profil pro fouad issam
    Inscrit en
    décembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : fouad issam

    Informations forums :
    Inscription : décembre 2010
    Messages : 4
    Points : -1
    Points
    -1

    Par défaut

    freq[nbr[pos++]]++;

    pb de idice flottant
    jai idee pour
    chage les valeur *10000
    mais tjr reste pb
    affictaion
    invalid type

  8. #8
    Membre chevronné

    Homme Profil pro
    Vacancier
    Inscrit en
    décembre 2012
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Vacancier

    Informations forums :
    Inscription : décembre 2012
    Messages : 391
    Points : 692
    Points
    692

    Par défaut

    Salut ! Pas testé mis peut être qu'avec un truc du genre :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    float tabOfFloat[1000];
    int nbrOfFloat(1000);
     
    float memFloat[1000];//Stocker les nouveaux float dans un tableau
    int repet[1000];//Nombre de fois où ils seront répété
    int nbrOfRepet(0);//Nombre de nombre différents
     
    //INITIALISATION
    for(int i = 0; i < 1000; i++)  memFloat[i] = 0.0; // 0.0 pour des float à 0
    for(int i = 0; i < 1000; i++)  repet[i] = 0;
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    //RECHERCHE
    for(int numFloat = 0; numFloat < nbrOfFloat; numFloat++)
    {
        bool findNum(0);
        for(int numRepet = 0; (numRepet < nbrOfRepet && findNum == 0); numRepet++)
        {
            if(tabOfFloat[numFloat] == memFloat[numRepet])
            {
                repet[numRepet] += 1;
                findNum = 1;
            }
        }
        if(findNum == 0)
        {
            nbrOfRepet++;
            memFloat[nbrOfRepet] = memFloat[numFloat];
        }
    }
    tu devrais avoir le nombre de flaot et le nombre de fois répété.
    Code :
    1
    2
    3
    4
     
    nbrOfRepet(0); //Nombre de flaot différents
    memFloat[1000]; //Les float
    repet[1000]; //Le nombre de repetitions

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •