Sélection de points parmis une table
Discutez d'informatique ici !
-
coqp-ox
- Membre Naturel
- Messages: 52
- Enregistré le: 22 Nov 2013, 09:00
-
par coqp-ox » 02 Déc 2013, 09:56
Bonjour!
Effectivement, je pense que fatal a tapé dans le mile, cependant je me suis attardé un peu sur ton premier algorithme (qui est donc une correction du mien) et il y a quelques points que je ne comprends pas bien.
Edit : Après avoir rectifié les quelques erreurs présentes (je pense), voila ce que ca donne.
[PHP]#include
#include
const int NbDeCoordonnees = 2; // =m
const int NbDePointsAGarder = 5; //=a
//normalement on veut plus avoir une variable du genre: nombreDePointsAGarder
using namespace std;
int main()
{
int NbDePoints, i, j, k;
double r=50, u, v, w;
double point[2]={0,0};
//saisir plus tard
NbDePoints=8;
double t[NbDePoints][NbDeCoordonnees];//on remplit arbitrairement
t[0][0]=1;
t[0][1]=3 ;
t[1][0]=2 ;
t[1][1]=3 ;
t[2][0]=8 ;
t[2][1]=21 ;
t[3][0]=9 ;
t[3][1]=21 ;
t[4][0]=10 ;
t[4][1]=35 ;
t[5][0]=10 ;
t[5][1]=36 ;
t[6][0]=20 ;
t[6][1]=50 ;
t[7][0]=21 ;
t[7][1]=52 ;
//--fin saisir plus tard
i=0;
while (NbDePoints>NbDePointsAGarder && i=w)
{
//de meme ce bloc devrait etre un appel:
//inplaceCopy(t,i,k)
for (j=0;j<NbDeCoordonnees;++j)
{
t[i][j]=t[i+1][j];
}
//fin bloc
// k++;
NbDePoints=NbDePoints-1;
}
i++;
if (i=NbDePoints)
{
//k=0;
r=r+5;
i=0;
}
}
cout<<"Voici le tableau :"<<endl;
for(i=0; i<NbDePoints; i++)
{
for(j=0; j<NbDeCoordonnees; j++) cout<< t[i][j] <<" ";
cout<<endl;
}
return 0;
}[/PHP]
Le problème étant que la réorganisation du tableau ne se passe pas comment je le souhaiterais. J'ai pu voir que certains parlaient de la fonction memmove() pour déplacer les lignes suivantes vers la ligne qu'on souhaite écrasée, pensez-vous que ca soit une bonne idée ?
-
coqp-ox
- Membre Naturel
- Messages: 52
- Enregistré le: 22 Nov 2013, 09:00
-
par coqp-ox » 04 Déc 2013, 11:27
Désolé de vous déranger à nouveau mais mon problème n'étant toujours pas résolu voila ce que j'essaye pour l'instant :
- Code: Tout sélectionner
#include
#include
const int NbDeCoordonnees = 2; // =m
const int NbDePointsAGarder = 5; //=a
//normalement on veut plus avoir une variable du genre: nombreDePointsAGarder
using namespace std;
int main()
{
int NbDePoints, i, j, k,m;
double r=5, u, v, w, NbOctet, n=0;
// double point[2]={0,0};
//saisir plus tard
NbDePoints=9;
double t[NbDePoints][NbDeCoordonnees];//on remplit arbitrairement
t[0][0]=10;
t[0][1]=3 ;
t[1][0]=12;
t[1][1]=17 ;
t[2][0]=15 ;
t[2][1]=21 ;
t[3][0]=18 ;
t[3][1]=26 ;
t[4][0]=19 ;
t[4][1]=35 ;
t[5][0]=20 ;
t[5][1]=36 ;
t[6][0]=29 ;
t[6][1]=50 ;
t[7][0]=58 ;
t[7][1]=100 ;
//--fin saisir plus tard
i=0;
while (NbDePoints>NbDePointsAGarder && i=w)
{
m=i;
for (j = 0; j < NbDeCoordonnees; ++j)
{
for (i = m; i < NbDePoints-1; ++i)
{
t[i][j] = t[i+1][j];
}
t[i-1][j] = 0 ;
}
NbDePoints=NbDePoints-1;
}
cout<<"i="<<i<<endl;
cout<<"Nbdepoints="<<NbDePoints<<endl;
if (i==NbDePoints+1)
{
r=r+5;
i=0;
n++;
cout<<n<<" fois"<<endl;
}
// cout<<i<<" boucle"<<endl;
}
cout<<"Voici le tableau :"<<endl;
for (i=0; i<NbDePoints-1; i++)
{
for (j=0; j<NbDeCoordonnees; j++) cout<< t[i][j] <<" ";
cout<<endl;
}
return 0;
}
En fait je me suis servi de ceci
- Code: Tout sélectionner
/* decalage "a la main" */
for (lig = 0; lig < NLIG; ++lig)
{
for (col = 0; col < shiftw-1; ++col)
{
Tab[lig][col] = Tab[lig][col+1]; /* decalage a gauche */
}
Tab[lig][shiftw-1] = 0 ;/* introduction de 0 à droite */
}
Et j'ai essaydé de l'adapter pour décaler les lignes vers le haut, en remplacant les lignes du bas par 0 et en affichant à la fin le tableau sans la dernière ligne donc.
Cependant quelque chose cloche et je n'arrive pas à trouver ce que c'est :/
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 04 Déc 2013, 21:54
hello,
ben tu mets des printf partout, tu lances ton exe, et après tu regardes/vérifies les différentes valeurs
ps: remarque pertinente de Ben
(j'aurais trouvé ça plus logique de les garder et de les envoyer au robot lorsque son "buffer" de segments commence à se vider).
auquel il serait intéressant que tu éclaircisses. est-ce possible? car si oui, tu transpires pour rien. :zen:
la vie est une fête

-
Dlzlogic
- Membre Transcendant
- Messages: 5273
- Enregistré le: 14 Avr 2009, 12:39
-
par Dlzlogic » 04 Déc 2013, 22:44
Bonsoir,
Une lecture rapide : la fonction abs renvoie la valeur absolue d'un entier, donc un entier.
Je me répète : il n'y a pas eu d'analyse du problème posé. Il est donc impossible d'arriver à quoi que ce soit.
@ Fatal_error, en fait, on pourrait soupçonner un troll. il n'y a eu aucune réponse aux question posées.
-
coqp-ox
- Membre Naturel
- Messages: 52
- Enregistré le: 22 Nov 2013, 09:00
-
par coqp-ox » 05 Déc 2013, 10:28
Bonjour !
Dlzlogic a écrit:Bonsoir,
Une lecture rapide : la fonction abs renvoie la valeur absolue d'un entier, donc un entier.
Je me répète : il n'y a pas eu d'analyse du problème posé. Il est donc impossible d'arriver à quoi que ce soit.
@ Fatal_error, en fait, on pourrait soupçonner un troll. il n'y a eu aucune réponse aux question posées.
- Code: Tout sélectionner
#include
#include
using namespace std;
main()
{
double a=55.3621, b=-83.2514, u;
u=abs(a/b);
cout
0 0
1 2
3 4
5 6
Voila, le bout de code concerné, j'espère que vous pourrez m'aider :
[CODE] ifstream f ("data1.txt");
if (!f.is_open())
{ cout > t[i][j];
}
}
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 05 Déc 2013, 11:39
ifstream et cout, c est du C++, pas du C.
Ta plateforme supporte le C?
si oui
main.cpp
- Code: Tout sélectionner
#include
#include
#define N 4
#define DIM 2
int main(){
std::ifstream inFile("test.txt");
double t[N][DIM];
for(size_t i=0;i>t[i][j];
}
std::cout<<"setted "<<t[i][0]<<"|"<<t[i][1]<<std::endl;
}
return 0;
}
test.txt
- Code: Tout sélectionner
1.2 4.4
2.2 4.1
0 1.1
2 3.3890
output:
- Code: Tout sélectionner
setted 1.2|4.4
setted 2.2|4.1
setted 0|1.1
setted 2|3.389
la vie est une fête

