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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.