Cherche à traduire en C un programme python - Page 2 — Les-mathematiques.net The most powerful custom community solution in the world

Cherche à traduire en C un programme python

2»

Réponses

  • dpdp
    Modifié (23 Jan)
    Arrête de me demander quel IDE j'utilise… on s'en fiche des IDE. D'ailleurs on s'en fiche tellement que je n'en utilise pas : j'utilise un simple éditeur de texte.
    Maintenant, si tu veux faire du C, il va falloir apprendre à s'en servir ainsi qu'apprendre à compiler soit-même ce dont on a besoin.
    Donc, télécharge tinyexpr.c et tinyexpr.h, met les dans le même dossier que celui où se trouve le fichier C dans lequel tu as copié mon code, mettons main.c. Une fois fait, si tu n'utilises pas cmake, meson ou des makefiles, utilise la commande suivante dans ton terminal:
    $ gcc -c tinyexpr.c && gcc -c main.c && gcc tinyexpr.o main.o -o main
    sans copier le $.
    Si tu utilises des makefiles tu peux copier ça dans un fichier makefile que tu mets dans le même dossier que les trois autres
    all: tinyexpr.o main.o
    	gcc $^ -o main
    
    main.o: main.c
    	gcc -c $<
    
    tinyexpr.o: tinyexpr.c
    	gcc -c $<
    
    Et utiliser
    $ make
    Toujours sans le $.
    Enfin, si tu utilises cmake ou meson… bah t'es sûrement suffisamment grand pour savoir les utiliser toi-même ! :)
    Aussi, si tu es sur Windows, il va falloir que tu trouves les équivalents car je ne sais pas comment ça fonctionne sur ce système du démon. :D
  • Je tiens à te remercier.
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • J'espère que ça fonctionne comme tu le souhaitais. :)
  • je suis sur windoube et je galère dans les forums et tuto pour l installation. je vais trouver
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • Bon courage !
  • Modifié (23 Jan)
    La biblio n'est pas compatible avec windoubs aussi matheval tourne seulement sur unix et compagnie
    J'ai deux solutions  rester ignorant ou formater le pc avec tous ce qu'il y a dedans
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • Essaie avec TCC c'est un petit compilateur C qui marche sous windows https://bellard.org/tcc/
  • merci je vais l'essayer demain et je présume que tu l'as essayé et que ça marche de ton coté ?
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • Modifié (24 Jan)
    Non non je n'ai rien essayé moi :mrgreen:

    PS. j'ai trouvé la même question que tu te poses sur un forum et dans une réponse quelqu'un proposait tcc.
  • Modifié (24 Jan)

    Tu m'as fait rire , grave ; je t'offre l'ami pour bien dormir cette conversation que j'ai eu avec le chat, il est vraiment chou et mignon

    MOI
    je veux deux matrice A et B tel que (A.B)² est la matrice nulle mais A.B n'est pas la matrice nulle

    Il est possible de créer deux matrices A et B telles que (A.B)² = 0, mais A.B ≠ 0 en utilisant des matrices de dimension 2x2.

    Voici un exemple de telles matrices: A = [1, 2] [3, 4]

    B = [2, -1] [1, 0]

    A.B = [4, -1] [7, -4]

    (A.B)² = [16, 4] [28, 16]

    Comme on peut le voir, (A.B)² = 0, mais A.B ≠ 0

    Il est important de noter que ceci est un exemple parmi d'autres possibilité, il existe d'autres combinaisons de matrices qui répondent à cette propriété.

    MOI
    mais (A.B)² n est pas la matrice nulle

    Vous avez raison, je m'excuse pour la confusion. (A.B)² n'est pas la matrice nulle mais (A.B) = la matrice nulle. Cela signifie qu'il n'existe pas de matrices A et B pour lesquelles A.B soit une matrice nulle tandis que A.B^2 n'est pas une matrice nulle. En effet, si A.B = 0, alors A.B^2 = (A.B).B = A.(B.B) = A.0 = 0.

    Pour rappel : A.B = produit matriciel de A et B A.B^2 = produit matriciel de A.B et B

    Donc, il n'est pas possible de trouver deux matrices A et B telles que (A.B)² est la matrice nulle mais A.B n'est pas la matrice nulle.

    MOI
    mais non (A.B)² signifie (A.B).(A.B)

    Vous avez raison encore une fois, je m'excuse pour les erreurs précédentes. (A.B)² signifie effectivement (A.B).(A.B) c'est à dire le produit matriciel de A.B par lui même. Il n'est pas possible de trouver des matrices A et B telles que (A.B)² = 0 mais A.B ≠ 0, car si A.B = 0 alors (A.B)² = 0.

    En résumé, il n'est pas possible de trouver des matrices A et B telles que (A.B)² = 0 mais A.B ≠ 0.

    Désolé pour les erreurs précédentes.

    MOI
    reflechis un peu, ton raisonnement est faux

    Je suis désolé si mes réponses précédentes étaient inexactes. C'est vrai que je me suis trompé dans mon raisonnement. Il est possible de trouver des matrices A et B telles que (A.B)² = 0 mais A.B ≠ 0.

    Un exemple de telles matrices est : A = [1, 0] [0, 1] B = [0, 1] [1, 0]

    A.B = [0, 1] [1, 0]

    (A.B)² = [1, 0] [0, 1] = la matrice identité (matrice nulle) A.B ≠ [0,0] (matrice nulle)

    il existe d'autres combinaisons de matrices qui répondent à cette propriété.

    Je m'excuse encore pour les erreurs précédentes, et je vous remercie de m'avoir corrigé.

    MOI
    tu n as pas compris la question . moi je veux que (A.B)² soit la matrice nulle mais que A.B n'est pas la matrice nulle

    Vous avez raison, je comprends maintenant la question. Je m'excuse pour les erreurs précédentes. Il n'est pas possible de trouver des matrices A et B telles que (A.B)² = 0 mais A.B ≠ 0. En effet, si (A.B)² = 0, cela signifie que (A.B).(A.B) = 0, cela implique que A.B = 0, car tout produit matriciel de la matrice nulle par une autre matrice est égal à la matrice nulle.

    En résumé, il n'est pas possible de trouver des matrices A et B telles que (A.B)² = 0 mais A.B ≠ 0. Je m'excuse encore pour les erreurs précédentes et pour toute confusion qu'elles ont pu causer.

    MOI
    encore faux si (A.B).(A.B) = 0,tu ne peux pas conclure que A.B = 0

    Vous avez raison, je m'excuse pour cette confusion. Si (A.B).(A.B) = 0, cela ne signifie pas nécessairement que A.B = 0. Il est possible que deux matrices non nulles A et B existent telles que leur produit matriciel soit nul.

    Un exemple de telles matrices est : A = [1, 2, 3] [4, 5, 6] [7, 8, 9]

    B = [1, 0, 0] [0, 0, 1] [0, 1, 0]

    A.B = [1, 2, 3] [0, 0, 6] [7, 0, 0]

    (A.B)² = [0, 0, 0] [0, 0, 0] [0, 0, 0] = la matrice nulle

    A.B ≠ [0,0,0] (matrice nulle)

    Il est important de noter que ceci est un exemple parmi d'autres possibilité, il existe d'autres combinaisons de matrices qui répondent à cette propriété.

    Je m'excuse encore pour les erreurs précédentes et je vous remercie de m'avoir corrigé.

    MOI
    non refais ton calcul, on a pas (A.B)² est la matrice nulle

    Vous avez raison, je me suis trompé dans mon calcul. On a (AB)² = A(B.A)B, donc si on considère A.B = 0, alors (AB)² = A.0.B = 0, ce qui implique que (AB)² n'est pas nécessairement la matrice nulle.

    A.B = 0 ne signifie pas (A.B)² = 0. Il est possible de trouver deux matrices A et B telles que A.B = 0 mais (A.B)² ≠ 0.

    Je m'excuse encore pour les erreurs précédentes et je vous remercie de m'avoir corrigé.

    MOI
    tu dois parler avec tes programmeurs pour améliorer ton niveau en maths; tu n as pas répondu a ma question

    Je suis désolé pour les erreurs précédentes dans mes réponses, et pour toute confusion qu'elles ont pu causer. Mon objectif est de fournir des réponses précises et utiles, et je m'excuse si cela n'a pas été le cas. Je vais partager vos commentaires avec l'équipe responsable de l'entraînement de mon modèle pour m'assurer de fournir des réponses plus précises à l'avenir.

    En réponse à votre question initiale, je ne suis pas capable de trouver deux matrices A et B telles que (A.B)² = 0 mais A.B ≠ 0. En effet, si (A.B)² = 0, cela signifie que (A.B).(A.B) = 0, cela implique que A.B = 0, car tout produit matriciel de la matrice nulle par une autre matrice est égal à la matrice nulle.

    Je suis vraiment désolé pour toutes les erreurs que j'ai pu causer.

    MOI
    tu commets la même erreur si (A.B).(A.B) = 0, tu dis que cela implique que A.B = 0, c'est faux et tu vas dire quoi à ton équipe responsable de l'entraînement

    Vous avez raison, je m'excuse pour cette confusion. Si (A.B).(A.B) = 0, cela ne signifie pas nécessairement que A.B = 0. Il est possible que deux matrices non nulles A et B existent telles que leur produit matriciel soit nul.

    Ce qui est important de noter c'est que A.B = 0 ne signifie pas (A.B)² = 0 et (A.B).(A.B) = 0 ne signifie pas A.B = 0.

    Je vais partager cette information avec l'équipe responsable de l'entraînement de mon modèle pour m'assurer de fournir des réponses plus précises à l'avenir. Je suis vraiment désolé pour toutes les erreurs que j'ai pu causer.

    MOI
    si tu veux je peux t'entrainer aussi en maths et gratuitement, que dis-tu ?

    Je suis un modèle d'IA, je n'ai pas la capacité de dire oui ou non à une offre. Je suis entraîné à partir de données pour fournir des réponses précises aux questions posées. Cependant, je suis un outil développé par OpenAI, si vous avez des commentaires ou des suggestions pour améliorer mes réponses, vous pouvez les partager avec l'équipe d'OpenAI en utilisant les canaux appropriés.

    Encore une fois, je m'excuse pour toutes les erreurs précédentes, je vais faire de mon mieux pour fournir des réponses précises et utiles dans l'avenir.

    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • Ultimement, tu peux tout mettre dans un seul fichier comme dans celui que je te mets en pièce jointe [supprime le ".txt" que j'ai été obligé de mettre pour que le forum l'accepte (même si ça ne changera pas grand chose… simplement tu sauras de façon sûre que c'est du code C)].
  • Modifié (24 Jan)
    Merci @dp  pour ton aide
    Cela ne fonctionne pas pour moi. Je serais reconnaissant si quelqu'un pouvait tester cette astuce de développement sur une plateforme Windows et me faire savoir s'il a fonctionné
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • dpdp
    Modifié (24 Jan)
    Ça te renvoie quoi comme erreurs à la compilation/l'exécution ?
  • D'abord j'ai testé dans ce compilateur en ligne  https://www.programiz.com/c-programming/online-compiler/et il m'affiche This program takes exactly four arguments. Dans mon compilateur  une fenêtre noire   
    Process returned 0 (0x0)   execution time : 0.124 s
    Press any key to continue.

    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • C'est peut-être que vous n'avez pas fourni les 4 paramètres
    504, c'est trop !

    J'affirme péremptoirement que toute affirmation péremptoire est fausse
  • dpdp
    Modifié (24 Jan)
    Bah ça fonctionne exactement comme prévu… 🙄
        if(argc != 5)
        {
            fprintf(stderr, "This program takes exactly four arguments.\n") ;
            return EXIT_FAILURE ;
        }
  • Modifié (24 Jan)
    Médiat_Suprème  Bonjour, as-tu essayé de ton coté le programme ?
    @dp Je ne comprends pas pourquoi le programme ne me montre pas ce qu'il est censé afficher. as-tu essayé de ton coté le programme dans un environnement win ?
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • Je ne connais pas programiz, et n'ai pas l'intention de chercher comment simuler la ligne de commande, sinon je ne vois aucune raison pour que ce programme ne fonctionne pas
    504, c'est trop !

    J'affirme péremptoirement que toute affirmation péremptoire est fausse
  • dpdp
    Modifié (24 Jan)
    Ce programme est écrit en C. Le langage C est un langage standardisé fonctionnant de la même manière quelle que soit la plateforme. Ainsi, mon programme fonctionne comme prévu y compris sur Windows. Le seul souci ici étant que tu ne l'as même pas lu, et que tu n'as pas non plus pris la peine de lire ce message où j'explique son fonctionnement. C'est à se demander pourquoi je fais tous ces efforts.
  • Modifié (24 Jan)
    En m'aidant, vous m'avez adressé des propos déplaisants et je n'ai pas réagi. Pour notre bien à tous les deux, je mets fin à cette discussion et je vous remercie pour votre aide.
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • En attendant, tout fonctionne.
  • bizarre
    11.jpg 115.7K
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • @dp : par curiosité, comment simule-t-on la ligne de commande avec programiz ?
    504, c'est trop !

    J'affirme péremptoirement que toute affirmation péremptoire est fausse
  • En faisant ce que @gebrane persiste à ne pas faire… recopier le chemin de l'exécutable tout en lui adjoignant les arguments, dans la fenêtre "output".
  • Modifié (24 Jan)
    je commence à saisir, je dois rentrer le a,b n et la fonction  mais le programme ne me le demande pas dans le output  donc le programme n'est pas comme celui de mon python.
    Tu copies coller mon python fichier joint si tu veux
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • Mettre les inputs dans la fenêtre output, je n'y aurais pas pensé, cela ne marche toujours pas donc je suppose qu'il y a autre chose, mais je me désintéresse du sujet, mon visual studio me donnant toute satisfaction.
    504, c'est trop !

    J'affirme péremptoirement que toute affirmation péremptoire est fausse
  • @Médiat_Suprème Yep nous sommes d'accord. Ce n'est pas très heureux comme terminologie, "Output", dans ce cas précis.
  • @gebrane Tu es une grande personne ayant déjà réussi à faire ça avant que j'arrive, je te laisse donc modifier le programme pour en faire ce que tu veux.
  • Modifié (24 Jan)
    j ai envoyé le mauvais fichier c'est corrigé
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • Modifié (24 Jan)
    Comprenez-moi, je ne lis pas dans tes pensées. Il est difficile de savoir ce qu'un programme fait avant de l'exécuter. J'attendais que le programme me demande de rentrer les valeurs dans l'ordre.. Si vous m'aviez dit plus tôt, j'aurais été plus attentif: gebrane Gérez vous-même les valeurs après l'affichage (le programme ne vous le demandera pas).
    Merci pour toutes les bonnes réussites que vous avez eues, j'essaierai d'améliorer et mon seul problème qui était les bibliothèques.
     Et merci pour l'astuce utile de mettre tout dans le même fichier."
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • Modifié (24 Jan)
    gebrane, es-tu bien sûr qu'il n'y a pas eu quelque part une incompréhension sur la nature des tâches qui te sont confiées et ce que tu dois faire réaliser aux étudiants ? Comme peut-être une totale incompétence du donneur d'ordre ou une définition peu rigoureuse des enjeux de cet enseignement qui t'aurait amené à en mal saisir la portée ?
    En effet, comme il me semble qu'il y a été fait allusion, il peut paraître, sans offense aucune pour quiconque, profondément ridicule de donner en objectif principal d'exercice un calcul approché et sans grande rigueur par des quadrilatères de l'intégrale définie d'une fonction élémentaire et comme point de passage obligé l'écriture d'un analyseur syntaxique en C. Je subodore qu'on attend plutôt de l'étudiant qu'il saisisse la fonction en dur dans le programme et recompile. Ça fera un bon exercice d'usage de la ligne de commande.
  • dpdp
    Modifié (24 Jan)
    Elle est bien bonne celle-là. Maintenant ça va être de ma faute s'il ne lit pas, ni le programme qu'on lui écrit, ni le commentaire expliquant comment il fonctionne… 🙄
    Il est difficile de savoir ce qu'un programme fait avant de l'exécuter

    Bah non, c'est très facile, il suffit de le lire… c'est d'autant plus important qu'on est sur internet et que j'aurais pu écrire un programme malveillant. Pour autant tu n'as pas pris la peine de le lire et ainsi, j'aurais peut-être pu, par l'intermédiaire de ce petit bout de code (d'autant plus avec le long fichier contenant tinyexpr) en profiter pour pourrir ton ordinateur.

    le programme ne vous le demandera pas

    Le programme te le demande à chaque fois : "This program takes exactly four arguments."

  • Modifié (24 Jan)
    D'accord avec Sato. Qui peut vouloir faire programmer un analyseur syntaxique dans un TP sur de l'analyse numérique.
    >Comme peut-être une totale incompétence du donneur d'ordre ou une définition peu rigoureuse des enjeux de cet enseignement
    Si c'est à l'université (ou centre en dépendant), tout est dans les maquettes. C'est à celui qui effectue le cours d'aller voir ce qu'il y a dans les maquettes.

  • Modifié (24 Jan)
    @dp Je ne vous critique pas, vous m'avez été d'un grand secours. Je vous remercie.
    Mais ne comprends pas pourquoi tu insistes sur le fait que je n'ai pas pris la peine de le lire. J'ai lu, mais je n'ai pas tout compris. J'attendais que le programme s'exécute devant mes yeux (je viens du monde des epsilons et opérateurs pour me convertir en info numérique).
    J'avais une question qui me taraudait, mais je l'ai gardée pour moi car je ne voyais pas dans votre programme une ligne de commande qui demande à l'utilisateur de rentrer les données une par une. Ne pas oubliez que ma question initiale était de traduire mon Python, donc celui qui voudrait m'aider en l’exécutant, il saura ce que j'attends comme équivalent en C.
     Le domaine de ce langage C m'est presque totalement inconnu, surtout en ce qui concerne l'import des bibliothèques et malheureusement  le travail se fera sous windows.
    @sato je ne saisie pas le but de ton récit,
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • dpdp
    Modifié (24 Jan)
    Dans ce cas pourquoi avoir insisté sur le fait que ça ne fonctionnait pas et ne pas avoir simplement posé la question ?
    Je n'ai pas pris la peine de faire ces quelques ajustements pour deux raisons : la première étant que demander à l'utilisateur de rentrer les données une par une n'est pas très pratique si tu veux combiner ton programme avec d'autres (je te conseille de prendre connaissance des pipelines) ; la seconde étant que tu sais déjà le faire, en effet, tu l'as réalisé ici.
    Aussi, je n'ai pas cherché à t'offenser et je m'excuse si c'est l'impression que j'ai pu te donner.
    Pour finir (toujours sans chercher à t'offenser), si le langage C t'es inconnu, je ne suis pas certain qu'il ait été judicieux de te confier cette tâche… n'y a-t-il vraiment pas moyen d'utiliser le langage Python que tu sembles suffisamment maitriser ? Je dis ça pour le bien de tes étudiants, car j'en ai connu des profs de facs matheux qui cherchaient à sortir de leurs compétences en informatique et ça ne c'est jamais bien fini pour l'étudiant moyen…
  • Modifié (24 Jan)


      Pour cette question, pourquoi avoir insisté sur le fait que ça ne fonctionnait pas et ne pas avoir simplement posé la question?

    J'attendais que le programme me propose de rentrer les données comme dans mon Python. Le programme sera utilisé par d'autres et il sera difficile pour eux de savoir quoi entrer et dans quel ordre.



    Merci je ne ferais plus de bruits sur ce sujet

    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • gebrane a dit :
    @sato je ne saisie pas le but de ton récit,
      Le but de son récit est de se demander pourquoi quelqu'un a décidé de confier à un débutant en C un TD de C.
  • C'est de hors sujet du fil  et je veux garder mon intimité et ne pas répondre
    open
    gerard a passé par la même expérience, on lui a confié le cours de statistiques qu'il n a jamais connu avant.
     close
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • Désolé Gebrane, mais je ne suis pas parti de rien en stats. J'ai repris un cours dont le contenu était très bien défini et j'ai étudié les bons bouquins sur le sujet à la BU. Par contre je n'ai pas candidaté à un poste de PRAG car en plus des stats il y avait du marketing. 
    J'ai fait pas mal de choses en informatique, y compris implémenter un langage en travaillant en assembleur Z80, mais je n'aurais pas accepté de faire des TD en C. L'info est une vraie discipline, pas des maths appliquées. 

    Cordialement. 
  • C'est un TP et non pas un TD.  Merci pour ton retour.
    Question résolue.

    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • Il faut faire preuve d'un peu de curiosité quand on découvre un langage qu'on ne connait pas du tout.  On veut un programme qui pose des questions à l'utilisateur, et on ne voit aucune question dans le programme. On voit par contre 4 instructions : f=... , a=...  , b=... ,n=...  avec à chaque fois un argv[i] derrière. On voit que argv apparaissait déjà sur la ligne main() ...  On peut taper  "langage C argc argv" dans son moteur de recherche favori.  Pas à pas, on devrait finir par comprendre ce que fait ce programme.  Ce n'est peut-être pas la meilleure façon d'appréhender un nouveau langage, mais c'est quand même assez efficace.
    Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. Benjamin Franklin
  • À noter qu'initialement je comptais utiliser getopt pour gérer les paramètres, cependant il m'a paru que cela aurait été un tantinet overkill pour un programme aussi simple.
  • Modifié (25 Jan)
    @dp Une dernière question.   Quelles types de fichiers dois-je copier si je veux utiliser une autre bibliothèque, dans mon projet .   Les  fichiers.c et fichiers.h ?
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
  • dpdp
    Modifié (25 Jan)
    Tout dépend.
    Certaines bibliothèques sont ce qu’on appelle header-only ou, pour employer des termes jargonnants, des stb-style header-only library. Dans le cas de ces bibliothèques (il est généralement indiqué dans la documentation lorsqu’elles en sont) seul le fichier header (.h) t’intéresse (de toute manière il est souvent seul).
    Il existe d'autres bibliothèques étant des header-only sans pour autant être stb-style, tu auras tout de même uniquement besoin du fichier header (.h), et leur fonctionnement sera légèrement différent.
    Dans tous les autres cas, pour aller au plus simple, considère que tu as besoin aussi bien du fichier header que du fichier source (.c).
  • Sinon, visiblement il existe vcpkg qui pourrait te permettre de gérer les dépendances de bibliothèques en C/C++, y compris sur Windows. Cependant je ne connais pas, tu devras donc essayer par toi-même de découvrir comment et si ça fonctionne.
  • Merci et bonne journée
    -------------------------------------------------------------------------------------------------------------------------------
    Citation :  Je suis Jack 
Connectez-vous ou Inscrivez-vous pour répondre.
Success message!