Programmer une fonction second degré en c

Fermé
JoeAstor - 2 janv. 2023 à 16:08
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 3 janv. 2023 à 07:39

Bonjour,

je doit écrire ce programme comment je peux faire pour réaliser cet exercice en langage c quelqu’un pourrait ! Me donner un programme similaire pour que je m’inspire ce sait pas d’où commencé 

Merci d’avance 
 

A voir également:

5 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
2 janv. 2023 à 17:09

Bonjour 

tout d'abord https://www.commentcamarche.net/infos/25899-forum-ccm-mode-d-emploi-demander-de-l-aide-pour-un-exercice/

Ensuite, tu ne sais pas par où commencer, mais ton énoncé décrit étape par étape ce que tu dois faire.

Donc commence par faire ce qui est décrit.


0

Bonsoir merci pour ta réponse mais en faite sii j’ai commencé et j’ai écrit le programme je vous juste vérifié si c’est la même chose je me suis arrêté à l’avant dernière question G je sais pas comment regrouper tout ces fonctions dans le main  voilà le code complet 

#include <stdio.h>
#include <math.h>
#include <string.h>

// Type structuré pour stocker les informations sur une fonction du second degré
typedef struct {
  double a, b, c;
  char nom[10];
} F2d;

// Type structuré pour stocker les informations sur un point
typedef struct {
  double x, y;
  char nom[5];
} Point;

// Fonction pour saisir une fonction du second degré
F2d SaisieFonct2Degre(void) {
  F2d f;

  printf("Saisissez les coefficients a, b et c de la fonction du second degré : ");
  scanf("%lf%lf%lf", &f.a, &f.b, &f.c);

  while (f.a == 0) {
    printf("Le coefficient a doit être non nul. Saisissez à nouveau a, b et c : ");
    scanf("%lf%lf%lf", &f.a, &f.b, &f.c);
  }

  printf("Saisissez le nom de la fonction : ");
  scanf("%s", f.nom);

  return f;
}

// Fonction pour calculer l'image f(x) d'un réel x
Point CalculImage(F2d f, double x) {
  static int numero = 1; // Numéro du point (incrémenté à chaque appel de la fonction)
  Point p;

  p.x = x;
  p.y = f.a * x * x + f.b * x + f.c;
  sprintf(p.nom, "I%d", numero); // Création du nom du point (ex : I1, I2, etc.)
  numero++;

  return p;
}

// Fonction pour calculer le sommet de la parabole correspondant à une fonction du second degré
Point CalculSommetParabole(F2d f) {
  Point sommet;

  sommet.x = -f.b / (2 * f.a);
  sommet.y = f.a * sommet.x * sommet.x + f.b * sommet.x + f.c;
  strcpy(sommet.nom, "S"); // Le sommet a toujours le même nom

  return sommet;
}

// Fonction pour afficher la nature des racines d'une fonction du second degré
void AfficheNatureRacine(F2d f) {
  double delta = f.b * f.b - 4 * f.a * f.c;

  if (delta > 0) {
    printf("%s possède 2 racines réelles\n", f.nom);
  }
  else if (delta == 0) {
 printf("%s possède 1 racines DOUBLE\n", f.nom);
  }else { printf("%s possède 2 racines complexes\n", f.nom);
  }

0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
2 janv. 2023 à 23:25

Comme précisé dans les quelques conseils que je t'ai mis en lien, pour poster un code, il faut utiliser la coloration syntaxique https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code


0

J'ai regardé tes foncions en diagonale. À première vue, elles devraient fonctionner.
Cependant, quand tu lis tes chaînes (les noms), tu auras un problème si l'utilisateur tape plus de 9 (ou 4?) caractères.
Il serait préférable d'utiliser quelque chose du genre %9s au lieu de %s.
Ou bien utiliser fgets() qui peut limiter la longueur. Mais on doit soi-même éliminer la fin de ligne ('\n').

Mais si tu utilises %9s, le reste de la ligne restera dans le tampon de lecture.

Tu devras les "manger" avec  while(getchar() != '\n');   // Sans rien après.

Alors, tu te demandes comment écrire le main?
Tu n'as presque rien à faire.
+ Définir un tableau de points.
+ Appeler la fonction qui lit les coefficients.
+ Appeler la fonction qui calcule le sommet.
+ Appeler à répétition la fonction qui évalue les points.
(en prenant garde de ne pas dépasser la dimension du tableau)

0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
3 janv. 2023 à 06:30

Bonjour Pierrot

À nouveau, l'énoncé est posté en tant qu'image.

Les longueurs des noms y sont imposées, par contre, il n'est pas dit si le code doit gérer les erreurs de saisie de l'opérateur.

En général, pour un exercice de débutant, c'est précisé quand ça doit être le cas, mais on ne sait jamais.

Par contre, il ne lui est pas demandé d'évaluer un tableau de points, mais "seulement" de calculer le sommet et les racines.

0

D'accord. Ça simplife d'autant le code.
Le main se ramène donc à trois appels de fonctions (un appel chacune).

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
3 janv. 2023 à 07:39

Sauf que la fonction de calcul des racines n'est pas écrite


0