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
landraille
Nouveau membre
Inscrit : 24/02/2008
Messages : 14
Message
#149612
Posté le 24/02/08 à 21:47
Salut
J'aimerais savoir si il est possible de de faire un pointeur sur un tableau de structure. Le prof nous a donné cet exercice :
énoncé dit :
Exo2 : Reprendre l’exo 2 du TD 2 pour créer le menu suivant:
1 - Chargement manuel
2 - Chargement depuis un fichier
3 - Affichage de la demi équation redox, de l’équation de Nernst, Calcul du potentiel apparent.
4 - Affichage du diagramme.
5 - Enregistrement des résultats dans un fichier.
6 - Chargement des résultats depuis un fichier sauvegardé.
Q - Quitter.
Votre choix ?

Lorsque le menu sera au point, il faudra créer la procédure pour l’option n°1 (Chargement_manuel) sous forme de fonction en s’appuyant sur le programme de l’exo précédent (demande du nombre de couples, tableau de structures…).


Je pense que cet énoncé ne vous aidera pas trop alors je vous mets le programme que j'ai fait :
#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; }; //ne pas oublier le point virgule apres l'accolade fermante d'une structure!!!! void chargement_manuel(struct couple *pointeur_redox, long i) { //void car ne revoie aucune valeur avec la fonction return printf("Quel est le nombre d'electrons ?\n"); scanf("%ld", pointeur_redox[i].n); if ((*pointeur_redox).n ==0) //si couple acido-basique { printf("Quel est l'acide?\n"); scanf("%s", pointeur_redox[i].acide); printf("Quel est la concentration de l'acide?\n"); scanf("%lf", pointeur_redox[i].C_acide); printf("Quel est la base?\n"); scanf("%s", pointeur_redox[i].base); printf("Quel est la concentration de la base?\n"); scanf("%lf", pointeur_redox[i].C_base); printf("Quel est le pka du couple?\n"); scanf("%lf", pointeur_redox[i].pka); } else // sinon couple redox { printf("Quel est le potentiel redox?\n"); scanf("%lf", pointeur_redox[i].pot); printf("Quel est l'oxydant? (n'oubliez pas d'indiquer la charge et sans espace)\n"); scanf("%s", pointeur_redox[i].ox); printf("Quelle est la concentration de l'oxydant (en mol/L)?\n"); scanf("%lf", pointeur_redox[i].C_ox); printf("Quel est le reducteur? (n'oubliez pas d'indiquer la charge et sans espace)\n"); scanf("%s", pointeur_redox[i].red); printf("Quelle est la concentration du reducteur (en mol/L)?\n"); scanf("%lf", pointeur_redox[i].C_red); printf("Quel est le coefficient stoechiometrique de H+ ?\n"); scanf("%ld", pointeur_redox[i].x1); printf("Quel est le coefficient stoechiometrique de l'oxydant ?\n"); scanf("%ld", pointeur_redox[i].x2); printf("Quel est le coefficient stoechiometrique du reducteur ?\n"); scanf("%ld", pointeur_redox[i].x3); printf("Quel est le coefficient stoechiometrique de l'eau ?\n"); scanf("%ld", pointeur_redox[i].x4); } } int main() { long choix, menu=1; double T=0, var=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"); long i=0, j=0; 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[j]; // creation d'un tableau de structure. for (i=0;i<=j-1;i++) { printf("\n== Parametres pour le couple numero %ld ==\n",i+1); chargement_manuel(&redox[i], i); //verification; if (redox[i].n == 0) { printf("l'acide est %s, la base est %s et le pka du couple est %.2lf\n", redox[i].acide, redox[i].base, redox[i].pka); } else { printf("l'oxydant est %s, le reducteur est %s et coefficient de l'eau est %ld\n", redox[i].ox, redox[i].red, redox[i].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"); }


J'aimerais savoir si il possible de le faire avec un pointeur sur le tableau de structures? J'ai écris ce code mais il ne marche pas et je ne sais pas comment faire...

