[c++] remplir tableau de bool avec cin
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
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #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
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
| #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
Code:
1 2 3 4 5 6 7 8 9 10
| #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.