Exercice pascal

Résolu/Fermé
Signaler
-
 mina19 -
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.

8 réponses

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
1
Date d'inscription
mardi 29 avril 2008
Statut
Membre
Dernière intervention
29 avril 2008
2
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
814
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
17 avril 2020
118
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.
je veux vos aide ce qui concerne l'info ,bacc info ,exercices recursivité ,aritmitique,fichiers,tri...+tic and base de donnees
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....
comment peux comprit le matier programation tres difficile sur tout le trie et le recherche
Messages postés
814
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
17 avril 2020
118
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.