#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; }; //ne pas oublier le point virgule apres l'accolade fermante d'une structure!!!! void chargement_manuel(struct couple *pointeur_redox, long i) { //void car ne revoie aucune valeur avec la fonction return printf("Quel est le nombre d'electrons ?\n"); scanf("%ld", pointeur_redox[i].n); if ((*pointeur_redox).n ==0) //si couple acido-basique { printf("Quel est l'acide?\n"); scanf("%s", pointeur_redox[i].acide); printf("Quel est la concentration de l'acide?\n"); scanf("%lf", pointeur_redox[i].C_acide); printf("Quel est la base?\n"); scanf("%s", pointeur_redox[i].base); printf("Quel est la concentration de la base?\n"); scanf("%lf", pointeur_redox[i].C_base); printf("Quel est le pka du couple?\n"); scanf("%lf", pointeur_redox[i].pka); } else // sinon couple redox { printf("Quel est le potentiel redox?\n"); scanf("%lf", pointeur_redox[i].pot); printf("Quel est l'oxydant? (n'oubliez pas d'indiquer la charge et sans espace)\n"); scanf("%s", pointeur_redox[i].ox); printf("Quelle est la concentration de l'oxydant (en mol/L)?\n"); scanf("%lf", pointeur_redox[i].C_ox); printf("Quel est le reducteur? (n'oubliez pas d'indiquer la charge et sans espace)\n"); scanf("%s", pointeur_redox[i].red); printf("Quelle est la concentration du reducteur (en mol/L)?\n"); scanf("%lf", pointeur_redox[i].C_red); printf("Quel est le coefficient stoechiometrique de H+ ?\n"); scanf("%ld", pointeur_redox[i].x1); printf("Quel est le coefficient stoechiometrique de l'oxydant ?\n"); scanf("%ld", pointeur_redox[i].x2); printf("Quel est le coefficient stoechiometrique du reducteur ?\n"); scanf("%ld", pointeur_redox[i].x3); printf("Quel est le coefficient stoechiometrique de l'eau ?\n"); scanf("%ld", pointeur_redox[i].x4); } } int main() { long choix, menu=1; double T=0, var=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"); long i=0, j=0; 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[j]; // creation d'un tableau de structure. for (i=0;i<=j-1;i++) { printf("\n== Parametres pour le couple numero %ld ==\n",i+1); chargement_manuel(&redox[i], i); //verification; if (redox[i].n == 0) { printf("l'acide est %s, la base est %s et le pka du couple est %.2lf\n", redox[i].acide, redox[i].base, redox[i].pka); } else { printf("l'oxydant est %s, le reducteur est %s et coefficient de l'eau est %ld\n", redox[i].ox, redox[i].red, redox[i].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"); }


Merci d'avance

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

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

Avatar de rainbow
Inscrit : 26/05/2006
Messages : 926
Message
#149632
Posté le 25/02/08 à 09:51
Je te fais quelques modifications (j'ai pas pu tester par contre donc j'espère ne pas m'être planté xD) donc tu peux tester ça :


#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; }; //ne pas oublier le point virgule apres l'accolade fermante d'une structure!!!! void chargement_manuel(struct couple *pointeur_redox, long i) { //void car ne revoie aucune valeur avec la fonction return printf("Quel est le nombre d'electrons ?\n"); scanf("%ld", pointeur_redox[i].n); if ((*pointeur_redox).n ==0) //si couple acido-basique { printf("Quel est l'acide?\n"); scanf("%s", pointeur_redox[i].acide); printf("Quel est la concentration de l'acide?\n"); scanf("%lf", pointeur_redox[i].C_acide); printf("Quel est la base?\n"); scanf("%s", pointeur_redox[i].base); printf("Quel est la concentration de la base?\n"); scanf("%lf", pointeur_redox[i].C_base); printf("Quel est le pka du couple?\n"); scanf("%lf", pointeur_redox[i].pka); } else // sinon couple redox { printf("Quel est le potentiel redox?\n"); scanf("%lf", pointeur_redox[i].pot); printf("Quel est l'oxydant? (n'oubliez pas d'indiquer la charge et sans espace)\n"); scanf("%s", pointeur_redox[i].ox); printf("Quelle est la concentration de l'oxydant (en mol/L)?\n"); scanf("%lf", pointeur_redox[i].C_ox); printf("Quel est le reducteur? (n'oubliez pas d'indiquer la charge et sans espace)\n"); scanf("%s", pointeur_redox[i].red); printf("Quelle est la concentration du reducteur (en mol/L)?\n"); scanf("%lf", pointeur_redox[i].C_red); printf("Quel est le coefficient stoechiometrique de H+ ?\n"); scanf("%ld", pointeur_redox[i].x1); printf("Quel est le coefficient stoechiometrique de l'oxydant ?\n"); scanf("%ld", pointeur_redox[i].x2); printf("Quel est le coefficient stoechiometrique du reducteur ?\n"); scanf("%ld", pointeur_redox[i].x3); printf("Quel est le coefficient stoechiometrique de l'eau ?\n"); scanf("%ld", pointeur_redox[i].x4); } } int main() { long choix, menu=1; double T=0, var=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"); long i=0, j=0; 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 = (struct couple*)malloc(j*sizeof *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); chargement_manuel(redox, i); //verification; if (redox[i].n == 0) printf("l'acide est %s, la base est %s et le pka du couple est %.2lf\n", redox[i].acide, redox[i].base, redox[i].pka); else printf("l'oxydant est %s, le reducteur est %s et coefficient de l'eau est %ld\n", redox[i].ox, redox[i].red, redox[i].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"); }

En fait je pense que le problème c'est que tu envoyais qu'une case de ton tableau de couple... de plus j'ai fait une allocation dynamique... c'est plus propre dans ce cas.
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

landraille
Nouveau membre
Inscrit : 24/02/2008
Messages : 14
Message
#149712
Posté le 25/02/08 à 19:15
salut
merci pour ta reponse!
Ton programme plante quand il me demande le nombre d'electrons.
De plus, je suis etudiant en chimie,la programmation n'est qu'un module de 30h donc le cours de programmation n'est pas poussé (tu as dû t'en rendre compte en voyant le code), on ne va donc pas voir l'allocution dynamique, ce n'est pas possible de faire sans?
merci

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 : 926
Message
#149716
Posté le 25/02/08 à 21:34
autant pour moi je n'avais pas fait attention au contenu de la fonction chargement_manuel();

Je pense que en changeant 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; }; //ne pas oublier le point virgule apres l'accolade fermante d'une structure!!!! void chargement_manuel(struct couple *pointeur_redox, long i) { //void car ne revoie aucune valeur avec la fonction return printf("Quel est le nombre d'electrons ?\n"); scanf("%ld", pointeur_redox[i].n); if (pointeur_redox[i].n ==0) //si couple acido-basique { printf("Quel est l'acide?\n"); scanf("%s", pointeur_redox[i].acide); printf("Quel est la concentration de l'acide?\n"); scanf("%lf", pointeur_redox[i].C_acide); printf("Quel est la base?\n"); scanf("%s", pointeur_redox[i].base); printf("Quel est la concentration de la base?\n"); scanf("%lf", pointeur_redox[i].C_base); printf("Quel est le pka du couple?\n"); scanf("%lf", pointeur_redox[i].pka); } else // sinon couple redox { printf("Quel est le potentiel redox?\n"); scanf("%lf", pointeur_redox[i].pot); printf("Quel est l'oxydant? (n'oubliez pas d'indiquer la charge et sans espace)\n"); scanf("%s", pointeur_redox[i].ox); printf("Quelle est la concentration de l'oxydant (en mol/L)?\n"); scanf("%lf", pointeur_redox[i].C_ox); printf("Quel est le reducteur? (n'oubliez pas d'indiquer la charge et sans espace)\n"); scanf("%s", pointeur_redox[i].red); printf("Quelle est la concentration du reducteur (en mol/L)?\n"); scanf("%lf", pointeur_redox[i].C_red); printf("Quel est le coefficient stoechiometrique de H+ ?\n"); scanf("%ld", pointeur_redox[i].x1); printf("Quel est le coefficient stoechiometrique de l'oxydant ?\n"); scanf("%ld", pointeur_redox[i].x2); printf("Quel est le coefficient stoechiometrique du reducteur ?\n"); scanf("%ld", pointeur_redox[i].x3); printf("Quel est le coefficient stoechiometrique de l'eau ?\n"); scanf("%ld", pointeur_redox[i].x4); } } int main() { long choix, menu=1; double T=0, var=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"); long i=0, j=0; 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 [j]; // creation d'un tableau de structure. for (i=0;i<=j-1;i++) { printf("\n== Parametres pour le couple numero %ld ==\n",i+1); chargement_manuel(redox, i); //verification; if (redox[i].n == 0) printf("l'acide est %s, la base est %s et le pka du couple est %.2lf\n", redox[i].acide, redox[i].base, redox[i].pka); else printf("l'oxydant est %s, le reducteur est %s et coefficient de l'eau est %ld\n", redox[i].ox, redox[i].red, redox[i].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"); }