-
coqp-ox
- Membre Naturel
- Messages: 52
- Enregistré le: 22 Nov 2013, 09:00
-
par coqp-ox » 05 Déc 2013, 12:47
En fait j'ai appris en C++ donc j'essaye de programmer comme ca. Et si la plateforme le supporte pas alors je traduirai en C.
- Code: Tout sélectionner
#include
#include
#include
#include
const int NbDeCoordonnees = 2;
const int NbDePointsAGarder = 5;
using namespace std;
int main(void)
{
int NbDePoints, i, j, k, m;
double r=0, u, v, w, n=0;
NbDePoints=10;
double t[NbDePoints][NbDeCoordonnees];
////Sélection des poitns par rapport au fichier data
ifstream f ("data.txt");
for (size_t i = 0; i > t[i][j];
}
for (size_t i = 0; i < NbDePoints; i++)
{
for (size_t j=0;j<NbDeCoordonnees;j++)
cout << t[i][j];
cout << endl;
}
return 0;
}
Input :
- Code: Tout sélectionner
0 0
1 4
2 10
3 18
4 28
5 40
6 54
7 70
8 88
9 108
Output :
Des truc en

je ne trouve pas ou est mon erreur :dodo:
Edit : Après un test pour rigoler, j'ai appeler mon fichier zizi, apparemment c'est juste le nom "data" qui fait bugguer l'algo...
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité