Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
nombre réponses : 25

#0 Re : -1 »  [résolu]error:CPU you selected does not support x86-64 instruction set » Le 23/07/2015, à 20:28

no_spleen
Réponses : 11

Bonjour,

Peux-tu essayer en enlevant l'option -march=pentiumpro dans le paragraphe suivant de ton makefile ?

 56 
 57 linux:
 58         $(MAKE) $(MFLAGS) -f Makefile.arch \
 59         "prog   = medit-2.3-linux"\
 60         "CC     = gcc" \
 61         "CFLAGS = -O3 -march=pentiumpro -ansi -fexpensive-optimizations \
 62                   -Wuninitialized -Wunused -Winline -Wshadow" \
 63         "LDFLAGS= -s -static-libgcc $(HOME)/code/library.cur/objects/$(ARCHI)/*.o" \
 64         "INCDIR = -I. -I$(HOME)/code/library.cur/sources" \
 65         "XLIBS  = -L/usr/X11R6/lib -lXmu -lXext -lX11" \
 66         "GL_LIB   = /usr/lib/libGL.so" \
 67         "GLU_LIB  = /usr/local/lib/libGLU.so" \
 68         "GLUT_LIB = /usr/local/lib/libglut.a" \
 69         "EXEDIR = $(HOME)/bin/i86"

#1 Re : -1 »  [résolu]error:CPU you selected does not support x86-64 instruction set » Le 25/07/2015, à 17:36

no_spleen
Réponses : 11

Hello,

J'ai moi même réalisé ma thèse dans le domaine des éléments finis. Connais-tu GMSH ?

Sinon, j'ai réussi à compiler ton programme, en bidoullant un peu les makefiles.

makefile

 57 linux:
 58         $(MAKE) $(MFLAGS) -f Makefile.arch \
 59         "prog   = medit-2.3-linux"\
 60         "CC     = gcc" \
 61         "CFLAGS = -O3 -ansi -fexpensive-optimizations \
 62                   -Wuninitialized -Wunused -Winline -Wshadow" \
 63         "LDFLAGS= -s -static-libgcc " \
 64         "INCDIR = -I. -I./sources/" \
 65         "XLIBS  = -L/usr/X11R6/lib -lXmu -lXext -lX11" \
 66         "GL_LIB   = -lGL" \
 67         "GLU_LIB  = -lGLU" \
 68         "GLUT_LIB = -lglut" \
 69         "EXEDIR = ."

Makefile.arch

 1 # makefile for medit
  2 
  3 # objects list
  4 src    = $(wildcard *.c)
  5 objs   = $(src:.c=.o)
  6 header = $(wildcard *.h)
  7 
  8 # working dirs
  9 SRCDIR = sources
 10 OBJDIR = objects
 11 ARCDIR = archives
 12 DIRDIR = objects $(OBJDIR) $(ARCDIR)
 13 VPATH  = $(SRCDIR)
 14 
 15 # objects list
 16 src    = $(wildcard $(SRCDIR)/*.c)
 17 header = $(wildcard $(SRCDIR)/*.h)
 18 objs   = $(patsubst $(SRCDIR)%,$(OBJDIR)%,$(src:.c=.o))
 19 
 20 #.SILENT:
 21 
 22 $(prog): $(DIRDIR) $(objs)
 23         echo "#define COMPIL " '"' `date` '"' > $(SRCDIR)/compil.date
 24         $(CC) -c $(CFLAGS) $(INCDIR) $(SRCDIR)/medit.c -o $(OBJDIR)/medit.o
 25         $(CC) -o $@ $(objs) $(LDFLAGS) $(GLUT_LIB) $(GL_LIB) $(GLU_LIB) $(XLIBS) -lm
 26         mv $@ $(EXEDIR)
 27 
 28 $(OBJDIR)/%.o: $(SRCDIR)/%.c
 29         $(CC) -c $(CFLAGS) $(INCDIR) $< -o $@
 30 
 31 $(objs): $(header)
 32 
 33 $(DIRDIR):
 34         @[ -d $@ ] || mkdir $@
 35 
 36 clean:
 37         -rm $(objs) $(EXEDIR)/$(prog)
38 
 39 tar:$(DIRDIR)
 40         tar czf $(ARCDIR)/medit.`date +"%Y.%m.%d"`.tgz sources makefile
 41 
 42 target: $(prog)
 43 

#2 Re : -1 »  [résolu]error:CPU you selected does not support x86-64 instruction set » Le 28/07/2015, à 19:49

no_spleen
Réponses : 11

Bonsoir,

Normalement, tu devrais avoir l'éxécutable "medit-2.3-linuxCC" dans le répertoire à partir duquel tu as lancé l'installation.

Si tu veux me contacter, n'hésite pas à m'envoyer un message privé via ce forum.

Bàt,

#3 Re : -1 »  [résolu]error:CPU you selected does not support x86-64 instruction set » Le 28/07/2015, à 20:34

no_spleen
Réponses : 11

Très bonne nouvelle, n'oublie pas de mettre [resolu] au début du titre de ce sujet.

Pour envoyer un message privé, il suffit de cliquer sur mon pseudo au dessus de ce message.

#4 Re : -1 »  [C++] Utiliser les rValue references ? [RESOLU] » Le 09/07/2015, à 06:02

no_spleen
Réponses : 12

Bonjour,

Tu dois utiliser std::move

my_class obj4(std::move(my_class(1,2)));

#5 Re : -1 »  [C++] Utiliser les rValue references ? [RESOLU] » Le 10/07/2015, à 07:32

no_spleen
Réponses : 12

Bonjour,

Je pense qu'il s'agit simplement d'une optimisation du compilateur.

Si tu regardes les displays obtenus par la ligne suivante

my_class obj4{my_class(1,2)};

Tu n'en a qu'un, qui est le constructeur par défaut. -> Le compilateur est assez malin pour comprendre qu'il n'a pas besoin de créer l'object et d'ensuite le déplacer.

Sans optimisation, tu devrais en avoir 2, un display pour la création par défaut du my_class(1,2), et un contructeur par R-value.

En utilisant std:move, tu forces le comportement voulu, qui est en fait moins performant.

#6 Re : -1 »  Recherche un code source mininaliste du noyaux linux. » Le 29/06/2015, à 19:57

no_spleen
Réponses : 3

Hello,

Ce livre doit être exactement ce que tu cherches.

The Art of Linux Kernel Design: Illustrating the Operating System Design Principle and Implementation
de Lixiang Yang

#7 Re : -1 »  librairie UART (programmation C sur AVR) » Le 13/03/2015, à 09:22

no_spleen
Réponses : 8

Bonjour,

As-tu déjà regardé du côté de avr-libc ?

http://www.nongnu.org/avr-libc/

Je débute actuellement l'aprentissage de la programmation d'AVR. Ton retour d'expérience m'intéresse :-)

#8 Re : -1 »  programmer en fortran » Le 12/02/2015, à 20:04

no_spleen
Réponses : 8

Hello,

Question bête, pourquoi ne pas utiliser le compilateur gfortran qui si je ne me trompe pas se trouve dans les dépots ?

#9 Re : -1 »  [Résolu] C++, Qt : size_t does not name a type » Le 05/12/2014, à 21:00

no_spleen
Réponses : 6

Bonjour,

Peux-tu poster ton code pour que nous puissions essayer de le compiler de notre côté ?

#10 Re : -1 »  quel langage pour utiliser des stats? » Le 15/11/2014, à 13:13

no_spleen
Réponses : 16

Bonjour,

Perso je ne suis pas un des plus grands fans de python, mais il existe un module Python fortement utilisé dans le domaine du data science, Pandas.

Pandas

#11 Re : -1 »  [C++] Taille d'un tableau par un pointeur. » Le 02/08/2014, à 12:51

no_spleen
Réponses : 10

Bonjour,

Difficle de donner une réponse précise sans plus de détails sur ton code, mais est-ce que tu ne peux pas remplacer ton tableau par un std::vector < std::string > , ou un std::vector < std::vector < std::string > > ? std::vector possède en effet une fonction size() qui te permet de connaitre la taille de ton vecteur.

#12 Re : -1 »  besoin d'aide pour un code c. » Le 24/08/2013, à 13:29

no_spleen
Réponses : 5

Bonjour,

Une piste pour continuer : as tu essayé ton code ? Je te propose de tester ta fonction sur quelques cas de tests, et les résultats devraient te permettre d'avancer.

#13 Re : -1 »  C: de int vers char* » Le 24/08/2013, à 13:48

no_spleen
Réponses : 6

Salut,

Je ne dois pas bien comprendre ton problème, car j'ai l'impression qu'il suffit de faire cela

   char a = autreFonction();
   int b = fonction(&a);

#14 Re : -1 »  [Résolu] C++ erreur d'édition de lien » Le 07/03/2013, à 20:03

no_spleen
Réponses : 5

Je n'ai toujours pas trouvé la solution, donc si une personne à une piste :-)

#15 Re : -1 »  [Résolu] C++ erreur d'édition de lien » Le 07/03/2013, à 21:20

no_spleen
Réponses : 5

Bon, il a suffit que je valide le message précédent pour que l'erreur me saute aux yeux. Iterator est une classe template, et j'avais placé la définition et l'implémentation dans deux fichiers différents...

Merci à ceux qui ont réfléchi au problème !

#16 Re : -1 »  [Résolu] C++ erreur d'édition de lien » Le 07/03/2013, à 22:31

no_spleen
Réponses : 5

Bonjour pingouinux,

Le contenu du fichier iterator.cpp doit se trouver dans le fichier iterator.h (il n'y a donc pas de fichier iterator.cpp). Ceci car l'implémentation des fonctions templates doit se trouver dans le même fichier que leurs déclarations.

Je ne peux malheureusement pas te donner plus de détails car je ne suis pas non plus un expert en C++. Ce petit projet est justement un moyen de m'y remettre !.

Dans les versions des sources de mon premier message, j'ai aussi oublié les instructions break dans le switch de la fonction square::set_next.

J'espère avoir été plus clair.

Bàt,

#17 -1 »  [Résolu] C++ erreur d'édition de lien » Le 03/03/2013, à 19:12

no_spleen
Réponses : 5

Bonjour à tous,

J'ai débuté la programmation d'un petit module de jeu d'échecs, j'en suis à la représentation de l'échiquier et j'ai une erreur à l'édition de lien que je n'arrive pas à résoudre.

Voici comment j'ai structuré la chose :
- Une classe square : chaque case contient dans ses membres son numéro de case et des pointeurs vers les 8 cases adjacentes
- Une classe board : rassemble toutes les cases de l'échiquier dans un std::vector.

Je souhaite ajouter une fonction board::get_iterator qui retourne un iterateur sur le vecteur de cases, et c'est à l'édition de lien de cette fonction que j'ai une erreur.

Voici mes fichiers
iterator.h

#ifndef ITERATOR_H
#define ITERATOR_H

#include <vector>

template <class Item>
class Iterator {
public :
   virtual void First() = 0;
   virtual void Next() = 0;
   virtual bool IsDone() = 0;
   virtual Item CurrentItem() = 0;
protected:
   Iterator();
};


template <class Item>
class VectorIterator : public Iterator <Item>{
public :
   VectorIterator(std::vector<Item>* aVec);
   virtual void First();
   virtual void Next();
   virtual bool IsDone();
   virtual Item CurrentItem();
protected:
   std::vector<Item> *_vec;
   int _current;
};

#endif

iterator.cpp

#include "iterator.h"

template < class Item >
VectorIterator<Item>::VectorIterator(std::vector<Item>* aVec)
{
  _vec = aVec;
  _current=0;
};

template < class Item >
void VectorIterator<Item>::First()
{
   _current=0;
};

template < class Item >
void VectorIterator<Item>::Next()
{
   _current++;
};

template < class Item >
bool VectorIterator<Item>::IsDone()
{
  return _current >= _vec->size();
};


template < class Item >
Item  VectorIterator<Item>::CurrentItem()
{
   return (*_vec)[_current];
};

square.h

#ifndef SQUARE_H
#define SQUARE_H

class square
{
   private :
     static int nb_squares;
     int num;
     square* nxt_0;
     square* nxt_1;
     square* nxt_2;
     square* nxt_3;
     square* nxt_4;
     square* nxt_5;
     square* nxt_6;
     square* nxt_7;
   public :
     square();
     ~square();
     void set_next(int , square*);
     square* get_next(int);
     inline int get_num(){return num;};
};


#endif

square.cpp

#include <iostream>
#include "square.h"


int square::nb_squares = 0;

square::square()
{
   nb_squares++;
   num = nb_squares;
   nxt_0 =0;
   nxt_1 =0;
   nxt_2 =0;
   nxt_3 =0;
   nxt_4 =0;
   nxt_5 =0;
   nxt_6 =0;
   nxt_7 =0;
};

square::~square()
{
   delete nxt_0;
   delete nxt_1;
   delete nxt_2;
   delete nxt_3;
   delete nxt_4;

   delete nxt_5;
   delete nxt_6;
   delete nxt_7;
};

void square::set_next(int nxt , square* sq)
{
   switch (nxt)
   {
     case 0 :
        nxt_0 = sq;
     case 1 :
        nxt_1 = sq;
     case 2 :
        nxt_2 = sq;
     case 3 :
        nxt_3 = sq;
     case 4 :
        nxt_4 = sq;
     case 5 :
        nxt_5 = sq;
     case 6 :
        nxt_6 = sq;
     case 7 :
        nxt_7 = sq;
   }
};


square* square::get_next (int nxt)
{
   switch (nxt)
   {
     case 0 :
        return nxt_0 ;
     case 1 :
        return nxt_1 ;
     case 2 :
        return nxt_2 ;
     case 3 :
        return nxt_3 ;
     case 4 :
        return nxt_4 ;
     case 5 :
        return nxt_5 ;
     case 6 :
        return nxt_6 ;
     case 7 :
        return nxt_7 ;
   }
   return 0;
};

board.h

#ifndef BOARD_H
#define BOARD_H

#include <vector>
#include "square.h"
#include "iterator.h"

class board
{
private :
   int nb_row , nb_col;
   std::vector<square*> squares;
public :
   board(int nb_row , int nb_col);
   square* get_square(int num);
   Iterator<square*>* get_iterator();
};


#endif

board.cpp

#include "board.h"
#include <iostream>



board::board(int _nb_row , int _nb_col)
{

   nb_row = _nb_row;
   nb_col = _nb_col;
   for (int i=0 ; i<nb_row ; i++)
   {
      for (int j=0 ; j<nb_col ; j++)
      {
         squares.push_back(new square);
      }
   }

   int nb_squares = nb_row * nb_col;
   for (int i=0 ; i < nb_squares; i++)
   {
     int row = i / nb_col + 1;
     int col = i%nb_col +1;

     // rangée du dessus
     if ( row < nb_row)
     {
        squares[i]->set_next(1,get_square(i+nb_col));
        if (col < nb_col)
        {
              squares[i]->set_next(2,get_square(i+nb_col+1));
        }
        if (col != 1)
        {
              squares[i]->set_next(0,get_square(i+nb_col-1));
        }
     }

     // case de droite
     if (col < nb_col)
        squares[i]->set_next(4,get_square(i+1));

     // case de gauche
     if (col != 1)
        squares[i]->set_next(3,get_square(i-1));

     // rangée du bas
     if (row > 1)
     {
        squares[i]->set_next(6,get_square(i-nb_col));
        if (col < nb_col)
                squares[i]->set_next(7,get_square(i-nb_col+1));
        if (col != 1)
                squares[i]->set_next(5,get_square(i-nb_col-1));
     }
   }
};


square* board::get_square(int num)
{
   if (num > nb_row*nb_col  || num < 0)
   {
      return 0;
   }
   else
   {
      return squares[num];
   }
};

Iterator<square*>* board::get_iterator()
{
   return new VectorIterator<square*>(&squares);
};

Et quand je veux compiler, j'ai cette erreur

board.o: dans la fonction « board::get_iterator() »:
board.cpp:(.text+0x41c): référence indéfinie vers « VectorIterator<square*>::VectorIterator(std::vector<square*, std::allocator<square*> >*) »
collect2: erreur: ld a retourné 1 code d'état d'exécution

Est-ce que vous voyez l'erreur ?

Merci de votre aide,

#18 Re : -1 »  [RESOLU] Reduire une phrase jusqu'à n mots avec les mots les + longs » Le 15/08/2012, à 14:10

no_spleen
Réponses : 33

Bonjour,

une petite version en awk pour varier.

split_titles.awk

{
  for (i=1;i<=NF;i++) 
  {
    if (!(length($i) in taille))
    {   
       taille[length($i)]=$i
       place[$i]=i
    }   
  }
  n = asorti(taille,n_ordre)
  for (i=0;i<nb_max;i++)
  {
    word = taille[n_ordre[n-i]]
    unsorted[place[word]]=word
  }
  m = asorti(unsorted,m_ordre)
  sorted = ""
  for (i=1;i<=m;i++)
  {
    sorted=(i==1)?unsorted[m_ordre[i]]:sorted"_"unsorted[m_ordre[i]]
  }
  print sorted
  delete taille
  delete place
  delete n_ordre
  delete m_ordre
  delete unsorted
}

et pour le lancer

gawk -f split_titles.awk -v nb_max=2 test_file.txt

#19 Re : -1 »  [RESOLU] Reduire une phrase jusqu'à n mots avec les mots les + longs » Le 15/08/2012, à 17:22

no_spleen
Réponses : 33

Argh, en effet. J'avais oublié que les indices en awk sont toujours des strings. Donc 11 < 2.

On peux régler le problème en rajoutant un "z" devant la taille du mot si celui-ci fait plus de 9 lettres (je poste qu'il n'y a pas de mots de plus de 99 lettres...)

{
  for (i=1;i<=NF;i++) 
  {
    longueur = (length(length($i))>1)?"z" length($i):length($i)
    if (!(longueur in taille))
    {   
       taille[longueur]=$i
       place[$i]=i
    }   
  }
  n = asorti(taille,n_ordre)
  for (i=0;i<nb_max;i++)
  {
    word = taille[n_ordre[n-i]]
    unsorted[place[word]]=word
  }
  m = asorti(unsorted,m_ordre)
  sorted = ""
  for (i=1;i<=m;i++)
    sorted=(i==1)?unsorted[m_ordre[i]]:sorted"_"unsorted[m_ordre[i]];
  print sorted

  delete taille
  delete place
  delete n_ordre
  delete m_ordre
  delete unsorted
}

#20 Re : -1 »  [RESOLU] Reduire une phrase jusqu'à n mots avec les mots les + longs » Le 15/08/2012, à 18:55

no_spleen
Réponses : 33

pingouinux, tu es doué pour appuyer la où cela fait mal ;-)

Je suis curieux de savoir où se situe awk par rapport au shell ou au python au niveau performance.

{
  for (i=1;i<=NF;i++) 
  {
    longueur = (length(length($i))>1)?"z" length($i):length($i)
    emplacement = (length(i)>1)?"z"i:i
    if (!(longueur in taille))
    {   
       taille[longueur]=$i
       place[$i]=emplacement
    }   
  }
  n = asorti(taille,n_ordre)
  for (i=0;i<nb_max;i++)
  {
    word = taille[n_ordre[n-i]]
    unsorted[place[word]]=word
  }
  m = asorti(unsorted,m_ordre)
  sorted = ""
  for (i=1;i<=m;i++)
    sorted=(i==1)?unsorted[m_ordre[i]]:sorted"_"unsorted[m_ordre[i]];
  print sorted

  delete taille
  delete place
  delete n_ordre
  delete m_ordre
  delete unsorted
}

#21 Re : -1 »  [RESOLU] Reduire une phrase jusqu'à n mots avec les mots les + longs » Le 15/08/2012, à 19:34

no_spleen
Réponses : 33

@pinguinux

La règle était que si plusieurs mots ont la même taille, on prend le premier. Ici phrase à la même taille que tester.

#22 Re : -1 »  [RESOLU] [sed] Extraire texte contenu entre parenthèses » Le 07/07/2012, à 09:13

no_spleen
Réponses : 17

Donner la réponse, c'est bien. Expliquer pourquoi la première solution ne fonctionne pas, c'est mieux !

Jedineofr, il faut savoir que l'opérateur * est "greedy". C'est à dire qua quand tu fais .* il va prendre toute la ligne puis revenir progressivement en arrière jusqu'à ce que ce qui se trouve après le .* dans le regex soit aussi satisfait.

Donc dans ton cas, il va au fond puis en revenant en arrière il tombe sur les deuxièmes paranthèses.

#23 Re : -1 »  [RESOLU] [sed] Extraire texte contenu entre parenthèses » Le 07/07/2012, à 17:37

no_spleen
Réponses : 17

@ar barzh paour

sed 's/.*A \(.*\) X.* / \1/'

Ne fera tout simplement rien, car tu n'a pas de parenthèses de groupement dans ta regex. Il faut plutôt quelque chose comme

sed 's/.*A \( (.* ) \) X.* / \1/'

Cette regex commence par .*, ce qui veux dire "prend le maximum de n'importe quel caractère". Il va donc prendre toute la ligne.

Ensuite, il va regarder si le caractère suivant est bien un A. Ici ce ne sera pas le cas puisque que l'on est en fin de ligne. Il va donc reculer d'un caractère jusqu'à tomber sur un A.

Donc si tu veux le premier A de la ligne et qu'il y en plusieurs, cette regex ne marchera pas car tu auras le dernier de la ligne.

Pour éviter cela, une solution est de remplacer .* par quelque chose comme [^A]*, qui veux dire "prend le plus possible de n'importe quel caractère sauf le A".

Sur certaines implémentations, tu as aussi des opérateurs "non greedy", du genre .*? qui veulent dire "prend le nimimum de n'importe quel caractère". C'est aussi une solution possible au problème.

#24 Re : -1 »  Problème pour compiler un document Latex avec Texmaker » Le 16/06/2012, à 09:14

no_spleen
Réponses : 9

Bonjour Guy310,

Si tu essayes de compiler ton fichier directement en ligne de commande cela fonctionne ?

pdflatex ton_document.tex