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 :

problème dans un programme


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Par défaut problème dans un programme
    Bonjour j'avais déja oosté un message dans ce genre mais je n'arrive toujours pas à faire ce que je veux.

    Voila en fait dans mon programme je doit ouvrir un fichier avec plusieurs ligne qui décrit des fonctions, je donne au début du programme le nombre de lignes. Chaque ligne me donne un résultat que je stoque dans une variable temporaire, j'effectue quelque calcul sur cette variable temporaire et je lui redonne le nom des variables du fichier mais impossible d'incrémenter son nom en fonction du nombre de ligne pour l'utiliser.

    En fait j'ai un fichier nommé "fichier.txt" qui contient un nombre de ligne "m" voila ce que l'on retrouve par exemple dans mon fichier:

    y1+y3-y4
    .
    .
    .
    ym-y3

    Voila le programme que je cherche à faire:

    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
    main()
    {
    float *y;
    y=malloc(m*sizeof(float));
    float *temp;
    temp=malloc(m*sizeof(float));
    int i,m;
    FILE *fiche:
    fiche=fopen("fichier.txt","r");
    printf("taper la valeur de m");
    scanf("%f",&m);
     
    for(i=1;i<=m;i++)
    {
        printf("taper la valeur de y%d",i);
        scanf("%f",&y[i-1]);
     
    /*je stocke les valeurs de départs dans un tableau*/
     
    }
     
    for(i=0;i<m;i++)
    {
         y[i]=y[i]+39;
    }
     
    for(i=1;i<=m;i++)
    {
         yi=y[i-1];
    }
     
    for(i=0;i<m;i++)
    {
        fprintf(fiche,"%f",temp[i]);
        
        /*le tableau de temp contient nomalement les nouvelles valeurs modifié*/
    }
    Mais ce que j'ai mis en gras ne fonctionne pas car on ne peut pas incrémenter le nom d'une variable, j'avais pensé d'utiliser le #define mais le problème est identique car d'une manière ou d'une autre il faut que dans mon programme je modifie les valeurs de y1 jusqu'a ym (m représente le nombre de ligne).

    Merci de votre aide.

  2. #2
    Membre chevronné Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Par défaut
    Desole mais je suis pas sur de bien tout saisir ..
    mais qu'est que yi dans ta ligne yi=y[i-1]; ?
    Un tableau de float?

    Ton probleme est pas tres clair .. si tu pouvais eclaicir ?

  3. #3
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Salut a toi !

    Déja quelques petites remarques :

    1) main retourne int .

    2) tu ne testes ni le retour du fopen ni le retour de tes mallocs, si ça plante t'es dans la m....


    Ensuite pourrais tu expliquer un peu plus clairement ton problème stp? Tu veux changer le nom d'une variable???

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    -Attention le "m" doit être déclaré au début du main.
    -"calloc" permet d'initialiser la mémoire à 0, "malloc" ne fait que la réserver.
    -Au lieu de "m" variables "y" il vaut mieux utiliser un tableau de "m" cases.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Par défaut
    En fait c'est ce que j'ai fait, j'ai stocké dans un tableau y de taille m le résultat après calcul, mais ce que je n'arrive pas, c'est faire correspondre ce tableau de y avec les valeurs de y (y allant de y1 à ym) pour que lorsque je lit les différentes lignes de mon fichiers j'obtienne un résultat par ligne.
    C'est pourquoi j'ai chercher à faire la boucle for suivante:

    for(i=1;i<=m;i++)
    {
    yi=y[i-1];
    }

    Mais cette boucle for est impossible en C car on ne peut pas incrémenter le nom d'un variable mais comment faire alors?

    Merci de votre aide.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 163
    Par défaut
    Moi perso je trouve ton histoire pas tres tres clair. Et sinon, c'est normal le " :" apres ta déclaration de ton FILE *fiche (peut etre une erreur en copie/colle). Et sinon, tu mets quand les valeurs dans temp[i] car pour moi, à la fin tu ne peux rien afficher, vu qu'on a jamais rien mi dedans.

    Et sinon, c'est quoi yi =>y[i]?

    Et la ta boucle, si on corrige en un truc plus posible ça donne y[i]=y[i-1] et ça va décaler ton tableau de 1 case vers le bas. Donc ça incremente pas.

    Et sinon le petit i entre crochet c'est pas la valeur du tableau, mais ou tu trouve dans le tableau.

    En esperant t'avoir aide un peu

Discussions similaires

  1. problème dans la programmation en c
    Par pingoofr dans le forum Débuter
    Réponses: 10
    Dernier message: 15/05/2011, 22h29
  2. Problème dans un programme
    Par jeune ingénieure dans le forum Windows 7
    Réponses: 0
    Dernier message: 13/03/2011, 21h07
  3. [Débutant] Petit problème dans mon programme
    Par bsangoku dans le forum MATLAB
    Réponses: 8
    Dernier message: 22/04/2010, 16h19
  4. Problèmes dans un programme awk
    Par seyar666 dans le forum Linux
    Réponses: 1
    Dernier message: 13/05/2008, 17h33
  5. Problème dans mon programme
    Par zesister dans le forum Scheme
    Réponses: 17
    Dernier message: 02/05/2008, 02h39

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