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 :

déclaration de variable non prise en compte


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 36
    Par défaut déclaration de variable non prise en compte
    bonjour,
    Je dot créer un programme faisant le calcul d'un formule sur laquelle on place une correction en fonction d'un angle (d'ou le nombre important de condition).
    Pour simplifier le programme j'ai créer une fonction pour chaque corection mais je ne sais pas si mes fonctions sont bien déclarer.

    De plus lors de la compilation l'ordinateur m'affiche à chaque variable un message d'erreur disant "identificateur non déclarer"...

    J'ai eu beau retournée le code dans tout les sens je ne voit pas ou est la faille

    Voici le code
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    //Projet découverte
    //informatique et astronautique
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    float t0(float e,float w,float a);					//déclaration de la fonction t sans correction
    float t1(float e,float w,float a);					//déclaration de la fonction t avec correction 1
    float t2(float e,float w,float a);					//déclaration de la fonction t avec correction 2
    float t3(float e,float w,float a);					//déclaration de la fonction t avec correction 3
    float t4(float e,float w,float a);					//déclaration de la fonction t avec correction 4
     
    void main()
    {
    	 float a=0;										// rayon de l'orbite
    	 float e=0;										// exentricité
    	 float v=0;										// point de l'orbite d'anomalies vraie
    	 float i=0;										// inclinaison
    	 float w=0;										//
    	 int mu=398600;									// parametre mu définie dans le TP 
    	 float vc=0;									//
    	 float tab[28][5];								// déclaration du tableau des calculs
    	 float la=0;									// latitude
     
    	 float tp=0;									//temp de passage au périgé
    	 int t=0;										//compteur de boucle pour l'affichage du tableau
    	 int n=0;										//nombre de V saisie
     
     
    	 printf("projet modélisation mathématique de la trace d'un satelitte en orbite terrestre\n\n");
    	 printf("veuillez saisir le rayon a de l'orbite \n");
    	 scanf("%f",&a);
    	 printf("veuillez saisir l'exentricite e\n");
    	 scanf("%f",&e);
    	 printf("veuillez saisir l'inclinaison i\n");
    	 scanf("%f",&i);
    	 printf("veuillez saisir le parametre w\n");
    	 scanf("%f",&w);
     
    	 tp=(-sqrt(pow(a,3)/mu))*(asin((sqrt(1-pow(e,2))*sin(-w))/(1+e*cos(-w)))-e*((sqrt(1-pow(e,2))*sin(-w))/(1+e*cos(-w))));
    	 printf("temp de passage au perigee :%f\n",&tp);
    	 printf("vous pouvez saisir 28 point different de V");
     
    	do
    	{
    		printf("veuillez saisir un point V de l'orbite\n");
    		scanf("%f",&v);
    		n++;
    		tab[n-1][0]=v;								//attribution de V
    		tab[n-1][1]=(3,141592654*v)/180;			//converstion de V en radian
    		vc=acos(-e);								//calcul de Vc
    			if(Vc<=v<=2*(3,141592654)-Vc)
    			{
    				tab[n-1][2]=t1;
    			} else
    				{
    				if(tab[n-1][1]>=2*(3,141592654)-Vc)
    				{
    					tab[n-1][2]=t2;
    				} else
    					{
    					if(-2*(3,141592654)+Vc<=tab[n-1][1]<=-Vc)
    					{
    						tab[n-1][2]=t3;
    					} else
    						{
    						if(2*(3,141592654)+Vc>=tab[n-1][1])
    						{
    							tab[n-1][2]=t4;
    						} else
    							{
    							if(-Vc<=tab[n-1][1]<=Vc,-Vc<=-w<=Vc)
    							{
    								tab[n-1][2]=t0;
    							}
    							}
    						}
    					}
    				}
    		la=pow(sin(sin(w+tab[n-1][0])*sin(i)),-1);					//calcul de la latitude
    		tab[n-1][3]=la;												//
    		tab[n-1][4]=pow(sin((tan(la))/(tan(i))),-1);				//calcul de la longitude
        } while(n!=28);													//fin de la boucle à la 28e valeurs
     
     
    	printf("affichage du tableau\n");
        printf("affichage du tableau\nresultats des calculs : \n\n");
        for (t=0; t<28; t++)											//boucle d'affichage des résultats
        {
          printf("point %2d : %f, %f, %f, %f, %f\n",t+1,tab[t][0],tab[t][1],tab[t][2],tab[t][3],tab[t][4]);
        }
    return 0;
    }
     
    float t0(float e,float w,float a)
    {
    	return (sqrt(pow(a,3)/mu))*(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1]))));
    }																	//définition de la fonction t0
    float t1(float e,float w,float a)
    {
    	return (sqrt(pow(a,3)/mu))*((3,141592654)-(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t1
    float t2(float e,float w,float a)
    {
    	return (sqrt(pow(a,3)/mu))*(2*(3,141592654)+(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t2
    float t3 (float e,float w,float a)
    {
    	return (sqrt(pow(a,3)/mu))*((-3,141592654)-(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t3
    float t4(float e,float w,float a)
    {
    	return (sqrt(pow(a,3)/mu))*(-2*(-3,141592654)+(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t4

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 461
    Par défaut
    Bonsoir,
    Je n'ai fait que survoler ton programme mais il y a déjà quelques petites erreurs :

    • Le C est sensible à la casse, c'est-à-dire qu'il différencie les majuscules des minuscules. La variable « Vc » est donc differente de « vc ». Une bonne voie à suivre est de prendre d'emblée l'habitude de systématiquement écrire les variables en minuscules. Il n'y a aucune raison technique à cela mais c'est l'usage le plus courant avec ce langage ;
    • Les nombres flottants s'écrivent à l'anglo-saxonne, donc avec un point décimal « . » et pas une virgule. C'est important parce « 3,141592654 » est une expression valide en C et qui compilera donc en silence, mais qui ne te donnera pas du tout le résultat attendu : l'opérateur virgule « , » évalue successivement tous les termes séparés par lesdites virgules puis prend la valeur du dernier, soit ici 141592654, considérée ici comme une valeur entière valant cent quarante et un millions, cinq cent quatre-vingt-douze mille six cent cinquante-quatre.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par défaut
    Citation Envoyé par tom250908 Voir le message
    De plus lors de la compilation l'ordinateur m'affiche à chaque variable un message d'erreur disant "identificateur non déclarer"...
    Essaye d'une manière générale de donner l'intégralité des informations. Par exemple le compilateur te donne le nombre de la variable non déclarée et la ligne et la colone en question.

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 36
    Par défaut
    aprés avoir apporté certaine correction j'obtient le code suivant
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    //Projet découverte
    //informatique et astronautique
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    	float t0 (float e,float w,float a);				//déclaration de la fonction t sans correction
    	float t1 (float e,float w,float a);				//déclaration de la fonction t avec correction 1
    	float t2 (float e,float w,float a);				//déclaration de la fonction t avec correction 2
    	float t3 (float e,float w,float a);				//déclaration de la fonction t avec correction 3
    	float t4 (float e,float w,float a);				//déclaration de la fonction t avec correction 4
     
    int main()
    {
    	 float a=0;										// rayon de l'orbite
    	 float e=0;										// exentricité
    	 float v=0;										// point de l'orbite d'anomalies vraie
    	 float i=0;										// inclinaison
    	 float w=0;										//
    	 int mu=398600;									// parametre mu définie dans le TP 
    	 float vc=0;									//
    	 float tab[28][5]=0;							// déclaration du tableau des calculs
    	 float la=0;									// latitude
     
    	 float tp=0;									//temp de passage au périgé
    	 int t=0;										//compteur de boucle pour l'affichage du tableau
    	 int n=0;										//nombre de V saisie
     
     
    	 printf("projet modélisation mathématique de la trace d'un satelitte en orbite terrestre\n\n");
    	 printf("veuillez saisir le rayon a de l'orbite \n");
    	 scanf("%f",&a);
    	 printf("veuillez saisir l'exentricite e\n");
    	 scanf("%f",&e);
    	 printf("veuillez saisir l'inclinaison i\n");
    	 scanf("%f",&i);
    	 printf("veuillez saisir le parametre w\n");
    	 scanf("%f",&w);
     
    	 tp=(-sqrt(pow(a,3)/mu))*(asin((sqrt(1-pow(e,2))*sin(-w))/(1+e*cos(-w)))-e*((sqrt(1-pow(e,2))*sin(-w))/(1+e*cos(-w))));
    	 printf("temp de passage au perigee :%f\n",&tp);
    	 printf("vous pouvez saisir 28 point different de V");
     
    	do
    	{
    		printf("veuillez saisir un point V de l'orbite\n");
    		scanf("%f",&v);
    		n++;
    		tab[n-1][0]=v;								//attribution de V
    		tab[n-1][1]=(3.141592654*v)/180;			//converstion de V en radian
    		vc=acos(-e);								//calcul de Vc
    			if(vc<=v<=2*(3.141592654)-vc)
    			{
    				tab[n-1][2]=t1;
    			} else
    				{
    				if(tab[n-1][1]>=2*(3.141592654)-vc)
    				{
    					tab[n-1][2]=t2;
    				} else
    					{
    					if(-2*(3.141592654)+vc<=tab[n-1][1]<=-vc)
    					{
    						tab[n-1][2]=t3;
    					} else
    						{
    						if(2*(3.141592654)+vc>=tab[n-1][1])
    						{
    							tab[n-1][2]=t4;
    						} else
    							{
    							if(-vc<=tab[n-1][1]<=vc,-vc<=-w<=vc)
    							{
    								tab[n-1][2]=t0;
    							}
    							}
    						}
    					}
    				}
    		la=pow(sin(sin(w+tab[n-1][0])*sin(i)),-1);					//calcul de la latitude
    		tab[n-1][3]=la;												
    		tab[n-1][4]=pow(sin((tan(la))/(tan(i))),-1);				//calcul de la longitude
        } while(n!=28);													//fin de la boucle à la 28e valeurs
     
     
    	printf("affichage du tableau\n");
        printf("affichage du tableau\nresultats des calculs : \n\n");
        for (t=0; t<28; t++)											//boucle d'affichage des résultats
        {
          printf("point %2d : %f, %f, %f, %f, %f\n",t+1,tab[t][0],tab[t][1],tab[t][2],tab[t][3],tab[t][4]);
        }
    return 0;
    }
     
    float t0(float e,float w,float a)
    {
    	int mu=398600;	
    	float tab[28][5]=0;
    	int n=0;
    	return (sqrt(pow(a,3)/mu))*(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1]))));
    }
    float t1(float e,float w,float a)
    {
    	int mu=398600;	
    	float tab[28][5]=0;
    	int n=0;
    	return (sqrt(pow(a,3)/mu))*((3,141592654)-(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t1
    float t2(float e,float w,float a)
    {
    	int mu=398600;	
    	float tab[28][5]=0;
    	int n=0;
    	return (sqrt(pow(a,3)/mu))*(2*(3,141592654)+(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t2
    float t3 (float e,float w,float a)
    {
    	int mu=398600;	
    	float tab[28][5]=0;
    	int n=0;
    	return (sqrt(pow(a,3)/mu))*((-3,141592654)-(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t3
    float t4(float e,float w,float a)
    {
    	int mu=398600;	
    	float tab[28][5]=0;
    	int n=0;
    	return (sqrt(pow(a,3)/mu))*(-2*(-3,141592654)+(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t4
    mais j'ai toujours des erreur dans les "conversion" et des erreur par rapport au tableau dans les définition des fonction (à partir de la ligne 100)
    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
    1>------ Début de la génération*: Projet*: projet, Configuration*: Debug Win32 ------
    1>Compilation en cours...
    1>calculTp.cpp
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(24) : error C2440: 'initialisation'*: impossible de convertir de 'int' en 'float [28][5]'
    1>        Aucune conversion en types tableau, même s'il y a des conversions en références ou en pointeurs de tableau
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(52) : warning C4244: '='*: conversion de 'double' en 'float', perte possible de données
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(54) : warning C4804: '<='*: utilisation risquée du type 'bool' dans l'opération
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(56) : error C2440: '='*: impossible de convertir de 'float (__cdecl *)(float,float,float)' en 'float'
    1>        Aucun contexte dans lequel cette conversion est possible
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(61) : error C2440: '='*: impossible de convertir de 'float (__cdecl *)(float,float,float)' en 'float'
    1>        Aucun contexte dans lequel cette conversion est possible
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(64) : warning C4804: '<='*: utilisation risquée du type 'bool' dans l'opération
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(66) : error C2440: '='*: impossible de convertir de 'float (__cdecl *)(float,float,float)' en 'float'
    1>        Aucun contexte dans lequel cette conversion est possible
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(71) : error C2440: '='*: impossible de convertir de 'float (__cdecl *)(float,float,float)' en 'float'
    1>        Aucun contexte dans lequel cette conversion est possible
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(74) : warning C4804: '<='*: utilisation risquée du type 'bool' dans l'opération
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(74) : warning C4804: '<='*: utilisation risquée du type 'bool' dans l'opération
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(76) : error C2440: '='*: impossible de convertir de 'float (__cdecl *)(float,float,float)' en 'float'
    1>        Aucun contexte dans lequel cette conversion est possible
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(100) : error C2440: 'initialisation'*: impossible de convertir de 'int' en 'float [28][5]'
    1>        Aucune conversion en types tableau, même s'il y a des conversions en références ou en pointeurs de tableau
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(107) : error C2440: 'initialisation'*: impossible de convertir de 'int' en 'float [28][5]'
    1>        Aucune conversion en types tableau, même s'il y a des conversions en références ou en pointeurs de tableau
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(114) : error C2440: 'initialisation'*: impossible de convertir de 'int' en 'float [28][5]'
    1>        Aucune conversion en types tableau, même s'il y a des conversions en références ou en pointeurs de tableau
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(121) : error C2440: 'initialisation'*: impossible de convertir de 'int' en 'float [28][5]'
    1>        Aucune conversion en types tableau, même s'il y a des conversions en références ou en pointeurs de tableau
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(128) : error C2440: 'initialisation'*: impossible de convertir de 'int' en 'float [28][5]'
    1>        Aucune conversion en types tableau, même s'il y a des conversions en références ou en pointeurs de tableau
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\Thomas\Desktop\Projet\projet\Debug\BuildLog.htm"
    1>projet - 11 erreur(s), 5 avertissement(s)
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
    je n'est jamais vraiment compris cette histoire de converstion surtout que même en declarant "void" au lieu de float, il y a la meme probleme...

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut
    C'est parce que tu essayes de calculer des floats avec un int (dans ton code l'int mu), la compilateur n'aime pas ça. A cause de la perte de précision du résultat, tu ne pourras jamais effectuer des calculs avec des variables de type différent.

    Deux solutions de présentent a toi :

    -N'utiliser que des variables de même type dans un même calcul.

    -Caster la variable sur le type souhaité s'il n'y a pas de risque de perte de précision afin que le compilateur la lise comme un autre type par exemple int vers float, si j'ai un int nbr que je veux utiliser en float pour un calcul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my_float = (float)nbr + 1.52;
    Je te conseille d'opter pour la première solution et de garder la deuxième pour un cas où tu n'as pas le choix ^^


    PS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return (sqrt(pow(a,3)/mu))*((-3,141592654)-(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    Tu as oublié de remplacer 3,14XXXX par 3.14XXXX
    Et tu as d'autres bouts de code étrange, notamment au niveau de tes tableaux de float.

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    En vrac :

    On n'initialise pas un tableau comme ca lors de sa declaration :
    Mais comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float tab[28][5] = {0};
    Il est deconseille d'utiliser scanf pour lire les entrees clavier.

    La division de deux floats ne donnerait-elle pas un double ? C'est du moins ce que semble te dire le compilateur. Si tu veux absolument un float :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[n-1][1]=(float)((3.141592654*v)/180);
    Si tu veux tester si v est entre deux valeurs, tu ne peux pas faire ca en C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(vc<=v<=2*(3.141592654)-vc)
    Il faut que tu testes si v est plus grand que vc ET si v est plus petit que 2*PI-vc.

    Pareil ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(-2*(3.141592654)+vc<=tab[n-1][1]<=-vc)
    Sais-tu ce que fait ce code ? Es-tu vraiment certain de vouloir ecrire cela ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(-vc<=tab[n-1][1]<=vc,-vc<=-w<=vc)
    Dans t0, tu laboures allegrement la memoire en accedant a tab[-1][1]. Pareil dans t1, t2, t3 et t4.

    D'ailleurs, tes noms de fonctions et de variables sont a proscrire : tu as pleins de lettre sur ton clavier, pourquoi ne pas t'en servir pour ecrire des noms de fonction qui veulent dire quelque chose ? Et pareil pour les variables.

    mu devrait etre une constante globale

    Bref, pas mal de problemes a corriger.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 36
    Par défaut
    merci à vous, aprés certaine correction ( je n'est pas eu le temps de tout mettre au propre) j'obtient le code suivant:

    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    	double t0 (double e,double w,double a);				//déclaration de la fonction t sans correction
    	double t1 (double e,double w,double a);				//déclaration de la fonction t avec correction 1
    	double t2 (double e,double w,double a);				//déclaration de la fonction t avec correction 2
    	double t3 (double e,double w,double a);				//déclaration de la fonction t avec correction 3
    	double t4 (double e,double w,double a);				//déclaration de la fonction t avec correction 4
     
    int main()
    {
    	 double a=0;									// rayon de l'orbite
    	 double e=0;									// exentricité
    	 float v=0;										// point de l'orbite d'anomalies vraie
    	 float i=0;										// inclinaison
    	 double w=0;									//
    	 float mu=398600;								// parametre mu définie dans le TP 
    	 float vc=0;									//
    	 double tab[28][5]={0};								// déclaration du tableau des calculs
    	 float la=0;									// latitude
     
    	 float tp=0;									//temp de passage au périgé
    	 int t=0;										//compteur de boucle pour l'affichage du tableau
    	 int n=0;										//nombre de V saisie
     
     
    	 printf("projet modélisation mathématique de la trace d'un satelitte en orbite terrestre\n\n");
    	 printf("veuillez saisir le rayon a de l'orbite \n");
    	 scanf("%f",&a);
    	 printf("veuillez saisir l'exentricite e\n");
    	 scanf("%f",&e);
    	 printf("veuillez saisir l'inclinaison i\n");
    	 scanf("%f",&i);
    	 printf("veuillez saisir le parametre w\n");
    	 scanf("%f",&w);
     
    	 tp=(-sqrt(pow(a,3)/mu))*(asin((sqrt(1-pow(e,2))*sin(-w))/(1+e*cos(-w)))-e*((sqrt(1-pow(e,2))*sin(-w))/(1+e*cos(-w))));
    	 printf("temp de passage au perigee :%f\n",&tp);
    	 printf("vous pouvez saisir 28 point different de V");
     
    	do
    	{
    		printf("veuillez saisir un point V de l'orbite\n");
    		scanf("%f",&v);
    		n++;
    		tab[n-1][0]=v;								//attribution de V
    		tab[n-1][1]=(3.141592654*v)/180;			//converstion de V en radian
    		vc=acos(-e);								//calcul de Vc
    			if(vc<=tab[n-1][1],tab[n-1][1]<=2*(3.141592654)-vc)
    			{
    				tab[n-1][2]=t1;
    			} else
    				{
    				if(tab[n-1][1]>=2*(3.141592654)-vc)
    				{
    					tab[n-1][2]=t2;
    				} else
    					{
    					if(-2*(3.141592654)+vc<=tab[n-1][1],tab[n-1][1]<=-vc)
    					{
    						tab[n-1][2]=t3;
    					} else
    						{
    						if(2*(3.141592654)+vc>=tab[n-1][1])
    						{
    							tab[n-1][2]=t4;
    						} else
    							{
    							if(-vc<=tab[n-1][1],tab[n-1][1]<=vc,-vc<=-w,-w<=vc)
    							{
    								tab[n-1][2]=t0;
    							}
    							}
    						}
    					}
    				}
    		la=pow(sin(sin(w+tab[n-1][0])*sin(i)),-1);					//calcul de la latitude
    		tab[n-1][3]=la;												
    		tab[n-1][4]=pow(sin((tan(la))/(tan(i))),-1);				//calcul de la longitude
        } while(n!=28);													//fin de la boucle à la 28e valeurs
     
     
    	printf("affichage du tableau\n");
        printf("affichage du tableau\nresultats des calculs : \n\n");
        for (t=0; t<28; t++)											//boucle d'affichage des résultats
        {
          printf("point %2d : %f, %f, %f, %f, %f\n",t+1,tab[t][0],tab[t][1],tab[t][2],tab[t][3],tab[t][4]);
        }
    return 0;
    }
     
    double t0(double e,double w,double a)
    {
    	float mu=398600;	
    	double tab[28][5]={0};
    	int n=0;
    	return (sqrt(pow(a,3)/mu))*(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1]))));
    }
    double t1(double e,double w,double a)
    {
    	float mu=398600;	
    	double tab[28][5]={0};
    	int n=0;
    	return (sqrt(pow(a,3)/mu))*((3.141592654)-(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t1
    double t2(double e,double w,double a)
    {
    	float mu=398600;	
    	double tab[28][5]={0};
    	int n=0;
    	return (sqrt(pow(a,3)/mu))*(2*(3.141592654)+(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t2
    double t3 (double e,double w,double a)
    {
    	float mu=398600;	
    	double tab[28][5]={0};
    	int n=0;
    	return (sqrt(pow(a,3)/mu))*((-3.141592654)-(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t3
    double t4(double e,double w,double a)
    {
    	float mu=398600;	
    	double tab[28][5]={0};
    	int n=0;
    	return (sqrt(pow(a,3)/mu))*(-2*(-3.141592654)+(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))));
    }																	//définition de la fonction t4
    Mais j'ai toujours le message d'erreur suivant:

    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
    1>------ Début de la génération*: Projet*: projet, Configuration*: Debug Win32 ------
    1>Compilation en cours...
    1>calculTp.cpp
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(34) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306)*: voir la déclaration de 'scanf'
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(36) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306)*: voir la déclaration de 'scanf'
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(38) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306)*: voir la déclaration de 'scanf'
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(40) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306)*: voir la déclaration de 'scanf'
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(42) : warning C4244: '='*: conversion de 'double' en 'float', perte possible de données
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(49) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(306)*: voir la déclaration de 'scanf'
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(53) : warning C4244: '='*: conversion de 'double' en 'float', perte possible de données
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(56) : error C2440: '='*: impossible de convertir de 'double (__cdecl *)(double,double,double)' en 'double'
    1>        Aucun contexte dans lequel cette conversion est possible
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(61) : error C2440: '='*: impossible de convertir de 'double (__cdecl *)(double,double,double)' en 'double'
    1>        Aucun contexte dans lequel cette conversion est possible
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(66) : error C2440: '='*: impossible de convertir de 'double (__cdecl *)(double,double,double)' en 'double'
    1>        Aucun contexte dans lequel cette conversion est possible
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(71) : error C2440: '='*: impossible de convertir de 'double (__cdecl *)(double,double,double)' en 'double'
    1>        Aucun contexte dans lequel cette conversion est possible
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(76) : error C2440: '='*: impossible de convertir de 'double (__cdecl *)(double,double,double)' en 'double'
    1>        Aucun contexte dans lequel cette conversion est possible
    1>c:\users\thomas\desktop\projet\projet\calcultp.cpp(82) : warning C4244: '='*: conversion de 'double' en 'float', perte possible de données
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\Thomas\Desktop\Projet\projet\Debug\BuildLog.htm"
    1>projet - 5 erreur(s), 8 avertissement(s)
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
    Je ne sais pas si il faut mettre les variables à prendre en compte dans les fonction en double aussi ou non ... je suis un peu perdu la ...

  8. #8
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Je pense que tu ne comprends pas tout ce que tu ecris, notamment ce genre de syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(vc<=tab[n-1][1],tab[n-1][1]<=2*(3.141592654)-vc)
    Ce que tu veux ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( (vc<=tab[n-1][1]) || (tab[n-1][1]<=2*(3.141592654)-vc) )
    Et tu n'as toujours pas corrige le code de tes fonctions, qui accedent a tab[-1][1], ce qui va entrainer un comportement indefini (c'est a dire que ca ne fait pas ce que tu veux).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    double t0(double e,double w,double a)
    {
    	float mu=398600;	
    	double tab[28][5]={0};
    	int n=0;
    	return (sqrt(pow(a,3)/mu))*(asin((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1])))-e*((sqrt(1-pow(e,2))*sin(tab[n-1][1]))/(1+e*cos(tab[n-1][1]))));
    }
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modification d'une variable non prise en compte
    Par Zuthos dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/01/2013, 14h19
  2. Variable non prise en compte dans l'url
    Par duffman39 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 20/10/2011, 16h33
  3. variable non prise en compte
    Par oliv27400 dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/11/2010, 09h28
  4. Permissions CACLS variable non prise en compte
    Par Selkurs dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 12/03/2009, 13h27
  5. Variable non prise en compte dans un formulaire
    Par stomerfull dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2008, 14h36

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