RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Serv: irc.irc-land.org
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 pointeur de tableau de strucure???

Forum : C
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ C

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGES : [1] [2]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 935
Message
#149852
Posté le 28/02/08 à 22:32
c'est normal que ça ne marche pas. Ta fonction retourne un "couple" mais la valeur n'est pas utilisé par ton main...
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

landraille
Nouveau membre
Inscrit : 24/02/2008
Messages : 14
Message
#149854
Posté le 28/02/08 à 22:46
oula, je n'ai pas compris ta reponse... j'utilise les valeurs puisque je demande au programme de les afficher à l'ecran...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

rainbow
Membre du club
Chef de projet(s) :
- IA savane
- Team MoteurProg

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 935
Message
#149875
Posté le 29/02/08 à 11:38
En gros, les valeurs qui s'affichait selon ta méthode était des valeurs aléatoires. Je te montre : tu dois corrigé ton programme ainsi :

#include <stdio.h> #include <stdlib.h> #include <math.h> //bibliothèque contenant les fonctions log, log10 et pow dont on a besoin const double R=8.314; const long F=96500; struct couple { double pot; char ox[10]; double C_ox; char red[10]; double C_red; long x1; long x2; long x3; long x4; long n; char acide[10]; double C_acide; char base[10]; double C_base; double pka; }; struct couple chargement_manuel( void ) { struct couple redox; printf("Quel est le nombre d'electrons ?\n"); scanf("%ld", &redox.n); if (redox.n == 0) //si couple acido-basique { printf("Quel est l'acide?\n"); scanf("%s", &redox.acide); printf("Quel est la concentration de l'acide?\n"); scanf("%lf", &redox.C_acide); printf("Quel est la base?\n"); scanf("%s", &redox.base); printf("Quel est la concentration de la base?\n"); scanf("%lf", &redox.C_base); printf("Quel est le pka du couple?\n"); scanf("%lf", &redox.pka); } else // sinon couple redox { printf("Quel est le potentiel redox?\n"); scanf("%lf", &redox.pot); printf("Quel est l'oxydant? (n'oubliez pas d'indiquer la charge et sans espace)\n"); scanf("%s", redox.ox); printf("Quelle est la concentration de l'oxydant (en mol/L)?\n"); scanf("%lf", &redox.C_ox); printf("Quel est le reducteur? (n'oubliez pas d'indiquer la charge et sans espace)\n"); scanf("%s", redox.red); printf("Quelle est la concentration du reducteur (en mol/L)?\n"); scanf("%lf", &redox.C_red); printf("Quel est le coefficient stoechiometrique de H+ ?\n"); scanf("%ld", &redox.x1); printf("Quel est le coefficient stoechiometrique de l'oxydant ?\n"); scanf("%ld", &redox.x2); printf("Quel est le coefficient stoechiometrique du reducteur ?\n"); scanf("%ld", &redox.x3); printf("Quel est le coefficient stoechiometrique de l'eau ?\n"); scanf("%ld", &redox.x4); } return redox; } int main( void ) { long choix, menu=1; double T=0, var=0; long i=0, j=0; long pH=0; while (menu) { printf("=== Menu ===\n\n"); printf("1. Chargement manuel\n"); printf("2. Chargement depuis un fichier\n"); printf("3. Affichage de l'equation redox et calcul du potentiel apparent\n"); printf("4. Affichage du diagramme\n"); printf("5. Enregistrement des resultats dans un fichier\n"); printf("6. Chargement des resultats depuis un fichier sauvegarde\n"); printf("7. Quitter\n"); printf("\nVotre choix : "); scanf("%ld", &choix); printf("\n"); switch (choix) { case 1: printf("\n === Chargement manuel ===\n\n"); printf ("Quel est le nombre de couples? : "); scanf ("%ld", &j); printf ("Quelle est la temperature? : "); scanf ("%lf", &T); var = (R*T*log(10))/F; struct couple redox; // creation d'un tableau de structure. for (i=0;i<=j-1;i++) { printf("\n== Parametres pour le couple numero %ld ==\n",i+1); redox = chargement_manuel( ); //verification; if (redox.n == 0) printf("l'acide est %s, la base est %s et le pka du couple est %.2lf\n", redox.acide, redox.base, redox.pka); else printf("l'oxydant est %s, le reducteur est %s et coefficient de l'eau est %ld\n", redox.ox, redox.red, redox.x4); } break; case 2: printf("\n === Chargement depuis un fichier ===\n\n"); break; case 3: printf("\n === Affichage de la demi equation redox et calcul du potentiel apparent ===\n\n"); break; case 4: printf("\n === Affichage du diagramme ===\n\n"); break; case 5: printf("\n === Enregistrement des resultats dans un fichier ===\n\n"); break; case 6: printf("\n === Chargement des resultats depuis un fichier sauvegarde ===\n\n"); break; case 7: printf("\n === Quitter ===\n\n"); menu=0; break; default: printf("\nVotre choix n'est pas correct.\n"); break; } printf("\n\n"); } system("PAUSE"); }

