Bonjour à tous,

Le code suivant ne fonctionne pas (BCB C++) :

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
 
 
#include <vcl.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <cstring.h>
#include <iostream.h>
#pragma hdrstop
 
 
#pragma argsused
int main(int argc, char* argv[])
{
 
//vecteurs d'entrée 
int const n = 50;
string InputVector[n] = {"0", "1e-3", "2e-5", "4e-3", "7e-7", "6e-4",
"1", "4e-3", "66e-5", "43e-3", "78e-7","12e-4","2", "2e-3", "10e-5", "20e-3", "90e-7", "70e-4"};
 
//vecteur de sortie
string OutputVector_1[6];
string OutputVector_2[6];
string OutputVector_3[6];
 
string CuVa = "";
 
	int p = -1;
	int r = 0;
 
//lecture du vecteur d'entrée
 
		for (int i=0; i <= n-1; i++)
		{
 
				CuVa = InputVector[i];
 
				cout << CuVa << "\t";
 
				if (CuVa == "0" || CuVa == "1" || CuVa == "2")
				{
				p++;
				r = 0;
				}
 
				if (p==0)
				OutputVector_1[r] = CuVa;
				if (p==1)
				OutputVector_2[r] = CuVa;
				if (p==2)
				OutputVector_3[r] = CuVa;
 
 
				r++;
 
 
		}
 
		// ecriture matricielle du vecteur de sortie
 
		int j = 0;
		for (int i=0; i <= p; i++)
		{
			j = 0;
			while(j <= 6)
			{
 
				if (i==0)
				{
				ShowMessage("val 1");
				CuVa = OutputVector_1[j];
				cout << CuVa;
 
				}
				if (i==1)
				{
				ShowMessage("val 2");
				CuVa = OutputVector_2[j];
				cout << CuVa;
				}
				if (i==2)
				{
				ShowMessage("val 3");
				CuVa = OutputVector_3[j];
				cout << CuVa;
				}
 
			 //cout << CuVa;
 
			 if (j != 6	)
			 cout << "\t";
			 else
			 cout << "\n";
 
			 j++;
			}
 
 
getch();
 
}
Ce code permet d'effectuer la chose suivante. Etant donné un vecteur string d'entrée qui contient un certain nombre d'éléments dont les éléments "0" "1" et "2", le but est de pouvoir classer ce vecteur dans trois vecteurs de sortie tel que chaque vecteur de sortie commence par l'un des éléments "0" "1" et "2".
Le problème est que la séquence de restitution des données "classées" ne fonctionne pas puisque les éléments restitués sont tous inexistants. On a en effet la sortie suivante :

0 1e-3 2e-5 4e-3 7e-7 6e-4 1 4e-3 66e-5 43e-3 78e-7 12e-4 2 2e-3 10e-5 20e-3 90e-7 70e-4

pour le premier cout - tout a fait normal puisque l'on relit le vecteur d'entrée - et seulement :

2 2e-3 10e-5 20e-3 90e-7 70e-4

pour la suite, alors que l'on devrait avoir :

0 1e-3 2e-5 4e-3 7e-7 6e-4
1 4e-3 66e-5 43e-3 78e-7 12e-4
2 2e-3 10e-5 20e-3 90e-7 70e-4

Grâce au ShowMessage, il est possible de vérifier que les trois vecteurs de sortie sont lus.

C'est certainement une erreur bidon, mais je ne vois pas du tout où elle pourrait être.

Je vous remercie pour votre aide.