Programme juste mais n'affichre rien!!!
Résolu/Fermé
Rahmouni007
Messages postés
155
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2017
-
14 nov. 2012 à 09:36
Rahmouni007 Messages postés 155 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 17 avril 2017 - 14 nov. 2012 à 20:23
Rahmouni007 Messages postés 155 Date d'inscription vendredi 10 octobre 2008 Statut Membre Dernière intervention 17 avril 2017 - 14 nov. 2012 à 20:23
A voir également:
- Programme juste mais n'affichre rien!!!
- Programme demarrage windows 10 - Guide
- Mettre en veille un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Désinstaller programme windows 10 - Guide
- Sms programmé - Guide
7 réponses
Utilisateur anonyme
14 nov. 2012 à 10:01
14 nov. 2012 à 10:01
Bonjour
Il y a longtemps que je n'ai pas fait de Pascal, mais il me semble qu'un flush(f) à la fin de creation ne ferait pas de mal.
Les "write" écrivent dans un buffer et pas vraiment dans le fichier. Donc si tu ne le refermes pas avant d'essayer de le lire, il faut au moins vider ce buffer dans le fichier réel, c'est le rôle de flush.
Il y a longtemps que je n'ai pas fait de Pascal, mais il me semble qu'un flush(f) à la fin de creation ne ferait pas de mal.
Les "write" écrivent dans un buffer et pas vraiment dans le fichier. Donc si tu ne le refermes pas avant d'essayer de le lire, il faut au moins vider ce buffer dans le fichier réel, c'est le rôle de flush.
Rahmouni007
Messages postés
155
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2017
2
14 nov. 2012 à 10:03
14 nov. 2012 à 10:03
merci mon ami mais flash ne fais pas parti de programme
est ce qu'il y a une solution dans ce programme même pour qu'il fonctionne
merci
est ce qu'il y a une solution dans ce programme même pour qu'il fonctionne
merci
flash ne fais pas parti de programme
Ça n'est pas gênant, je ne t'ai pas dit d'utiliser flash, mais flush.
Si tu n'es pas attentif, tes programmes ne sont pas près de marcher.
J'ai dit "si tu ne le refermes pas".
Ça sous-entend que si tu le refermes, ça va bien écrire dans le fichier.
Donc tu le refermes quand tu as fini d'écrire, ce qui est d'ailleurs bien plus logique. Mais n'oublie pas de le rouvrir pour le relire ensuite.
Ça n'est pas gênant, je ne t'ai pas dit d'utiliser flash, mais flush.
Si tu n'es pas attentif, tes programmes ne sont pas près de marcher.
J'ai dit "si tu ne le refermes pas".
Ça sous-entend que si tu le refermes, ça va bien écrire dans le fichier.
Donc tu le refermes quand tu as fini d'écrire, ce qui est d'ailleurs bien plus logique. Mais n'oublie pas de le rouvrir pour le relire ensuite.
Rahmouni007
Messages postés
155
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2017
2
14 nov. 2012 à 10:13
14 nov. 2012 à 10:13
toujours le même problème
tous marche sauf il n'écrit pas dans le fichier et donc rien ne marche par la suite
comment je dois faire ?
merci
tous marche sauf il n'écrit pas dans le fichier et donc rien ne marche par la suite
comment je dois faire ?
merci
Rahmouni007
Messages postés
155
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2017
2
14 nov. 2012 à 10:16
14 nov. 2012 à 10:16
parce que la taille du tableau est >2
Rahmouni007
Messages postés
155
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2017
2
14 nov. 2012 à 10:18
14 nov. 2012 à 10:18
j4ai déjà modifié et toujours la même résultat
Utilisateur anonyme
Modifié par le père. le 14/11/2012 à 10:19
Modifié par le père. le 14/11/2012 à 10:19
Tu pourrais essayer par toi même de mettre un writeln à l'écran à côté de chaque write dans ton fichier pour voir si au moins ton programme essaye d'écrire dans le fichier. Tu verrais qu'il n'essaye même pas.
D'où vient la valeur de n qui définit le nombre de boucles ? Elle a été saisie dans la procedure remplir. Mais elle n'est pas passée en var dans cette procedure : autrement dit, quand tu la modifies à l'intérieur de la procedure, elle n'est pas modifiée à l'extérieur. Donc n vaut toujours 0.
D'où vient la valeur de n qui définit le nombre de boucles ? Elle a été saisie dans la procedure remplir. Mais elle n'est pas passée en var dans cette procedure : autrement dit, quand tu la modifies à l'intérieur de la procedure, elle n'est pas modifiée à l'extérieur. Donc n vaut toujours 0.
Rahmouni007
Messages postés
155
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2017
2
14 nov. 2012 à 10:22
14 nov. 2012 à 10:22
oui vous avez raison pour le n,j'ai ajouter var devant n dans la procédure remplir et là le programme s'arrête au niveau de test 4
Rahmouni007
Messages postés
155
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2017
2
14 nov. 2012 à 10:42
14 nov. 2012 à 10:42
j'attends toujours vos aides mes amis
ça m'étonne ce programme vraiment...
ça m'étonne ce programme vraiment...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
14 nov. 2012 à 11:06
14 nov. 2012 à 11:06
j'attends toujours vos aides mes amis
Si je ne vais pas assez vite à ton goût, il faut le dire
ça m'étonne ce programme vraiment
Pas moi.
Tu devrais changer le sujet "programme juste..." Sois un peu modeste : il n'est pas juste, s'il ne marche pas c'est ta faute.
Pour en revenir à ton problème, qu'est ce que tu appelles le test 4 ? Et quand tu dis que le programme s'arrête, que se passe-t-il ? il s'arrête simplement ou il y a un message d'erreur ?
Si je ne vais pas assez vite à ton goût, il faut le dire
ça m'étonne ce programme vraiment
Pas moi.
Tu devrais changer le sujet "programme juste..." Sois un peu modeste : il n'est pas juste, s'il ne marche pas c'est ta faute.
Pour en revenir à ton problème, qu'est ce que tu appelles le test 4 ? Et quand tu dis que le programme s'arrête, que se passe-t-il ? il s'arrête simplement ou il y a un message d'erreur ?
Rahmouni007
Messages postés
155
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2017
2
14 nov. 2012 à 11:11
14 nov. 2012 à 11:11
oh mon père!soit un peu doux avec moi!:)
ben le programme n'as aucune erreur et il s'exécute normal mais il n'écrit pas dans le premier fichier et il s'arrête dans le message de test au niveau de test ' sans erreur ni rien mais il ne passe pas a test 5 et test 6...
ben le programme n'as aucune erreur et il s'exécute normal mais il n'écrit pas dans le premier fichier et il s'arrête dans le message de test au niveau de test ' sans erreur ni rien mais il ne passe pas a test 5 et test 6...
Rahmouni007
Messages postés
155
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2017
2
14 nov. 2012 à 11:28
14 nov. 2012 à 11:28
c moi qui as ajouter ces simples messages de test pour savoir au quel point le programme s'arrête de s'exécuter
ben maintenant il s'arrête au niveau de test 4 vu que il m'écrit la dernière chose qui s'affiche sur écran, pascal est test4...
ben maintenant il s'arrête au niveau de test 4 vu que il m'écrit la dernière chose qui s'affiche sur écran, pascal est test4...
Utilisateur anonyme
14 nov. 2012 à 11:37
14 nov. 2012 à 11:37
Tu es désespérant....
Comment veux-tu que je devine où se trouvent tes messages de test ?
Tu crois que j'ai une boule de cristal ? Aide-moi à t'aider.
Redonne le programme avec tes messages de test
Comment veux-tu que je devine où se trouvent tes messages de test ?
Tu crois que j'ai une boule de cristal ? Aide-moi à t'aider.
Redonne le programme avec tes messages de test
Rahmouni007
Messages postés
155
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2017
2
14 nov. 2012 à 11:44
14 nov. 2012 à 11:44
ah oui pardon mon père j'ai pas fais attention vraiment...
tenez ce nouveau programme:
tenez ce nouveau programme:
PROGRAM DC1; USES WINCRT; TYPE enreg1=record nom_prenom:string[50]; NT,NC,NS:real; end; enreg2=record nom_prenom2:string[50]; moy:real; decision:string[10] end; notes=file of enreg2; tab=array [1..100] of enreg1; var t:tab; e1:enreg1; e2:enreg2; f:notes; n:integer; procedure remplir(var t:tab;n:integer); var i:integer; begin for i:=1 to n do begin with t[i] do begin write('donner le nom et le prénom: '); readln(Nom_prenom); write('donner NT: '); readln(NT); write('donner NC: '); readln(NC); write('donner NS: '); readln(NS); end; end; end; procedure creation (var f:notes;var t:tab;n:integer;VAR e2:enreg2); var i:integer; begin for i:=1 to n do begin e2.nom_prenom2:=t[i].nom_prenom; e2.moy:=(t[i].nt+t[i].nc+2*t[i].ns)/4; if e2.moy>=10 then e2.decision:='admis' else e2.decision:='refuser'; read(e2.nom_prenom2); read(e2.moy); read(e2.decision); write(f,e2); end; end; procedure afficher(var f:notes;e2:enreg2); begin reset(f); while(not eof(f)) do begin read(f,e2); with e2 do begin write(nom_prenom2,' ',moy:5:2,' ',decision); end; end; close(f); end; begin repeat writeln('Entrer le nombre d''enregistrements'); readln(n); until(n>2); writeln('test1'); assign(f,'c:\notes.dat'); writeln('test2'); rewrite(f); writeln('test3'); remplir(t,n); writeln('test4'); creation(f,t,n,e2); writeln('test5'); afficher(f,e2); writeln('test6'); end.
Utilisateur anonyme
14 nov. 2012 à 12:02
14 nov. 2012 à 12:02
Dans mon message #3 je t'ai dit de refermer le fichier puis de le rouvrir. Pourquoi est-ce que ça n'apparaît pas dans ce code ?
Pour continuer à détecter l'erreur, ajoute des writeln ('test') à l'intérieur de ta fonction creation. Ça te donnera une idée plus précise de l'endroit où ça ne va pas
Pour continuer à détecter l'erreur, ajoute des writeln ('test') à l'intérieur de ta fonction creation. Ça te donnera une idée plus précise de l'endroit où ça ne va pas
Rahmouni007
Messages postés
155
Date d'inscription
vendredi 10 octobre 2008
Statut
Membre
Dernière intervention
17 avril 2017
2
14 nov. 2012 à 20:23
14 nov. 2012 à 20:23
c bon mon père
le problème est résolu
voilà le programme fonctionnel:
merci pour votre aide
le problème est résolu
voilà le programme fonctionnel:
PROGRAM DC1; USES WINCRT; TYPE enreg1=record nom_prenom:string[50]; NT,NC,NS:real; end; enreg2=record nom_prenom2:string[50]; moy:real; decision:string[10] end; notes=file of enreg2; tab=array [1..100] of enreg1; var t:tab; e1:enreg1; e2:enreg2; f:notes; n:integer; procedure remplir(var t:tab;n:integer); var i:integer; begin for i:=1 to n do begin with t[i] do begin write('donner le nom et le prénom: '); readln(Nom_prenom); write('donner NT: '); readln(NT); write('donner NC: '); readln(NC); write('donner NS: '); readln(NS); end; end; end; procedure creation (var f:notes;var t:tab;n:integer;VAR e2:enreg2); var i:integer; begin for i:=1 to n do begin e2.nom_prenom2:=t[i].nom_prenom; e2.moy:=(t[i].nt+t[i].nc+2*t[i].ns)/4; if e2.moy>=10 then e2.decision:='admis' else e2.decision:='refuser'; write(f,e2); end; end; procedure afficher(var f:notes;e2:enreg2); begin reset(f); while(not eof(f)) do begin read(f,e2); with e2 do begin writeln(nom_prenom2,' ',moy:5:2,' ',decision); end; end; close(f); end; begin repeat writeln('Entrer le nombre d''enregistrements'); readln(n); until(n>2); assign(f,'c:\notes.dat'); rewrite(f); remplir(t,n); creation(f,t,n,e2); afficher(f,e2); end.
merci pour votre aide