Bonjour à tous,

Je cherche à tracer des graphiques de type nuage de points comme on en a sur les tableurs pour modéliser une courbe de dosage pHmétrique dans le cadre d'un cours.

J'ai créé deux tableaux dans fonctions.h ; le 1er tableau qui me renvoie les abscisses :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
{
    int i = 0;
    double Vb = 0;
 
    for (i = 0 ; i < 9 ; i++)
    {
        tableau[i] = Vb;
        printf("%f\n", tableau[i]);
        Vb=Vb+1;
    }
}
Un autre qui me trouve les ordonnées

void tableaudupH(double *tableau, double Ca, double Cb, double Va)
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
{
    double diff = 0, som = 0, diffcar = 0, somcar = 0, h = 0, Vb = 0;
    int i = 0;
 
    for (i = 0 ; i < 9 ; i++)
    {
 
        diff = Ca*Va-Cb*Vb;
        som = 2*(Va+Vb);
        diffcar = pow(diff,2);
        somcar = pow(som,2);
        h = diff/(som)+sqrt(diffcar/somcar + pow(10,-14));
        tableau[i] = -log10(h);
        printf("%f\n", tableau[i]);
        Vb=Vb+1;
 
    }
}
Et voici mon main.c

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Inclusion des bibliothèques standards
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
 
//Inclusion de la lib graphique
#include <SDL2/SDL.h>
 
// Inclusion d'un header maison qui va contenir les formules de calcul du pH
#include "fonctions.h"
 
int main (int argc, char** argv)
{
 
// Calcul des tableaux de valeur
    double Ca = 0.01, Cb = 0.1, Va = 10;
    double tableau[10] = {0};
 
    printf("Dosage d'un acide fort par une base forte\n");
 
   printf("Ceci est le tableau des valeurs du volume");
    tableauduvolume(tableau);
 
    printf("Ceci est le tableau des valeurs du pH");
    tableaudupH(tableau,Ca,Cb,Va);
 
 
 
// A partir d'ici création de la fenêtre de graphique
// création des variables
    int posX = 100, posY = 100, width = 640, height = 480;
 
// initialisation de la vidéo
    SDL_Init(SDL_INIT_VIDEO);
 
// création d'une fenêtre
    SDL_Window* window = NULL;
    window = SDL_CreateWindow("Dosage", posX, posY, width, height, SDL_WINDOW_SHOWN);
 
// création d'un renderer de fond blanc
    SDL_Renderer* renderer = NULL;
    renderer =  SDL_CreateRenderer( window, -1, SDL_RENDERER_ACCELERATED);
    SDL_SetRenderDrawColor( renderer, 255, 255, 255, 255 );
 
// Remplissage du fond en blanc
    SDL_RenderClear( renderer );
 
// Creation d'un rectangle de 10par10 à la position 300x100
    SDL_Rect rect;
    rect.x = 300;
    rect.y = 100;
    rect.w = 3;
    rect.h = 3;
 
// On passe en bleu pour le rectangle
    SDL_SetRenderDrawColor( renderer, 0, 0, 255, 255 );
    SDL_RenderFillRect( renderer, &rect );
 
// Mise à jour de l'écran avec le rectangle
    SDL_RenderPresent(renderer);
 
    // Wait for 5 sec SDL_Delay( 5000 );
 
    // on bloque la fenêtre à l'aide d'un event
    while (1) {
        SDL_Event e;
        if (SDL_PollEvent(&e)) {
            if (e.type == SDL_QUIT) {
                break;
            }
        }
    }
 
// On détruit tout proprement
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();
 
    return EXIT_SUCCESS;
}
Mon soucis est conceptuel. Je n'arrive pas à comprendre comment faire pour récupérer tableauduvolume[0] et l'assigner à rect.x

(si j'arrive à comprendre cela je pense être capable de réitérer le processus pour assigner tableauduph[0] à rect.y ainsi qu'à créer une boucle pour parcourir tous les points).



Merci de votre aide.