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 :/

Avatar de l’utilisateur
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];
        }


    }

Avatar de l’utilisateur
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...

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite