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

Pascal Discussion :

Calcul d'une distance entre deux points à partir d'une version simplifiée des coordonnées GPS


Sujet :

Pascal

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Calcul d'une distance entre deux points à partir d'une version simplifiée des coordonnées GPS
    Bonsoir,
    Je dois réaliser un programme qui calcule une distance entre 2 points à partir d'une version simplifié des coordonnées GPS, voila ce que j'ai écrit mais impossible de comprendre pourquoi ça compile pas et j'ai quasiment essayé toutes les modifications possibles ... Si quelqu'un pouvait avoir la gentillesse de jeter un oeil ce serait sympa ^^
    Merci d'avance

    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
    uses math; 
     
    Type Coordonnees =record 
    longitude : Real;
    latitude : Real;
    end;
     
     
     
    Procedure Affichage (distance : Real);
     
    Begin 
    writeln ('Distance parcourue');
    writeln (distance);
    end;
     
    Function Calculcurviligne (coord1.latitude: Coordonnees, coord1.longitude : Coordonnees, coord2.latitude : Coordonnees, coord2.longitude : Coordonnees) : Real;
    var tmp, resultat: Real;
     
    Begin 
    tmp:= cos(coord1.latitude)*cos(coord2.latitude)*cos(coord1.longitude-coord2.longitude);
    tmp:= tmp+sin(coord1.latitude)*sin(coord2.latitude);
    resultat := 6378*(arccos(tmp));
    Writeln (resultat);
    end;
     
    Procedure Saisie (var coord1.latitude : Coordonnees; var coord2.latitude: Coordonnees;var coord1.longitude: Coordonnees;var coord2.longitude :Coordonnees);
    begin
    writeln ('Saisissez la premiere longitude');
    readln (coord1.longitude);
    writeln ('Saisissez la premiere latitude');
    readln (coord1.latitude);
    writeln ('Saisissez la deuxieme longitude');
    readln (coord2.longitude);
    writeln ('Saisissez la deuxieme latitude');
    readln (coord2.latitude);
    end;
     
    Program Calcul;
    var distance, resultats : Real; 
     
    begin
    saisie (coord1.latitude,coord2.latitude,coord1.longitude,coord2.longitude);
    resultats :=Calculcurviligne;
    end.

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Orelindel Voir le message
    impossible de comprendre pourquoi ça compile pas et j'ai quasiment essayé toutes les modifications possibles
    Bonjour !

    Avez-vous essayé de mettre cette ligne-ci au début ?

    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par Orelindel Voir le message
    voilà ce que j'ai écrit mais impossible de comprendre pourquoi ça compile pas
    Quand ça ne compile pas, en général il y a un message d'erreur, et ici on n'a pas le don de voyance

    Par ailleurs, quand on poste du code, on l'encadre avec la balise code (le #), tu l'as lu dans les Règles en t'inscrivant,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Pardon, il est possible que je l'ai lu en diagonale ...
    J'ai essayé de mettre le nom du programme au début mais ca ne change pas.

    calculcoordonnées.pas(19;34) Fatal: Syntax error, ":" expected but "." found

    Merci d'avance

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Bonjour,
    Citation Envoyé par Orelindel Voir le message
    Pardon, il est possible que je l'aie lu en diagonale ...


    Citation Envoyé par Orelindel Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    calculcoordonnées.pas(19;34) Fatal: Syntax error, ":" expected but "." found
    Un message d'erreur n'a parfois hélas qu'un lointain rapport avec la réalité, et il faut savoir décoder l'abscons...
    À la ligne 17 du code du 1er post, je vois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function Calculcurviligne (coord1.latitude: Coordonnees, coord1.longitude : Coordonnees, coord2.latitude : Coordonnees, coord2.longitude : Coordonnees) : Real;
    Elle est curieuse, cette ligne. Est-ce lié au compilateur utilisé ?
    Moi, en Lazarus, j'aurais écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function Calculcurviligne (coord1.latitude, coord1.longitude, coord2.latitude, coord2.longitude : Coordonnees) : Real;
    Non testé, écrit de bon matin donc pas réveillé, à voir...
    En tout cas, le "34" dans le message d'erreur correspond au premier "." rencontré dans la ligne citée, là : coord1.latitude.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    Salut

    Bon a priori les passages de paramètres dans une fonction il va falloir les revoir.

    Voici une version corrigée mais non testée :
    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
    Program Calcul;
    
    Type
     TCoordonnees =record
      longitude : Real;
      latitude : Real;
     end;
    
    Procedure Affichage (distance : Real);
    Begin
      write ('Distance parcourue ');
      writeln (distance);
    end;
    
    Function Calculcurviligne (coord1,coord2: TCoordonnees) : Real;
    var
      tmp, resultat: Real;
    Begin
      tmp:= cos(coord1.latitude)*cos(coord2.latitude)*cos(coord1.longitude-coord2.longitude);
      tmp:= tmp+sin(coord1.latitude)*sin(coord2.latitude);
      resultat := 6378*(arccos(tmp));
     
       result :=  resultat;
      // ou 
      // Calculcurviligne  :=  resultat;
       //Writeln (resultat);
    end;
    
    Procedure Saisie (var coord1,coord2 : TCoordonnees);
    begin
      writeln ('Saisissez la premiere longitude');
      readln (coord1.longitude);
      writeln ('Saisissez la premiere latitude');
      readln (coord1.latitude);
      writeln ('Saisissez la deuxieme longitude');
      readln (coord2.longitude);
      writeln ('Saisissez la deuxieme latitude');
      readln (coord2.latitude);
    end;
    
    var
    //  distance,
    coord1,coord2 : TCoordonnees;
    
     resultats : Real;
    begin
      //saisie (coord1.latitude,coord2.latitude,coord1.longitude,coord2.longitude);
      saisie (coord1,coord2);
      resultats :=Calculcurviligne(coord1,coord2);
      Affichage (resultats);
    end.
    De bien nombreuses erreurs ... doit encore travailler
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Moi, en Lazarus, j'aurais écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function Calculcurviligne (coord1.latitude, coord1.longitude, coord2.latitude, coord2.longitude : Coordonnees) : Real;
    Non testé, écrit de bon matin donc pas réveillé, à voir...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function Calculcurviligne (coord1.latitude, coord1.longitude, coord2.latitude, coord2.longitude : Real) : Real;
    Merci à anapurna de m'avoir réveillé
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    Citation Envoyé par Jipété Voir le message


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function Calculcurviligne (coord1.latitude, coord1.longitude, coord2.latitude, coord2.longitude : Real) : Real;
    Merci à anapurna de m'avoir réveillé
    c'est normal que tu repete le code faux ? ... perso je dis cela je dis rien
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  9. #9
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Merci beaucoup anapurna ça compile enfin ...
    et merci à jipété pour sa solution
    Bon bien sûr comme prédit ça ne fonctionne mais je peux enfin me concentrer sur le fond au lieu de la forme ....

  10. #10
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    pour info les fonction sinus ,cos... sont en radian et pas en degrés

    mes deux cents

    EDIT : Si j'ai bien compris tu veut calculer ceci
    d'apres ce que j'ai lu tu as du te tromper de le sens pour le delta

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    delta := Coord2.Longitude – Coord1.Longitude;
    S := arccos (sin(Coord1.latitude)*sin(Coord2.latitude) + cos(Coord1.latitude)*cos(Coord2.latitude)*cos(delta) ) 
    S := 6378137*S
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  11. #11
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par anapurna Voir le message
    c'est normal que tu repetes le code faux ? ... perso je dis cela je dis rien


    D'abord j'ai posté ça, les yeux tout embrumés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function Calculcurviligne (coord1.latitude, coord1.longitude, coord2.latitude, coord2.longitude : Coordonnees) : Real;
    et ensuite ça, suite à ton passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function Calculcurviligne (coord1.latitude, coord1.longitude, coord2.latitude, coord2.longitude : Real) : Real;
    'fin bon, on chipote on chipote,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  12. #12
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut


    eh donc pour toi ceci coord1.latitude, coord1.longitude, coord2.latitude, coord2.longitude : Real sont des définitions de paramètres valable ?
    je ne suis pas certain que les définitions de paramètres acceptent le point ^^
    perso j'ai jamais fais ça ...
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  13. #13
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Bah, c'était peut-être un désir inconscient d'une possibilité non encore prévue.

    Mais t'as raison, je vais me remettre aux mots-croisés, suis trop vieux pour continuer à programmer...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #14
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Mais t'as raison, je vais me remettre aux mots-croisés, suis trop vieux pour continuer à programmer...
    Je sais que j'ai déjà cité ce proverbe dans une autre discussion, mais je n'y résiste pas :

    Même le grand Homère somnole quelquefois.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  15. #15
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Merci pour votre AIDE mon programme fonctionne !!!
    J'ai par contre un autre soucis , en fait mon programme doit récupérer les coordonnées dans un fichier. J'ai réussi à exporter les coordonnées qui m’intéressent dans un autre fichier mais je ne parviens pas à attribuer la valeur de ces coordonnées à une variable utilisable par mon programme. Je ne sais pas si je suis très claire ...
    Merci d'avance pour votre aide ^^
    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
    program appelfichier;
     
    Type Coordonnees =record 
        longitude : String;
        latitude : String;
        ville: String;
        end;
    var entree, sortie: file of Coordonnees;
    latitude, longitude: String; ville: String;
    var pa,pd: string;
     
     
    var coord1,coord2 : Coordonnees;  
     
     
    begin
    writeln ('Point de depart');
    readln(pd);
    writeln ('Point arrivée');
    readln(pa);
    assign(entree,'etud.txt');
    reset(entree);
    assign(sortie,'etudl1.txt');
    rewrite(sortie);
    while not(eof(entree)) do
    begin
     
    readln(entree, coord1.latitude);
    readln(entree, coord1.longitude);
    readln(entree, coord1.ville);
    readln(entree, coord2.latitude);
    readln(entree, coord2.longitude);
    readln(entree, coord2.ville);
     
    begin
    if ville = pa then 
    begin
    writeln(sortie,coord1.longitude);
    writeln (sortie, coord1.latitude);
    end;
    end;
     
    begin
    if ville = pd then
    begin
     writeln(sortie, coord2.longitude);
     writeln (sortie, coord2.latitude);
     end;
     end;
    end;
    begin
    assign(sortie,'etudl1.txt');
       reset(sortie);
       read(sortie);
       writeln('-----------------');
       writeln('x1: ',coord1.longitude);
       writeln('x2 : ',coord1.latitude);
       writeln('x3: ', coord2.longitude);
       writeln('x4: ', coord2.latitude);
       end;
    close(sortie);
    close(entree);
    end.

  16. #16
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    Je pense qu'à la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    readln(entree, coord1.latitude);
    il faut écrire

    J'ai l'impression que vous faites une confusion entre un fichier texte, qu'on lit ligne par ligne (avec ReadLn) et un fichier d'enregistrements. L'extension ".txt" ne pose techniquement aucun problème mais elle n'est pas appropriée, parce que ce n'est pas un fichier texte.

    Autre chose, pourquoi utiliser le type string pour la latitude et la longitude, qui sont des nombres si je ne m'abuse ?

    Même pour la ville, je pense qu'il vaudrait mieux utiliser le type shortstring.

    Ou alors si vous souhaitez vraiment utiliser un fichier texte (un fichier qu'on peut ouvrir avec le bloc-notes), il ne faut pas le déclarer comme vous l'avez fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var entree, sortie: file of Coordonnees;
    mais de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var entree, sortie: Text;
    Votre code actuel mélange les deux approches.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  17. #17
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 070
    Points : 15 454
    Points
    15 454
    Billets dans le blog
    9
    Par défaut
    Comme j'ai peur de ne pas avoir été très clair, voici deux exemples. Le premier programme écrit et lit des données dans un fichier texte ; le second programme fait la même chose dans un fichier typé.

    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
     
    uses
      sysutils;
     
    type
      TDonnees = record
        i: integer;
    	s: string;
      end;
     
    const
      NOM_FICHIER = '001.txt';
     
    var
      donnees: TDonnees;
      fichier: Text;
      i: integer;
     
    begin
      Assign(fichier, NOM_FICHIER);
      Rewrite(fichier);
      for i := 1 to 3 do
      begin
        donnees.i := 10 * i;
    	donnees.s := IntToStr(100 * i);
        WriteLn(fichier, donnees.i);
    	WriteLn(fichier, donnees.s);
      end;
      Close(fichier);
     
      Assign(fichier, NOM_FICHIER);
      Reset(fichier);
      for i := 1 to 3 do
      begin
        ReadLn(fichier, donnees.i);
    	ReadLn(fichier, donnees.s);
        WriteLn(donnees.i);
    	WriteLn(donnees.s);
      end;
      Close(fichier);
    end.
    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
     
    uses
      sysutils;
     
    type
      TDonnees = record
        i: integer;
    	s: shortstring; // <---
      end;
     
    const
      NOM_FICHIER = '001'; // <---
     
    var
      donnees: TDonnees;
      fichier: file of TDonnees; // <---
      i: integer;
     
    begin
      Assign(fichier, NOM_FICHIER);
      Rewrite(fichier);
      for i := 1 to 3 do
      begin
        donnees.i := 10 * i;
    	donnees.s := IntToStr(100 * i);
        Write(fichier, donnees); // <---
      end;
      Close(fichier);
     
      Assign(fichier, NOM_FICHIER);
      Reset(fichier);
      for i := 1 to 3 do
      begin
        Read(fichier, donnees); // <---
        WriteLn(donnees.i);
    	WriteLn(donnees.s);
      end;
      Close(fichier);
    end.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  18. #18
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup. J'essayerai ces programmes demain, après avoir longtemps essayé j'ai trouvé ce programme qui fonctionne presque bien à part que x1=x3 et x2=x4 et impossible de comprendre pourquoi ?
    J'avoue que mon programme n'est pas très "propre", j'ai changé les types de données de coordonnées en String parce que sinon ça compile pas ...
    program appelfichier;
    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
     
    Type Coordonnees = record
    longitude : String;
    latitude : String;
    end;
     
    var entree, sortie1,sortie2 : text;
    latitude, longitude: String; ville: String;
    var pa,pd : string;
     
    begin
    writeln ('Point de depart');
    readln(pd);
    writeln ('Point arrivee');
    readln(pa);
    assign(entree,'etud.txt');
    reset(entree);
    assign(sortie1,'etudl1.txt');
    rewrite(sortie1);
    assign (sortie2, 'etudel1s.txt');
    rewrite(sortie2);
    while not(eof(entree)) do
    begin
     
    readln(entree, latitude);
    readln(entree, longitude);
    readln(entree, ville);
    begin
    if ville = pa then 
    begin 
    writeln (sortie1, latitude);
    writeln (sortie1, longitude);
    end; 
    end;
    begin
    if ville = pd then 
    begin
    writeln(sortie2, latitude);
    writeln (sortie2, longitude);
    end;
    end; 
    begin
    reset(sortie1);
    read(sortie1);
    writeln ('-------------');
    writeln ('x1=', latitude);
    writeln ('x2=', longitude);
    close(sortie1);
    end;
     
    begin 
    reset(sortie2);
    read(sortie2);
    writeln ('-------------');
    writeln ('x3=', latitude);
    writeln ('x4=', longitude);
    close (sortie2);
    end;
    close(entree);
    end;
    end.

    Merci d'avance, je suis désolé de poser autant de questions je suis vraiment nul !

  19. #19
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Nouvelle version
    Bonjour,
    Je reviens vers vous avec une nouvelle version plus complète du programme ...
    Chaque procédure quand elle est testée dans un programme indépendant fonctionne mais l'ensemble ne fonctionne pas .. Je pense donc que cela de mes signatures et de mes appels de procédure qui sont faux.
    Merci d'avance

    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
    Program Calcul;
     
    uses math, unite; 
     
    Procedure Saisie (var coord1, coord2 : Coordonnees);
    var entree, sortie1,sortie2 : text;
    latitude, longitude: String; ville: String;
    var pa,pd : string;
     
    begin
    writeln ('Point de depart');
    readln(pd);
    writeln ('Point arrivee');
    readln(pa);
    assign(entree,'destination.txt');
    reset(entree);
    assign(sortie1,'depart.txt');
    rewrite(sortie1);
    assign (sortie2, 'arrivee.txt');
    rewrite(sortie2);
    while not(eof(entree)) do
    begin
     
    readln(entree, latitude);
    readln(entree, longitude);
    readln(entree, ville);
    begin
    if ville = pa then 
    begin 
    writeln (sortie1, latitude);
    writeln (sortie1, longitude);
    end; 
    end;
    begin
    if ville = pd then 
    begin
    writeln(sortie2, latitude);
    writeln (sortie2, longitude);
    end;
    close(sortie1);
    close(sortie2);
    close(entree);
    end; 
    begin
    reset(sortie1);
    read(sortie1);
    writeln (coord1.longitude);
    readln(coord1.longitude);
    writeln (coord1.latitude);
    readln(coord1.latitude);
    close(sortie1);
    end;
     
    begin 
    reset(sortie2);
    read(sortie2);
    readln(coord2.longitude);
    readln (coord2.latitude);
    close (sortie2);
    end;
    close(entree);
    end;
    readln(coord1.longitude);
    close(sortie1);
     
    begin 
    reset(sortie2);
    read(sortie2);
    readln(coord2.latitude);
    readln (coord2.longitude);
    close (sortie2);
    end;
    close(entree);
    end;
     
     
    Function Calculcurviligne (coord1,coord2: Coordonnees) : Real;
    var
      S, delta, resultat: Real;
    Begin
    delta := (Coord2.Longitude-Coord1.Longitude);
    S := arccos (sin(Coord1.latitude)*sin(Coord2.latitude) + cos(Coord1.latitude)*cos(Coord2.latitude)*cos(delta) );
    resultat := 6378*S;
        Calculcurviligne := resultat;
     
      writeln ('Distance a parcourir', resultat, 'en kms')
     
    end;
     
     
     
    Procedure Affichage (coord1, coord2 : Coordonnees; var distance : Real);
     
    Begin
    distance:=Calculcurviligne(coord1,coord2);
      write ('Distance a parcourir ');
      writeln (distance);
    end;
    var distance : Real;
    var coord1,coord2 : Coordonnees;
     
    begin
    	Saisie (coord1, coord2);
       Affichage(coord1, coord2, distance);
    end.
     
    end.

  20. #20
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Bonjour ton problème viens de ta procedure saisie

    Je suppose que Coordonnees.Latitude, longitude sont des Single (Real)

    Dans ta procedure de saisie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    readln(coord2.longitude);
    readln (coord2.latitude);
    ici tu lis des chaines de caractères et non pas des "real" il faut que tu fasses la conversion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    uses math, sysutils, unite;
     
    Var
      ValeurLongitude, ValeurLatitude : String;
     
    readln(ValeurLongitude);
    readln (ValeurLatitude); 
     
    coord2.longitude := StrToFloat(ValeurLongitude);
    coord2.latitude := StrToFloat(ValeurLatitude);
    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

Discussions similaires

  1. Calcul de la distance entre deux points
    Par ines ben alaya dans le forum MATLAB
    Réponses: 0
    Dernier message: 17/10/2017, 21h15
  2. Réponses: 3
    Dernier message: 26/09/2015, 13h22
  3. Calcul distance entre un point et une poly3D
    Par LoicL89 dans le forum Lisp
    Réponses: 2
    Dernier message: 15/07/2015, 19h54
  4. Calcul de la distance entre 2 points géographiques
    Par nico_83220 dans le forum Scilab
    Réponses: 6
    Dernier message: 28/11/2014, 20h35
  5. Calcul de distance entre deux points sur une carte ( openlayers)
    Par Atika90 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/08/2013, 16h27

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