IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Programme C++ fonctionne sur Mac,PC mais pas Ubuntu?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Par d�faut Programme C++ fonctionne sur Mac,PC mais pas Ubuntu?
    Voila j'apprends le C++ depuis peu, j'ai �crit ce "petit" programme pour r�soudre une grille de sudoku. Il fonctionne tr�s bien sur mon Mac mini G4( compile avec g++ 4.01), et sur les pc de la fac sous windows (P4 sous XP compile avec visual studio), mais sur ces m�mes PC ,sous Ubuntu en compilant encore avec g++ (je sais plus la version) le programme ne donne pas le bon nombre de r�sultats et plante . Quelle erreur ai-je bien pu faire qui soit sp�cifique juste a un compilateur donn�? ou bien est-ce les autres compilateurs qui sont plus laxistes?

    code en pi�ce jointe



    Edit Resolu : L'erreur venait de la fonction qui renvoyait une reference vers une case, Avec un pointeur � la place �a marche mieux.
    Fichiers attach�s Fichiers attach�s

  2. #2
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2004
    Messages
    1 717
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 1 717
    Par d�faut
    Salut!

    L'erreur au plantage ainsi que la description des valeurs �rron�es nous aideraient � t'aider.

    En l'occurence ton programme ne compile pas chez moi.
    D'abord tu as mis des "using namespace std;" partout m�me l� ou il n'y a pas d'espace de nom d�clar�, aussi �a ne compile pas (Visual Studio 2008 -- vc9 )
    Va voir dans la faq a propos de using namespace, il ne faut pas l'utiliser comme tu l'as fait.

    J'ai aussi eu un probl�me bizarre de point d'entr�e du programme non trouv�... j'ai forc� main dans le projet pour l'instant.

    Quand je lance le projet en debug �a crash avec une access violation, tu essais d'utiliser le tableau argv des paramettres de ligne de commande m�me si il est null...

    Il faudrait aussi que tu donnes les paramettres de test voir ton cas d'utilisation. Avec quel compilateur/version de VS avais-tu compil� ton projet? Est-ce que tu as les .sln et .proj pour tester plus efficacement?

    Sinon, de loin je dirais que le probl�me a plus de chance de venir des manipulations que tu fais dans ton code que d'un probl�me de configuration. Il se peut que tu n'ai pas vu les probl�mes a l'execution sur les autres plateformes parceque tu as utilis� une vieille version de compilateurs? A v�rifier.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Par d�faut
    Comme erreur � l'execution j'ai une erreur de segmentation, apparemment au moment de l'appel � la fonction grid::show(). Et j'ai l'impression que certaines affectations ne se font pas correctement. Cela UNIQUEMENT sur ubuntu.

    Effectivement les using namespace ne sont pas indispensables partout, j'en avais supprime certains pour la compilation sous windows. Ils ne genent pas gcc.

    parametres de test:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    0 0 1 0 0 4 0 0 0 0 0 0 0 6 0 3 0 5 0 0 0 9 0 0 0 0 0 8 0 0 0 0 0 7 0 3 0 0 0 0 0 0 0 2 8 5 0 0 0 7 0 6 0 0 3 0 0 0 8 0 0 0 6 0 0 9 2 0 0 0 0 0 0 4 0 0 0 1 0 0 0
    on doit trouver 1 solution unique :
    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
     
    1
    calcul effectue en 1.52 secondes
    8875 branches parcourues
    1 solution(s) trouvee(s)
    solution numero 1
    +---+---+---+---+---+---+---+---+---+
    | 7 | 6 | 1 | 3 | 5 | 4 | 2 | 8 | 9 | 
    +---+---+---+---+---+---+---+---+---+
    | 2 | 9 | 8 | 1 | 6 | 7 | 3 | 4 | 5 | 
    +---+---+---+---+---+---+---+---+---+
    | 4 | 5 | 3 | 9 | 2 | 8 | 1 | 6 | 7 | 
    +---+---+---+---+---+---+---+---+---+
    | 8 | 1 | 2 | 6 | 4 | 9 | 7 | 5 | 3 | 
    +---+---+---+---+---+---+---+---+---+
    | 9 | 7 | 6 | 5 | 1 | 3 | 4 | 2 | 8 | 
    +---+---+---+---+---+---+---+---+---+
    | 5 | 3 | 4 | 8 | 7 | 2 | 6 | 9 | 1 | 
    +---+---+---+---+---+---+---+---+---+
    | 3 | 2 | 7 | 4 | 8 | 5 | 9 | 1 | 6 | 
    +---+---+---+---+---+---+---+---+---+
    | 1 | 8 | 9 | 2 | 3 | 6 | 5 | 7 | 4 | 
    +---+---+---+---+---+---+---+---+---+
    | 6 | 4 | 5 | 7 | 9 | 1 | 8 | 3 | 2 | 
    +---+---+---+---+---+---+---+---+---+
    pour l'histoire de tableau non-initialis� �a m'�tonne, le programme est sens� quitter si le nombre d'arguments est trop faible pour renseigner toutes les valeurs ( premier if du main), ou alors c'est qu'il considere le return 0; comme une erreur... j'ai eu ce meme probleme a la fin du main et remplace par exit(0);

    pour les fichier sp�cifiques a windows et la version exacte de visual faudra atttendre jeudi que je retourne a la fac.

  4. #4
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Ao�t 2004
    Messages
    1 717
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 1 717
    Par d�faut
    Pour une raison que je n'ai pas eu le temps de d�terminer le nombre d'argumetns �tait �rron� (valeur al�atoire je pr�sume) mais je regarderai en rentrant du boulot voir si yavait une raison particuli�re.

  5. #5
    Membre chevronn� Avatar de cboudy
    Profil pro
    Ing�nieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    407
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 407
    Par d�faut
    tu peux essayer de lancer le programme avec valgrind pour voir s'il d�tecte des fuites m�moire

  6. #6
    Membre chevronn�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par d�faut
    Bonjour,
    Citation Envoy� par isyldur Voir le message
    ou bien est-ce les autres compilateurs qui sont plus laxistes?
    Pour �tre habitu� des programmes multiplateformes, oui les compilateurs ne sont pas tous aussi laxistes les uns que les autres et tr�s souvent ils le sont de mani�res diff�rentes...
    Apr�s les syst�mes fonctionnent aussi diff�remment. Pour ton cas, je n'ai pas test� le code, mais je parierais sur un probl�me m�moire, comme un d�passement de tableau par exemple... Mac OS & Windows peuvent g�rer le d�passement sans planter mais dans un autre contexte, ce m�me d�passement va faire crasher l'application...

    V�rifie donc bien toutes tes allocations de m�moires, tes tableaux entre autre, et regarde bien qu'ils ne d�passent pas leurs tailles allou�es...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Par d�faut
    Citation Envoy� par Fabllot Voir le message
    Bonjour,

    Pour �tre habitu� des programmes multiplateformes, oui les compilateurs ne sont pas tous aussi laxistes les uns que les autres et tr�s souvent ils le sont de mani�res diff�rentes...
    Apr�s les syst�mes fonctionnent aussi diff�remment. Pour ton cas, je n'ai pas test� le code, mais je parierais sur un probl�me m�moire, comme un d�passement de tableau par exemple... Mac OS & Windows peuvent g�rer le d�passement sans planter mais dans un autre contexte, ce m�me d�passement va faire crasher l'application...

    V�rifie donc bien toutes tes allocations de m�moires, tes tableaux entre autre, et regarde bien qu'ils ne d�passent pas leurs tailles allou�es...
    Je veux bien croire que je puisse avoir une erreur d'indice en lecture ou en �criture, pour ce qui est de l'allocation il n'y en a aucune de dynamique dans mon programme a part celle induites par le fonctionnement de la classe std::vector (qui stocke les r�sultats valides);

    Merci a tous pour vos r�ponses je vais voir si je trouve quelque chose avec les outils que vous m'avez sugg�r�s.

    edit : pour valgrind c'est pas possible, version trop ancienne de mac os X.

  8. #8
    Membre chevronn�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : Communication - M�dias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par d�faut
    En regardant rapidement tes sources, je maintiens mon id�e premi�re de d�passement de tableau quelque part...

    Je ne remets pas en cause ton algorithme, mais tes calculs d'indices lors des acc�s � tes matrices sont assez complexes... Es-tu vraiment certain qu'� chacun des acc�s des indices sont compris entre 0 et 8 (inclus) ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 23
    Par d�faut
    Je me suis pos� la question mais je suis a peu pr�s sur que oui ( j'ai rajout� une parenth�se qui pouvait manquer).

    Par contre j'ai modifi� la fonction Case& grid::Grille(int,int) pour qu'elle renvoie directement une Case et non une r�f�rence, et depuis je n'ai plus d'erreur de segmentation apr�s un return dans le main.

  10. #10
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Salut,
    Citation Envoy� par isyldur Voir le message
    Je me suis pos� la question mais je suis a peu pr�s sur que oui ( j'ai rajout� une parenth�se qui pouvait manquer).
    Une bonne fa�on de v�rifier est de mettre un assert ou une trace juste avant pour �tre sur de tes indices.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Fonctionne sur l’�mulateur mais pas sur tablette
    Par devbot dans le forum Android
    R�ponses: 2
    Dernier message: 04/12/2011, 20h53
  2. R�ponses: 0
    Dernier message: 24/06/2010, 15h10
  3. R�ponses: 1
    Dernier message: 11/11/2009, 12h35
  4. R�ponses: 0
    Dernier message: 03/04/2008, 15h14
  5. Programme VB6 fonctionne en XP SP1, mais pas en SP2
    Par domb_st dans le forum VB 6 et ant�rieur
    R�ponses: 8
    Dernier message: 11/08/2006, 21h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo