Svp votre aide en pascal

Fermé
kbibi99 Messages postés 12 Date d'inscription mardi 6 septembre 2011 Statut Membre Dernière intervention 23 avril 2012 - 22 sept. 2011 à 13:37
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 22 sept. 2011 à 14:24
Bonjour,
c'est un code de mon programme pascal
program exercice;
uses wincrt;
type
cara = record
nom:string;
cin:longint;
moy:1..20;
date_naissance : Record
jour : 1..31 ;
mois : 1..12 ;
an : 1900..2011 ;
End ;
dicision:char;
End ;
tab=array [1..10] of cara;

{début de programme principal}
var
t:tab;
x:string ;
n,i:integer ;
begin

repeat
writeln('donner le nombre d''élèves');
readln(n);
until n in [1..10];

for i:=1 to n do
begin
with t[i] do
begin
writeln('donner ton nom');
readln (nom);
repeat
writeln('donner le numéro de ton CIN');
readln(cin);
str(cin,x);
until length(x)=8;
repeat
writeln('donner ton moyen');
readln (moy);
until (moy in [1..20]);

with date_naissance do
begin
writeln('donner votre date de naissance');
writeln('JJ :');
readln(jour);
writeln('MM :');
readln(mois);
writeln('AAAA :');
readln(an);
End ;
if moy<10 then
writeln('R')
else
writeln('A');

end;
end;

end.


je veut faire un fonction qui cotrole la saisie de CIN pour qu'elle soit unique dans le tableau càd que chaque personne possède son propre numéro de cin unique





A voir également:

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
Modifié par KX le 22/09/2011 à 14:35
Ta fonction devra remplacer toute cette partie de ton code :

repeat 
    writeln('donner le numéro de ton CIN'); 
    readln(cin); 
    str(cin,x); 
until length(x)=8;

Une fois la vérification sur x obtenue tu parcours ton tableau de j=1 à i-1 pour comparer x avec t[j].x si ils sont égaux tu redemandes à saisir une autre valeur.

Remarque : il est d'usage d'utiliser des constantes et des types dans les programmes, en particulier pour définir les tableaux !

const NMAX = 10; 
type Intervalle = [1..NMAX]; 
type Tableau = array[Intervalle] of Cara; 

function lireX(var tab:Tableau; i:Intervalle):String; 
var entier,code:Integer; 
begin 
    write('Numéro de CIN : '); 
    readln(result); 

    // tests de valeur 
    val(result,entier,code);     
    if length(result)<>8 or code<>0 or entier<0 
    begin 
        writeln('Le numéro de CIN doit être composé de 8 chiffres'); 
        result:=lireX(tab,i);
        exit;
    end; 

    // tests d'unicité 

    for ... 

end;

La confiance n'exclut pas le contrôle
0