rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut :

Exercice pascal

Posté par foufou, le mardi 13 novembre 2007 à 23:10:40
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.
Configuration: Windows XP
Internet Explorer 6.0
Répondre à foufou  Signaler ce message aux modérateurs Aller au dernier message

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tarek_dotzero, le mercredi 14 novembre 2007 à 11:11:49
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.
Répondre à tarek_dotzero

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mohamed, le vendredi 4 janvier 2008 à 15:50:24
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
Répondre à mohamed

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
marocco, le mardi 19 février 2008 à 18:30:40
je veux vos aide ce qui concerne l'info ,bacc info ,exercices recursivité ,aritmitique,fichiers,tri...+tic and base de donnees
Répondre à marocco


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
dali, le jeudi 20 mars 2008 à 13:17:57
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
Répondre à dali

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mahmoud007, le lundi 24 mars 2008 à 09:59:38
comment peux comprit le matier programation tres difficile sur tout le trie et le recherche
Répondre à mahmoud007

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Sou007, le vendredi 11 avril 2008 à 09:55:19
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
Répondre à Sou007

8


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Jade , le mardi 29 avril 2008 à 19:00:39
Exercices algorithmique : http://algo.developpez.com/cours/
Répondre à Jade

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mias23, le mardi 29 avril 2008 à 18:49:53
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
Répondre à mias23

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 tarek_dotzero, le mercredi 30 avril 2008 à 12:31:09
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.
Répondre à tarek_dotzero
Discussions pertinentes trouvées dans le forum
10/05 03h26Ki peut me fair 1 exercice PASCAL !!!10
17/04 20h07Exercices Pascal trés dure3
13/11 23h10Exercice pascal9
12/05 11h55Exercice Pascal2
Plus de discussions sur « Exercice en pascal!! »
Logiciels pertinents trouvés dans les téléchargements
Télécharger PrévisiOOo 19 Février 2007PrévisiOOo - PrévisiOOo est un logiciel pour faire des prévisionnels. Un budget prévisionnel bien conçu n’a rien d’un laborieux exercice...Catégorie: Comptabilité/Paie
Licence: Freeware/gratuit
Télécharger Workrave 1.8.4Workrave - Workrave vous veut du bien: Si vous travaillez à longueur de journée sur ordinateur, ce logiciel vous incite à effectuer des...Catégorie: Organisation
Licence: Open Source
Télécharger Delphi 6 Edition personnelle 6.0Delphi 6 Edition personnelle - La société Borland (Inprise) a mis à disposition gratuitement, pour un usage non-commercial, la version 6 de son...Catégorie: Delphi
Licence: Freeware/gratuit
Télécharger Super Blank 3.01Super Blank - Ce freeware permet de formater vos CD et DVD récalcitrants. L'interface, bien qu'en anglais, est sobre et claire.Catégorie: Gravure
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Exercice en pascal!! »