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 :

DM en langage c


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2022
    Messages : 3
    Par défaut DM en langage c
    1 Présentation
    Il s’agit de réaliser une application en C répondant à une « cahier des charges » et respectant les
    contraintes posées.
    Vous devez réaliser une application en mode console permettant de résoudre un système de deux
    équations à 2 inconnues, x et y:
    aX + bY = c
    dX + eY = f
    Vous utiliserez la méthode dite de Cramer pour résoudre le système.
    Elle consiste à trouver les solutions pour x et y en calculant des déterminants :
    X = X / 
    Y = Y / 
    avec :
     = [
    a b
    d e ]
    = ae – bd X = [
    c b
    f e ]
    = ce – bf Y = [
    a c
    d f]
    = af – cd
    Il n’y a pas de solution réelle au système dans le cas où  vaut 0.
    2 Spécifications
    L’application doit permettre de résoudre des systèmes tant que l’utilisateur le désire.
    Elle doit permettre la saisie des coefficients a, b, c, d, e et f.
    Elle doit calculer les solutions pour X et Y, si elles existent.
    Elle doit afficher le système saisi et les solutions (si elles existent).
    3 Contraintes
    L’application doit être le plus modulaire possible afin de rendre le main() le plus court et le plus
    lisible possible.
    Pour cela, même s’il est recommandé d’en proposer d’autres, les fonctions suivantes,
    prototypes dans « mesFonctions.h » et implémentation dans « mesFonction.c », sont imposées :
    void SaisieCoef(double* a, double* b, double* c, double* d, double* e, double* f);
    Elle permet la saisie des coefficients du système et les range aux adresses reçues en paramètre.
    double Determinant(double coefs[]);
    Calcule et retourne le déterminant des coefficients reçus en paramètre dans le tableau de 4
    éléments. Celui-ci est organisé, dans le cas de , dans l’ordre suivant : {a, b, d, e}
    L’affichage après résolution est de la forme suivante :
    Le système :
    | 1.500000X + 3.200000Y = 5000000
    | 4.600000X + 2.400000Y = 3.10000

    admet comme solution :
    | X = -0.187050
    | Y = 1.650180
    <<< UN AUTRE ? O ou N ... >>>




    Si quel qu'un pourrait m'aider ca serait vraiment cool merci

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour à toi aussi
    Citation Envoyé par romdu92 Voir le message
    Si quelqu'un pouvait m'aider ca serait vraiment cool merci
    Commençons par le commencement: qu'as-tu fait jusqu'à présent? As-tu au-moins écrit et testé les fonctions void SaisieCoef(double*, double*, double*, double*, double*, double*) et double Determinant(double coefs[])?
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2022
    Messages : 3
    Par défaut
    bonsoir merci d'avoir répondu a mon message
    Pour commencer j'ai chercher plusieurs manières de commencer mon code mais je n'est jamais réussi car je débute vraiment en c, donc non je n'est pas tester les fonctions void SaisieCoef(double*, double*, double*, double*, double*, double*) et double Determinant(double coefs[])

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par romdu92 Voir le message
    Pour commencer j'ai chercher plusieurs manières de commencer mon code
    Il faut commencer par le début: saisie d'une équation. Et cette saisie se fait par la saisie des coefficients. Perso j'aurais écrit une fonction de saisie pour "une" équation et l'aurais appelée deux fois (une fois pour chaque équation), ce qui aurait été plus souple (le jour où je passe à 3 ben je modifie juste ma boucle) mais puisque ton prof t'oblige à saisir les 2x3=6 coefficients d'un coup tu fais comme il dit.
    Donc tu commences par la saisie, et tu affiches les valeurs saisies. Ce sera un bon point de départ.

    Citation Envoyé par romdu92 Voir le message
    mais je n'est jamais réussi car je débute vraiment en c
    Mauvaise excuse. Tu as un DM censé représenter ton niveau donc tu es censé avoir le niveau. Si tu n'arrives pas à le faire, 3 possibilités
    1. il est trop dur pour toi car trop dur pour toute la classe, donc la classe aura là un motif de contestation valide
    2. il est trop dur pour toi parce que tu n'as pas appris le C (pas suivi les cours, pas écouté en classe, malade, etc). Et dans ce cas tu te remets au niveau puis tu pourras le faire (plein de tutos gratuits dans ce forum plus le mien peut-être un peu vieux dans le sens où il n'intègre pas les dernières syntaxes mais où tout ce qui y est écrit reste valide)
    3. il est trop dur pour toi parce que tu n'es pas fait pour programmer et dans ce cas il vaut mieux que tu changes de suite de branche avant qu'il soit trop tard

    Etre débutant n'est pas une tare, on l'a tous été, mais être débutant et ne rien faire pour changer cet état là c'en est une.

    Citation Envoyé par romdu92 Voir le message
    donc non je n'ai pas tester les fonctions void SaisieCoef(double*, double*, double*, double*, double*, double*) et double Determinant(double coefs[])
    Ben oui, car avant de les tester il faut les écrire. Si tu sais écrire une fonction Saisie(int*) alors tu sais écrire une fonction Saisie(double*) et de là ce n'est pas vraiment compliqué d'écrire une fonction Saisie(double*, double*, double*, double*, double*, double*). Mais si tu ne sais pas écrire une simple fonction de saisie alors cf le point 2 de la liste ci-dessus.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2022
    Messages : 3
    Par défaut dm en langage c
    Bonjour nous avons fait a peine 9h de cours en c en meme temps que l'algo, python, java script donc pour tous suivre c'est compliqué mais la n'est pas le problème en cours nous avons seulement appris les bases et le dm qu'on nous a donné est plus compliqué meme les personnes de la classe ayant un bons niveaux n'y arrive pas et nous avons deja alerter notre profs pour lui dire, il nous a seulement laisser plus de temps pour le faire.

  6. #6
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    Citation Envoyé par romdu92 Voir le message
    nous avons seulement appris les bases et le dm qu'on nous a donné est plus compliqué
    Qu'est ce qu'il y a de compliqué ? Il n'y a même pas de boucles, que des opérations de base (et 1 méthode Cramer ultra simplifiée sans inversion de matrice ni élimination colonne/ ligne)
    Lis ton sujet tu as tout dedans, ce n'est pas sérieux.

    Et pour ta future question , *X et &X, c'est le passage sortie / entrée-sortie (passage par adresse). Par défaut c'est le passage entrée (passage par valeur). Il faut lire tes cours.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #include <stdio.h>
    #include <stdlib.h>
     
     
    double Determinant(double coefs[]) { return ((coefs[0] * coefs[3]) - (coefs[2] * coefs[1])); }
     
     
    unsigned char methode_Cramer(double a, double b, double c, double d, double e, double f, double* X, double* Y) {
        double coefs[4] = {a, b, d, e};
        double det;
     
        det = Determinant(coefs);
     
        if ((det != 0) && (X != NULL) && (Y != NULL)) {
            coefs[0] = c; coefs[1] = b; coefs[2] = f; coefs[3] = e; (*X) = (Determinant(coefs) / det);
            coefs[0] = a; coefs[1] = c; coefs[2] = d; coefs[3] = f; (*Y) = (Determinant(coefs) / det);
     
            return 1;
        } else {
            return 0;
        }
    }
     
     
    int main()
    {
        double a=1.5f, b=3.2f, c=5, d=4.6f, e=2.4f, f=3.1f, X, Y;
     
        if ( methode_Cramer(a, b, c, d, e, f, &X, &Y) ) {
            printf("Le systeme :\n|%lfX + %lfY = %lf\n|%lfX + %lfY = %lf\n\nadmet comme solution :\n| X = %lf\n| Y = %lf\n", a, b, c, d, e, f, X, Y);
        } else {
            printf("Le systeme :\n|%lfX + %lfY = %lf\n|%lfX + %lfY = %lf\n\nn'admet pas de solution\n", a, b, c, d, e, f);
        }
     
     
        return EXIT_SUCCESS;
    }

Discussions similaires

  1. [langage] Je cherche un bon livre ?
    Par Anonymous dans le forum Langage
    Réponses: 13
    Dernier message: 09/04/2003, 13h16
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 16h33
  4. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37
  5. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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