Bonjour,
je veux faire un programme qui gere un tableau de bool (c'est comme un registre). il additionne (ORlogique) ou multiplie (AND logique) les "bits" du registre un par un. j'ai pu (normalement) developper tous les methodes sauf que j'ai pas su comme remplir les registre par clavier ou outres directement dans le main...
voila mon header.h
#include<iostream.h>
class registre
{
bool *tab ;
int taille ;
public :
registre(int n=8):taille(n) {}
registre(const registre & r)
{
taille=r.taille;
tab=new bool[taille];
for (int i=0 ; i<taille ;i++)
tab[i]=r.tab[i];
}
// ~registre(){delete[]tab;} ;
registre operator* (registre) ;
registre operator+ (registre) ;
registre operator< (int) ;
registre operator> (int) ;
void affich () ;
void remplir () ;
} ;
mon registre.cpp
#include "header.h"
#include <string.h>
registre registre :: operator* (registre r)
{
if (taille > r.taille)
{
registre r1(taille);
for (int i=taille;i>r.taille;i--)
{
r1.tab[i] = tab[i] & 0;
}
for (int j=r.taille;j>0;j--)
{
r1.tab[j] = tab[j] & r.tab[j];
}
return r1;
}
else
{
registre r2(r.taille);
for (int i=r.taille;i>taille;i--)
{
r2.tab[i] = r.tab[i] & 0;
}
for (int j=taille;j>0;j--)
{
r2.tab[j] = tab[j] & r.tab[j];
}
return r2;
}
}
registre registre :: operator+ (registre r)
{
if (taille > r.taille)
{
registre r1(taille);
for (int i=taille;i>r.taille;i--)
{
r1.tab[i] = tab[i] | 0;
}
for (int j=r.taille;j>0;j--)
{
r1.tab[j] = tab[j] | r.tab[j];
}
return r1;
}
else
{
registre r2(r.taille);
for (int i=r.taille;i>taille;i--)
{
r2.tab[i] = r.tab[i] | 0;
}
for (int j=taille;j>0;j--)
{
r2.tab[j] = tab[j] | r.tab[j];
}
return r2;
}
}
registre registre ::operator< (int n)
{
for (int i=taille ; i<n ;i++)
{
for (int j=0 ; j< taille ; j++)
{
tab[j] = tab[j+1];
}
tab [taille] = 0;
}
return *this;
}
registre registre ::operator> (int n)
{
for (int i=0 ; i<n ;i++)
{
for (int j=taille ; j< 0 ; j++)
{
tab[j+1] = tab[j];
}
tab [0] = 0;
}
return *this;
}
void registre ::affich() // je pense que c'est comme ça , je suis pas sur !!
{
for (int i=0;i<taille;i++)
{
if (tab[i]==true)
cout << "1";
else
cout << "0";
}
}
void registre ::remplir() // je pense que c'est comme ça , je suis pas sur !!
{int a;
for (int i=0;i<taille;i++)
{
cin >> a;
if (a==0)
tab[i]=false;
else
tab[i]=true;
}
}
mon main pas terminer
#include "header.h"
#include <string.h>
void main()
{
registre r2(15);
registre r1= // ici comment on peut remplir l'objet directement ?
r1.affich();
}
dans bcp des cas (j'ai essaye plusieur truc) je recois pas de erreurs de compliation mais le programme s'arrete et je recoit la fameuse ne pas envoyé de microsoft...
merci.
Configuration: Windows XP
Firefox 2.0.0.11