Division d'un tableau

cs_AngeloVivaldi Messages postés 60 Date d'inscription dimanche 8 décembre 2002 Statut Membre Dernière intervention 1 juillet 2004 - 11 mai 2004 à 23:48
gjdhsidk Messages postés 2 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 16 décembre 2006 - 19 juin 2005 à 19:39
Bjr a tous

j'ai un probleme en C/C++

J'ai un tableau de x short, cette suite de chiffre forme un nombre. Ya un short par cellule pour former ce nombre. Je voudrai pouvoir diviser ce nombre par un autre nombre (tjs pareil : tableau de x short, un short par cellule ki forment un nombre) et obtenir un résultat tjs sous la forme d'un tableau avec un short par cellule... est ce possible ?

meric davance =)

4 réponses

neohp Messages postés 62 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 14 octobre 2005
12 mai 2004 à 00:27
euh faudrait voir de maniere mathematique si on peut faire se genre de choses....

sinon tu met tes 2 grand nombre dans un double, tu fait l'operation , puis tu redecompose..

neoh_p [=- coding spirit -=]
------- since 1999 ------
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 mai 2004 à 07:12
oui bien sur que c'est possible, mais c'est quand même assez compliqué a faire (je l'ai fait avec des listes chainées, ce qui revient a peu près au même, tu peux aller voir dans mes sources)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
12 mai 2004 à 07:52
tu peux aussi faire les fonction qui coonvertisse tableau==> short et inversement

#include 
#include <sstream>
#include <string>
#include <valarray>

using namespace std;

short ArrayToShort(const valarray<short> &t)
{
    ostringstream oss;
    
    for(size_t i=0;i<t.size();i++)
    {
        oss << t[i];
    }
    
    istringstream iss( oss.str() );
    short num; 
    iss >> num;
    
    return num;
}

void ShortToArray(short num, valarray<short> &t)
{
    ostringstream oss;
    oss << num;
    string str_num( oss.str() );

    short a[7]; // short= 7 chiffres au max
    size_t i;
    for(i=0;i<str_num.size();i++)
    {
        string str_tmp(" ");
        str_tmp[0]=str_num[i];
        istringstream iss( str_tmp );
        iss >> a[i];
    }
    t.resize(i);
    t=valarray<short>(a,i);
}

int main()
{
    short a1[]={5,0,0,4};
    valarray<short> t1(a1, (sizeof a1) / (sizeof *a1));
    
    short a2[]={2,7,8};
    valarray<short> t2(a2, (sizeof a2) / (sizeof *a2));
    
    short num1=ArrayToShort(t1);
    short num2=ArrayToShort(t2);
    
    valarray<short> t;
    ShortToArray(num1/num2,t);
    
    for(size_t i=0;i<t.size();i++)
    {
        cout << t[i];
    }
    
    cout.flush();
    cin.get();
}


bien sur c'est a toi de gere les debordement et division non entiere
0
gjdhsidk Messages postés 2 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 16 décembre 2006
19 juin 2005 à 19:39
bonjour,
g le meme pb qu'AngeloVivaldi et la solution proposée ne fonctionne pas avec des nombres tres grands.
J'aimerais savoir si qqn a trouvé une autre idée (il s'agirait de véritablement programmer la division euclidienne)
Merci d'avance!
0
Rejoignez-nous