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 pour transformer une matrice symlétrique en une matrice semi défini positiv


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Par défaut Programme pour transformer une matrice symlétrique en une matrice semi défini positiv
    Bonjour à vous tous!
    Je tiens tout d'abord à vous prevenir que je suis nouveau sur le forum et que je ne connais pas très bien le language C++.
    Je voudrais créer un programme qui transforme une matrice symétrique en une matrice semi-défini positive. Pour ça j'ai importé des bibliothéques numériques qui rendent disponibles la majorité d'opérations sur les matrices. Ensuite j'écris une main qui normalement utilise ses bibliothèques et donne comme sortie une matrice semi défini positive.
    Le problème c'est que lorsque j'execute le programme, j'ai plein d'erreur que je ne comprends pas du style :

    ------ Début de la génération*: Projet*: CorrelSimul, Configuration*: Debug Win32 ------

    Compilation...
    Submat.cpp
    newmat\SUBMAT.CPP(17) : warning C4005: 'REPORT'*: redéfinition de macro
    newmat\SUBMAT.CPP(15)*: voir la définition précédente de 'REPORT'
    newmat\SUBMAT.CPP(430) : fatal error C1010: fin de fichier inattendue lors de la recherche d'une directive d'en-tête précompilé
    Solution.cpp
    newmat\SOLUTION.CPP(201) : fatal error C1010: fin de fichier inattendue lors de la recherche d'une directive d'en-tête précompilé
    Sl_ex.cpp
    newmat\SL_EX.CPP(35) : fatal error C1010: fin de fichier inattendue lors de la recherche d'une directive d'en-tête précompilé
    Newmatex.cpp
    newmat\NEWMATEX.CPP(308) : fatal error C1010: fin de fichier inattendue lors de la recherche d'une directive d'en-tête précompilé
    Newmat9.cpp

    Ect..... (s'en suivent après d'autres erreures et de même type)


    Le journal de génération a été enregistré à l'emplacement "file://d:\Documents and Settings\Amor\My Documents\Visual Studio Projects\correlation_c++\Debug\BuildLog.htm"
    CorrelSimul - 23 erreur(s), 12 avertissement(s)


    ---------------------- Terminé ----------------------

    Génération*: 0 a réussi, 1 a échoué, 0 a été ignoré

    Je ne suis pas trés connaisseur du C++, mais je pense qu'il s'agit d'un problème de linkage, de plus je souhaite executer le programme en débug, mais dans ce cas j'ai un message d'erreur qui me dis :
    aucun nom de ddl spécifié.

    Svp est ce que quelq'un pourrait m'expliquer d'ou peuvent provenir ces erreurs et comment faut-il s'y prendre.

    le projet est trop lourd pour le joindre en mail, mais si vous voulez bien jeter un coup d'oeil la-dessus je suis pret à vous l'envoyer par mail.


    Merci d'avance de votre aide
      0  0

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 390
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 390
    Par défaut
    Ben non, c'est pas un problème de linkage, ça ne va même pas jusqu'au linkage.
    Je vois deux problèmes:
    1. Le coup de la macro
    2. Erreur C1010


    PS: C'est quoi ces étoiles de ***** ? C'est Visual en Français qui les met, ou c'est toi pour signaler les mots que tu ne comprends pas?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
      0  0

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Par défaut
    Ne fais pas trop attention à ca !
    Ces étoiles ont été crée automatiquement en faisant un copier coller à partir de la fenêtre de sortie c++.
    Je jette un coup d'oeil sur les faq et je te tien au courant.

    Merci
      0  0

  4. #4
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Par défaut
    Merci pour ton aide ça à l'air de bien marché mais persiste encore une petite erreur du genre

    fatal error C1001: ERREUR INTERNE DU COMPILATEUR (fichier 'f:\vs70builds\3077\vc\Compiler\Utc\src\P2\main.c', ligne 148)

    Voilà le fichier de sortie

    Aurais-tu une petite idée la-desssus?



    ------ Début de la génération*: Projet*: CorrelSimul, Configuration*: Debug Win32 ------

    Compilation...
    Stdafx.cpp
    WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
    Compilation...
    Submat.cpp
    Solution.cpp
    Sl_ex.cpp
    Newmatex.cpp
    Newmat9.cpp
    Newmat8.cpp
    Newmat7.cpp
    Newmat6.cpp
    Newmat5.cpp
    Newmat4.cpp
    Newmat3.cpp
    Newmat2.cpp
    Newmat1.cpp
    Myexcept.cpp
    essai.cpp
    WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
    CorrelSimul.cpp
    WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
    Cholesky.cpp
    Bandmat.cpp
    Génération de code en cours...
    d:\documents and settings\amor\my documents\visual studio projects\correlation_c++\newmat\newmat8.cpp(724) : fatal error C1001: ERREUR INTERNE DU COMPILATEUR (fichier 'f:\vs70builds\3077\vc\Compiler\Utc\src\P2\main.c', ligne 148)
    Choisissez la commande Support technique du menu ? (Aide) de Visual C++,
    ou ouvrez le fichier d'aide du Support technique pour plus d'informations

    Le journal de génération a été enregistré à l'emplacement "file://d:\Documents and Settings\Amor\My Documents\Visual Studio Projects\correlation_c++\Debug\BuildLog.htm"
    CorrelSimul - 1 erreur(s), 0 avertissement(s)


    ---------------------- Terminé ----------------------

    Génération*: 0 a réussi, 1 a échoué, 0 a été ignoré
      0  0

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    C'est un bug du compilo. Parfois on peut feinter, parfois pas. Quoiqu'il en soit avec le code correspondant ce serait plus facile pour nous
      0  0

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Par défaut
    Salut,

    Je veux bien te fournir le code correpondant, mais le problème c'est qu'il est trop gros pour être posté, est ce que je peux te l'envoyer par mai, ou aurais-tu une solution plus approprié pour te l'envoyer?
      0  0

  7. #7
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Par défaut
    Vioilà, je ne suis pas sur que ça marche mais dis moi si t'arrive à l'ouvrir!
    Fichiers attachés Fichiers attachés
      0  0

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Pour le moment, ce qu'il y a autour de la ligne 724 de newmat8.cpp devrait suffire.
      0  0

  9. #9
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Par défaut
    Tout d'abord je te prie d'ecuser mon manque d'expérience en c++.
    Que veux tu dire exactement "par devrait suffire" lors de ton dernier message je n'ai pas très bien compris?

    Comme t'as du le remarquer il n' y a pas encore de main dans le fichier priniciapl correlsim.cpp.
    Ce que je voudrais faire c lire un fichier.txt ou se trouve la matrice et puis faire fonctionner le code écrit dans correlsim qui va se charger de la transformer ensuite je voudrais écrire le résultat sortie dans un autre fichier .txt

    J'ai trouvé les codes suivants pour écrire et lire un fichier txt, à ton avis est ce que je dois déclarer quelque chose avant ou je peux directement les insérer dans la main.

    lire le fichier :

    using System;
    using System.IO;

    class Test
    {
    public static void Main()
    {
    try
    {
    // Create an instance of StreamReader to read from a file.
    // The using statement also closes the StreamReader.
    using (StreamReader sr = new StreamReader("TestFile.txt"))
    {
    String line;
    // Read and display lines from the file until the end of
    // the file is reached.
    while ((line = sr.ReadLine()) != null)
    {
    Console.WriteLine(line);
    }
    }
    }
    catch (Exception e)
    {
    // Let the user know what went wrong.
    Console.WriteLine("The file could not be read:");
    Console.WriteLine(e.Message);
    }
    }
    }


    ecrire le fichier :

    [Visual Basic]
    Option Explicit On
    Option Strict On
    Imports System
    Imports System.IO
    Public Class TextToFile
    Private Const FILE_NAME As String = "MyFile.txt"
    Public Shared Sub Main()
    If File.Exists(FILE_NAME) Then
    Console.WriteLine("{0} already exists.", FILE_NAME)
    Return
    End If
    Dim sr As StreamWriter = File.CreateText(FILE_NAME)
    sr.WriteLine("This is my file.")
    sr.WriteLine("I can write ints {0} or floats {1}, and so on.", 1, 4.2)
    sr.Close()
    End Sub
    End Class

    Bien sur il faudra modifier les commandes sr.WriteLine avec une boucle pour le faire

    Peux tu m'éclairer la dessus ?

    merci
      0  0

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Que veux tu dire exactement "par devrait suffire" lors de ton dernier message je n'ai pas très bien compris?
    Je voulais parler du code qu'il serait bon de nous montrer. Pas la peine de nous sortir toutes les sources.

    J'ai trouvé les codes suivants pour écrire et lire un fichier txt, à ton avis est ce que je dois déclarer quelque chose avant ou je peux directement les insérer dans la main.
    Ce n'est pas du C++ natif, oublie. Tout ce que tu veux savoir se trouve dans la FAQ.
      0  0

  11. #11
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Par défaut
    Voilà ce qui correpond aux alentours de la ligne 724 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    LinearEquationSolver::LinearEquationSolver(const BaseMatrix& bm)
    : gm( ( ((BaseMatrix&)bm).Evaluate() )->MakeSolver() )
    {
       if (gm==&bm) { REPORT  gm = gm->Image(); }
       // want a copy if  *gm is actually bm
       else { REPORT  gm->Protect(); }
    }
    Merci pour le conseil je veux voir aux FAQ!
      0  0

  12. #12
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Par défaut
    C'est ce que je trouve sur la FAQ, est ce ce que ça marche pour la lecture ou l'écriture de nombres réels?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    include <fstream>
    #include <iostream>
     
    std::ofstream FileOut("Toto.txt", std::ios_base::binary);
    int xout = 24;
    FileOut.write(reinterpret_cast<const char*>(&x), sizeof(int));
    FileOut.close();
     
    std::ifstream FileIn("Toto.txt", std::ios_base::binary);
    int xin;
    FileIn.read(reinterpret_cast<char*>(&x), sizeof(int));
    FileIn.close();
     
    std::cout << xin << std::endl; // Affiche "24";
      0  0

  13. #13
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Par défaut
    Bon en fiat je voudrais lire un fichier qui contient une matrice triangulaire, genre (voir pièce fichier joint à ouvrir avec bloc-notes)
    Mais je ne sais pas du tout comment programmer ça sous c++, peux-tu m'éclairer la dessus.
    Fichiers attachés Fichiers attachés
      0  0

  14. #14
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    std::getline est ton amie!
    Il y a tout ce qu'il faut dans la FAQ
      0  0

  15. #15
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Par défaut
    Mecri pour ta réponse!
    Mais je ne pense pas que std::getline soit autant mon amie, car elle ne permet de lire qu'une ligne des string, alors que moi j'ai besoin d'une fonction qui lit des nombres réels !!
      0  0

  16. #16
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    L'opérateur >> est ton ami.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    double d1, d2, d3, ...
     
    std::ifstream File("Glop.txt");
     
    File >> d1 >> d2 >> d3 >> ...
    (sans gestion d'erreur)
      0  0

  17. #17
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 52
    Par défaut
    Bonjour,

    Merci pour ton dernier message, je viens seulement de m'en apercevoir. A ce propos je n'ai toujours pas testé ce que tu m'a dis. Mais au lieu d'importer une matrice à partir d'un fichier .txt, j'ai preferé tester d'abord la validité de mon code, c'est pour cette raison que j'ai commencé d'abord par mettre en place dans ma main un test avec un matrice de dimension 3 et là j'ai un autre type d'erreur. (juste après édition des liens en cours)
    Je ne vois du tout pas à quoi ca pourrait correpondre aurais-tu une idée la-dessus?

    Merci


    ------ Début de la génération*: Projet*: CorrelSimul, Configuration*: Debug Win32 ------

    Compilation...
    Stdafx.cpp
    WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
    Compilation...
    Submat.cpp
    Solution.cpp
    Sl_ex.cpp
    Newmatex.cpp
    Newmat9.cpp
    Newmat8.cpp
    Newmat7.cpp
    Newmat6.cpp
    Newmat5.cpp
    Newmat4.cpp
    Newmat3.cpp
    Newmat2.cpp
    Newmat1.cpp
    Myexcept.cpp
    essai.cpp
    WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
    CorrelSimul.cpp
    WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
    Cholesky.cpp
    Bandmat.cpp
    Génération de code en cours...
    Édition des liens en cours...
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) déjà défini(e) dans libcpmtd.lib(newop.obj)
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) déjà défini(e) dans LIBCMTD.lib(dbgdel.obj)
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) déjà défini(e) dans libcpmtd.lib(newaop.obj)
    nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) déjà défini(e) dans LIBCMTD.lib(delete2.obj)
    CorrelSimul.obj : error LNK2001: symbole externe non résolu "void __cdecl EigenValues(class SymmetricMatrix const &,class DiagonalMatrix &,class Matrix &)" (?EigenValues@@$$FYAXABVSymmetricMatrix@@AAVDiagonalMatrix@@AAVMatrix@@@Z)
    Debug/CorrelSimul.dll : fatal error LNK1120: 1 externes non résolus

    Le journal de génération a été enregistré à l'emplacement "file://d:\Documents and Settings\Amor\My Documents\Visual Studio Projects\correlation_c++\Debug\BuildLog.htm"
    CorrelSimul - 6 erreur(s), 0 avertissement(s)


    ---------------------- Terminé ----------------------

    Génération*: 0 a réussi, 1 a échoué, 0 a été ignoré
      0  0

  18. #18
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Je pense qu'il y a un conflit avec les bibliothèques que tu utilises. Si c'est bien les MFC (y a de grandes chances, avec "afxmachin"), il faut que tu ailles poser ta questions sur le forum MFC.

    Pour la dernière, il semble que tu aies déclaré mais pas défini la fonction EigenValues.
      0  0

  19. #19
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Merci d'éviter le multipost, cela disperse les réponses et encombre inutilement la base de données.

    http://www.developpez.net/forums/sho....php?p=1195530
      0  0

Discussion fermée
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/11/2010, 23h17
  2. Réponses: 5
    Dernier message: 10/12/2008, 23h00
  3. programme pour rechercher un codon stop sur une chaine d'adn sous perl
    Par thierry7106 dans le forum Bioinformatique
    Réponses: 4
    Dernier message: 13/04/2007, 01h02
  4. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24
  5. existe t 'il des programme pour transformer les bases
    Par creazone dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 05/10/2004, 14h11

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