ça devrait le faire ;) faudrait tester ;)

P.S. pour l'allocation dynamique ce n'est pas nécessaire mais conseillé...
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

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 : 926
Message
#149788
Posté le 27/02/08 à 11:26
c'est bon? t'en es où? ça marche?
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

landraille
Nouveau membre
Inscrit : 24/02/2008
Messages : 14
Message
#149807
Posté le 27/02/08 à 16:55
salut
dsl pour le retard mais je suis parti en vacances, je m'y remet dessus la semaine prochaine et te tiens au courant
merci bcp

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 : 926
Message
#149809
Posté le 27/02/08 à 17:14
pas de problème... à la semaine prochaine ;)
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

landraille
Nouveau membre
Inscrit : 24/02/2008
Messages : 14
Message
#149819
Posté le 27/02/08 à 20:50
salut

je ne sais pas si c'est possible mais il serait plus simple de faire la fonction chargement_manuel en lui disant de renvoyer au int(main) directement la structure avec la commande return mais lors de la déclaration de la fonction, il faut lui indiquer en type le type de ce que l'on renvoie; c-a-d ici une structure mais on ne peut pas écrire :

struct chargement_manuel(struct couple redox) // type struct n'existe pas pour les fonctions!!! { 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.acide); printf("Quel est la base?\n"); scanf("%s", &redox.base); printf("Quel est la concentration de la base?\n"); scanf("%lf", &redox.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; }


c'est une simple question que je me pose pendant mes vacances...

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 : 926
Message
#149821
Posté le 27/02/08 à 20:58
as-tu essayé : struct couple chargement_manuel(struct couple redox){...}
Je pense que ça peut marcher : tu vas ensuite retourner une variable struct couple alors...
__________________________
............ Curtis: RTS 3D ..............
......Image
........... TeamMoteurProg...........

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

landraille
Nouveau membre
Inscrit : 24/02/2008
Messages : 14
Message
#149822
Posté le 27/02/08 à 21:21
salut
j'ai essayé ça mais ça ne marche pas, la compile est bonne mais lors du printf("l'oxydant est %s, le reducteur est %s et coefficient de l'eau est ld\n", redox[i].ox, redox[i].red, redox[i].x4); il m'ecrit n'importe quoi.

#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(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.acide); printf("Quel est la base?\n"); scanf("%s", &redox.base); printf("Quel est la concentration de la base?\n"); scanf("%lf", &redox.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() { long choix, menu=1; double T=0, var=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"); long i=0, j=0; 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[5]; // creation d'un tableau de structure. for (i=0;i<=j-1;i++) { printf("\n== Parametres pour le couple numero %ld ==\n",i+1); chargement_manuel(redox[i]); //verification; if (redox[i].n == 0) { printf("l'acide est %s, la base est %s et le pka du couple est %.2lf\n", redox[i].acide, redox[i].base, redox[i].pka); } else { printf("l'oxydant est %s, le reducteur est %s et coefficient de l'eau est ld\n", redox[i].ox, redox[i].red, redox[i].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"); }

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 :.