Problème de définition de fonction dans une classe

labuche75 Messages postés 3 Date d'inscription vendredi 21 mai 2010 Statut Membre Dernière intervention 21 mai 2010 - 21 mai 2010 à 08:05
labuche75 Messages postés 3 Date d'inscription vendredi 21 mai 2010 Statut Membre Dernière intervention 21 mai 2010 - 21 mai 2010 à 14:06
Bonjour à tous,
je rencontre un problème à priori de définition de fonction dans la classe tableau permettant de manipuler de grands entiers nécessaires au cryptosystème RSA.
Dev indique les erreurs suivantes:

[i]In member function `int tableau::to_chiffre()':
(ligne 93):[Warning] converting to `long int' from `double'
[Linker error] undefined reference to `WinMain@16' ld returned 1 exit status
(ligne 93): ld returned 1 exit status
/i

Merci beaucoup pour vos suggestions.
[i]
Voici le code:/i
#include <math.h>
#include
using namespace std ;

class tableau
{
protected :
int taille ;
short tab[100] ;

public :

tableau ( int n )
{
if ( n == 0 )
{
taille = 1 ;
tab[ 0 ] = 0 ;
}
else
{
int i = 0 ;
while ( n / ( pow(10 , i ) ) >= 1 )
{
i++ ;
}
taille = i ;
int aux = n ;
for ( int j = i - 1 ; j >= 0 ; j-- )
{
tab[ i - j - 1 ] = (short) ( aux / ( (int) ( pow(10 , j ) ) ) ) ;
aux = aux % ( ( (int) pow(10 , j ) ) ) ;
}
}
}

tableau ( double n )
{
if ( n < 1 )
{
taille = 1 ;
tab[ 0 ] = 0 ;
}
else
{
int i = 0 ;
while ( n / ( pow(10 , i ) ) >= 1 )
{
i++ ;
}
taille = i ;
float aux = n ;
for ( int j = i - 1 ; j >= 0 ; j-- )
{
tab[ i - j - 1 ] = (short) ( aux / ( pow(10 , j ) ) ) ;
aux = aux - tab[ i - j - 1 ] * ( pow(10 , j ) ) ;
}
}
}

void affiche ( void )
{
for ( int k = 0 ; k < taille ; k++ )
{
cout<<tab[k]<<"" ;
}
}

void simple ( void )
{
int i = 0 ;
while ( tab[i] == 0 )
{
i ++ ;
}
for ( int k = 0 ; k < ( taille - i ) ; k ++ )
{
tab[k] = tab[ k + i ] ;
}
taille = taille - i ;
if ( taille <= 0 )
{
taille = 1 ;
tab[0] = 0 ;
}
}

int to_chiffre ( void )
{
long res = 0 ;
for ( int k = taille - 1 ; k >= 0 ; k-- )
{
res = res + ( tab[k] * pow ( 10 , ( taille - k - 1 ) ) ) ;
}
return res ;
}

tableau ( void )
{
int aux ;
cout<<"Taille du nombre?"<<endl ;
cin>>aux ;
taille = aux ;
for ( int i = 0 ; i < taille ; i++ )
{
cout<<"Chiffre?"<<endl;
cin>>aux ;
tab[i] = aux ;
}
}

/*
tableau ( void ) //Attention, necessite d'etre simplifie
{
int aux ;
cout<<"Taille du nombre?"<<endl ;
cin>>aux ;
taille = aux ;
for ( int i = 0 ; i < taille ; i++ )
{
tab[i] = ( abs ( tab[i] ) ) % 10 ;
}
} */

int tai ( void )
{
return taille ;
}

short* tabl ( void )
{
return tab ;
}

void copi ( tableau b )
{
taille = b.tai() ;
for ( int i = 0 ; i < taille ; i++ )
{
tab[i] = b.tabl()[i] ;
}
}

} ;

3 réponses

labuche75 Messages postés 3 Date d'inscription vendredi 21 mai 2010 Statut Membre Dernière intervention 21 mai 2010
21 mai 2010 à 08:58
ps: l'erreur concerne
int to_chiffre ( void )
{
long res = 0 ;
for ( int k = taille - 1 ; k >= 0 ; k-- )
{
res = res + ( tab[k] * pow ( 10 , ( taille - k - 1 ) ) ) ;
}
return res ;
}
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
21 mai 2010 à 09:58
Je n'ai pas regardé en détail, mais d'après le message d'erreur:
- Le warning est du au fait que tu retournes un "long" alors que tu dis retourner un int.
- L'erreur de linking n'est pas du à ta classe, c'est autre chose. Vérifie la manière dont tu compiles. Regarde par exemple si tu essaies de faire une application fenêtrer alors que tu écris une application console.

Petits conseils:
- Évite Dev-C++, il est vieux et plus du tout à jour. Préfère visual studio, codeblocks ou mieux encore, QTCreator.
- Évite les "using namespace std", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace

_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
0
labuche75 Messages postés 3 Date d'inscription vendredi 21 mai 2010 Statut Membre Dernière intervention 21 mai 2010
21 mai 2010 à 14:06
Merci pour le lien instructif. Je vais essayer avec Qt Creator. Bonne journée.
0
Rejoignez-nous