Exercice pascal

Résolu/Fermé
foufou - 13 nov. 2007 à 23:10
 mina19 - 25 mars 2009 à 10:29
Bonjour,
j'ai un exercice en langage pascal qui permet d'ajouter des articles et les affichees puis il fait la trie de ces articles selon leurs quantites de stoskes mais le probleme que la trie ne marche pas correctement alors si pouver m'aidee





program ex ;
uses wincrt;
type
article = record
num_art:word;
nom_art:string[20];
dat_appro:string[10];
qt_stk:integer;
pu:real;
end;

fichier = file of article;

var
fiche : fichier;
v:article;
choix:integer;

procedure menu;
begin
clrscr;
writeln('**********************************************************');
writeln('********* MENU GENERAL ***** GESTION DU STOCK ************');
writeln('**********************************************************');
writeln;
writeln;
writeln('-1- Creation du fichier');
writeln('-2- Ajouter les articles');
writeln('-3- Afficher les articles');
writeln('-4- Afficher la valeur du stock');
writeln('-5- Afficher les articles trié par ordre croissant selon la quantité en stock');
writeln('-6- Fin');
write('Tapez votre choix (1,2,3,4): ');
end;

procedure creation(var fiche:fichier);
begin
assign(fiche,'c:\4sig1dc1\articles.fch');
rewrite(fiche);
end;

procedure ajouter(var fiche:fichier);
var v:article;
rep:char;
begin
repeat
clrscr;
writeln('**********************************************************');
writeln('****************** AJOUTER UN ARTICLE ****************');
writeln('**********************************************************');
writeln;
writeln;
write('Donner le numéro de l''article: '); readln(v.num_art);
write('Donner le nom de l''article: '); readln(v.nom_art);
write('Donner la date du dernier approvisionnement: '); readln(v.dat_appro);
write('Donner la quantité en stock: '); readln(v.qt_stk);
write('Donner le prix unitaire: '); readln(v.pu);
write(fiche,v); {*** écriture dans le fichier ***}
writeln;
writeln;
repeat
write('Voulez vous continuer: ');readln(rep);
until upcase(rep) in['O','N'];
until upcase(rep) = 'N';
end;

procedure afficher(var fiche:fichier);
var v:article;
begin
reset(fiche);
while not(EOF(fiche)) do
begin
read(fiche,v); {*** lecture à partir du fichier dans v ***}
{clrscr;}
writeln('**********************************************************');
writeln('**************** AFFICHAGE DES ARTICLES **************');
writeln('**********************************************************');
writeln;
writeln;
writeln('Numéro de l''article: ',v.num_art);
writeln('Nom de l''article: ',v.nom_art);
writeln('Date du dernier approvisionnement: ',v.dat_appro);
writeln('Quantité en stock: ',v.qt_stk);
writeln('Prix unitaire: ',v.pu:7:3);
write('Tapez sur une touche pour passer à l''article suivant'); readln;
end;
end;

function val_stock(var fiche:fichier):real;
var v:article;
i:integer;
val:real;
begin
reset(fiche);
val:=0;
while not(EOF(fiche)) do
begin
read(fiche,v);
val:=val+v.qt_stk;
end;
val_stock:=val;
end;

procedure tri(var fiche:fichier);
var
fiche2:fichier;
v:article;
i,max:integer;
begin
assign(fiche2,'c:\4sig1dc1\temp.fch');
rewrite(fiche2);
reset(fiche);

repeat
max:=-1;


while not(EOF(fiche)) Do {trouver la valeur maximale}
begin
read(fiche,v);
if v.qt_stk>max then
begin
max:=v.qt_stk;
write( v.qt_stk);
end;
end;

if max<>-1 then
begin

while not(EOF(fiche)) Do
begin
read(fiche,v);
if v.qt_stk=max then
begin
write(fiche2,v);
write( v.qt_stk);
end;
end;
end;
until max=-1;
{ close(fiche); }
rewrite(fiche);
reset(fiche2);

while not(EOF(fiche2)) Do
begin
read(fiche2,v);
write(fiche,v);
end;
close(fiche2);

end;

begin {***** PROGRAMME PRINCIPAL ******}
repeat
menu;
readln(choix);
case choix of
1: begin
creation(fiche);
clrscr;
writeln('*** fichier crée avec succés ***');
write('*** appuyer sur une touche pour revenir au MENU GENERAL ***');
readln;
end;
2: ajouter(fiche);
3: afficher(fiche);
4: begin
clrscr;
writeln('********************************************************');
writeln('********* AFFICHAGE DE LA VALEUR DU STOCK **************');
writeln('********************************************************');
writeln;
writeln;
writeln('La valeur du stock est: ',val_stock(fiche):7:3);
write('Tapez sur une touche pour revenir au MENU GENERAL'); readln;
end;
5: begin
tri(fiche);
afficher(fiche);
readln;
end;
6:close(fiche);
end;
until choix=6;
end.
A voir également:

8 réponses

mias23 Messages postés 1 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 29 avril 2008 2
29 avril 2008 à 18:49
bonjour j'ai un tp pascal à rendre svp tu pe m'aider
il consiste a transformer des operation en forme polonaise( ex: a+b === ab+)
en prenant en cosideration les preorité des parantese et les operateur apres vous fetes l'evaluation


et merci d'avance
2
je voudrais bien savoir est ce que ce programme ne veu pas fonctionner corectement
program reche;
uses wincrt;
const max=100;

type
tableau= array[1..max] of integer;

var a,i,n:integer;
t,g:tableau;

function rechercher ( var t:tableau;n,x:integer ) :integer;

var i : integer;

begin
i:=1;
while (i<=n) and (t[i]<>x) do inc(i);
if i<=n then
rechercher:= i
else
rechercher:=-1

end;
begin
write('entre le nbr del:');
read(n) ;

for i:=1 to n do
begin
write('g[',i,']=');
readln(g[i]);
end;

write('entre lelt recherc:');
read (a);
writeln('la position de ',a,'est : ',rechercher(g,n,a)) ;


end.

c'est un programme qui permet de rechercher un element dans un tableau non trie et de donner sa position
2
salut marroco, je suis dali , j ai en bac info et j ai besoin des exercices a propos de programmation, de tic des, fichiers..
envoyer moi svp et merci bien mon ami.
zairidali@yahoo.fr
2
salut, je suis Sou , j ai en bac info et j ai besoin des exercices algorithmique & programmation, de tic des, fichiers..
envoyer moi svp et merci bien mon ami.
w_ss@live.fr
2
Exercices algorithmique : https://algo.developpez.com/cours/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
14 nov. 2007 à 11:11
Slt,

Si ton fichier n'est pas volumineux: il vaut mieux le mettre dans un tableau, puis trier le tableau puis ecrire dans le fichier.

Sinon: tu dois faire la méthode traditionnelle: lire la plus grande quantité, enregistre la dans une varibale, mis la dans un 2ème fichier temporaire, mettre la valeur dans le fichier d'origine à -1.

Attention: il vaux mieux travailler avec deux fichiers, puis supprimer l'ancien et renommer le nouveau par le nom de l'ancien.

Pour ton code j'ai pas pu le lire: celan prendra une heure.
1
je veux vos aide ce qui concerne l'info ,bacc info ,exercices recursivité ,aritmitique,fichiers,tri...+tic and base de donnees
1
slt dali cé amina de la tunisie j'ai une grande problème avec les fonctions prédéfini en pascal, aussi avec le javascript en tic ainsi que la base de donnée merci pour votre attention....
0
comment peux comprit le matier programation tres difficile sur tout le trie et le recherche
1
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 121
30 avril 2008 à 12:31
Salut tout le monde,

Pour faire un tel truc (transformation de forme) le problème n'est pas en Pascal mais dans la méthode: vous pouvez utiliser les arbres, et pour afficher un parcours poste ordre suffit, c'est un peu compliqué à réaliser. Donc si vous réussissez à faire l'algorithme on peut vous aidez à la réalisation.
1