Ton problème était le suivant :
Tu créais un tableau de couple (inutile), puis tu lançait la fonction en lui envoyant une copie de ton objet couple. La fonction demandait les infos, les stockait dans la copie envoyé, puis retournait le couple (mais la valeur de retour n'était pas utilisé !!!). Autrement dit, les valeurs intéressantes étaient dans la copie qui ne te parvenait pas (elle était uniquement retourné par la fonction).

J'ai procédé autrement :
Je créé un seul couple déjà, qui sera utilisé plusieurs fois, (enfin si tu préfère faire avec plusieurs c'est pas plus compliqué mais dans l'intérêt actuel, il n'y a aucun avantage à le faire), et qui s'initialise par la valeur de retour de ta fonction:
Aucun dit :
redox = chargement_manuel( );

Tu remarques que j'ai enlevé l'argument de ta fonction qui ne sert à rien, car je créé le couple qui va recevoir les données dans la fonction (l'envoie de ton couple actuel ne sert à rien si tu veux utiliser la valeur de retour et non un pointeur). Ensuite, je demande toutes les infos que tu voulais. J'ai rectifié 2 'ti trucs : t'avais du te planté t'avais écris :
Aucun dit :
printf("Quel est l'acide?\n");
scanf("%s", &redox.acide);
printf("Quel est la concentration de l'acide?\n");
scanf("%lf", &redox.acide);
printf("Quel est la base?\n");
scanf("%s", &redox.base);
printf("Quel est la concentration de la base?\n");
scanf("%lf", &redox.base);

au lieu (je suppose) de :
Aucun dit :
printf("Quel est l'acide?\n");
scanf("%s", &redox.acide);
printf("Quel est la concentration de l'acide?\n");
scanf("%lf", &redox.C_acide);
printf("Quel est la base?\n");
scanf("%s", &redox.base);
printf("Quel est la concentration de la base?\n");
scanf("%lf", &redox.C_base);

C'est bien ;) tes noms de variables sont explicites ;)

Et pour finir on indique
Aucun dit :
return redox;

pour donner une valeur de retour à ta fonction.

J'espère que les résultats affichés cette fois sont les bons (théoriquement côté programmation c'est OK mais je comprend rien au fonctionnement de ton programme mais bon ^^ les valeurs qu'il donne semblent OK (m'explique pas je suis loin de la prépa :D))

Bonnes vacances ;)
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

landraille
Nouveau membre
Inscrit : 24/02/2008
Messages : 14
Message
#150010
Posté le 03/03/08 à 19:26
salut

c'est bon, je m'en suis sorti, j'suis arrivé a faire une fonction qui me renvoie la structure sans a avoir à envoyer les pointeurs de chaque variable composant la structure!!!!
Ton dernier programme marchait bien mais je ne t'avais pas stipuler que je devais, pour la suite du programme, avoir acces a toutes les variables de chaque couple et donc que je devais obligatoirement avoir un tableau de structure.
merci pour tout
a+

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM C



    PAGES : [1] [2]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.