Bonjour a tous,
Je suis désolée mais j'ai encore un problème avec mon programme...
J'ai une fonction avec laquelle je dois calculer des valeurs de y en fonction de lambda...
Mes problèmes sont:
=>Je me sais pas exactement comment déclarer ma variable lambda (tableau?)
=> Ma variable lambda doit s'incrémenter d'un certain pas défini par l'utilisateur de mon programme, or je ne sais incrémenter que de un en un
=>Je ne sais pas me servir de pointeur (j'ai lu les tutoriaux mais y'a rien a faire, j'arrive pas a comprendre la logique) donc je n'arrive pas à creér un tableau de résultats me permettant de stocker mes différentes valeurs de lambda et de y
Si vous pouviez me donner des pistes pour tout ca, ca me ferait très plaisir parce que là, je m'arrache les cheveux...
Merci d'avance
| Citation :
|
Ben ca on peut pas le savoir a ta place... Pourquoi tu veux faire un tableau???? Tu peux pas déclarer lambda en float ou en double, et parcourir "toutes " les valeurs de lambda avec une boucle for?
| Citation : => Ma variable lambda doit s'incrémenter d'un certain pas défini par l'utilisateur de mon programme, or je ne sais incrémenter que de un en un |
C'est du C? si oui, une incrémentation ca peut se faire du style a++; ou ++a; OU a=a+1;
Donc pour incrémenter a avec une variable b il suffit de faire a=a+b;
| Citation :
|
Alors la c'est un peu gènant quand même... un tableau ca se déclare ainsi: tab[nombre_cases]; ensuite tu t'en sert avec indice allant de 0 a nombre_cases -1 de cette facon: tab[indice]
Mais tu es obligé de faire un tableau pour ca? Donne plus d'infos sur ton sujet...
Voilà mon programme...
Et j'arrive pas a afficher un tableau me donnant les valeurs calculees de eb en fonction de celles de lambda... Si tu pouvais me dire comment faire parce que la, je suis perdue...
const int C1 = 59552137;
const double C2 = 14387.752;
const double pi = 3.14159;
const double C3 = 2897.8;
const double sigma = 0.0000000567;
const int intervalle = 10;
// Calcul des différentes valeurs de eb
double eb(double lambda,double T)
{
return((2*pi*C1)/(pow(lambda,5)*(exp(C2/(lambda*T))-1)));
}
// Allocation de memoire pour le tableau de resultats
double *aloc(int N)
{
double *t;
t=(double*) calloc(sizeof(double),N);
return (t);
}
// Saisie des differentes temperatures
double SaisieTemp(double *T,int N)
{
int i;
for (i=0;i<N;i++)
{
printf("Entrez la temperature numero %d :\n", i+1);
scanf ("%lf",&T[i]);
}
}
// Saisie de la valeur de lambda initial
double SaisieLambda (double *T,int N)
{
int i, intervalle;
printf("Veuillez entrer la valeur initiale de lambda :\n" );
scanf("%lf",&T[0]);
for (i=1;i<N;i++)
{
T[i]=T[i-1]+intervalle;
}
}
// Remplissage du tableau de resultats
double **resultat(int N,int nblambda,double *temp,double *tablambda) //=> Déclaration du tableau de resultats a double entree
{
int i,j;
double ** tab;
tab= (double**) calloc(sizeof(double*),N);
for(i=0;i<N;i++)
tab[i]=(double*) calloc(sizeof(double), nblambda);
for(i=0;i<N;i++)
for(j=0;j<nblambda;j++)
{
tab[i][j]=eb(tablambda[j],temp[i]);
printf( "%lf, %lf\n" ,tab[i], tab[j]);
}
return tab;
}
// Programme principal
int main()
{
double *T,lambda,*L,**tab;
int N,i,j, intervalle, nblambda;
printf("Veuillez entrer le nombre de temperatures que vous souhaitez etudier \n" );
scanf("%d",&N);
T=aloc(N);
SaisieTemp(T,N);
nblambda=100; //=> Je suis partie sur une base de 100 valeurs de Lambda mais on peut le changer
L=aloc(nblambda);
SaisieLambda(L,nblambda);
tab=resultat(N,nblambda,T,L);
system("PAUSE" );
return(0);
}
Argh... J'ai mal a la tête...
Jpréfère supposer que tout le code est bon sauf l'affichage :-D
Code :
|
Je sais pas ce que tu essaies de faire la... Afficher une case du tableau? dans ce cas il faudrait faire printf("%lf ",tab[i][j]); par exemple... Ou ptet que jme trompe...
Bon pour résumer je peux surtout te conseiller de bosser les pointeurs et les tableaux (surtout que tu en utilise plein! et des allocations dynamiques en pagaille!)... Je comprends d'ailleurs pas comment t'a pu faire un code comme ca en comprenant pas comment les utiliser :-D
La mémoire d'un ordinateur est linéaire octet par octet. Chaque octet en mémoire est numéroté de 0 à un certain nombre. Ce nombre est l'adresse mémoire.
Un pointeur est une adresse mémoire.
Voilà y a rien de plus à ajouter :-D
Si peut-être préciser que toutes les variables se trouvent quelque part en mémoire
Merci beaucoup pour votre aide...
Je sais que mon programme est pas très structuré mais je débute, donc faut me pardonner... :-)
En fait, pour résumer mon probleme, je veux juste afficher le tableau entier de toutes mes valeurs de eb et de toutes mes valeurs de lambda correspondantes....
Commence à mettre un pointeur sur le début du tableau et tu le fais tant que tu as des éléments dans le tableau (désolé j'ai pas regardé ton code, sans les indentations ça fait mal à la tête :-D ).
| Citation :
|
Salut,
De toute facon c'est la definition d'un tableau
Il y a 2245 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
