Mon fils est comme son père, il s'y prend à la dernière minute pour faire ses prépas....
j'ai besoin de votre aide pour ses exercices en turbo Pascal.....
1. Ecrivez une fonction qui detecte si une chaine de caracteres est vide.
2. Ecrivez une fonction qui compte le nombre de chiffres contenu dans une chaine composée de chiffres et de lettres?
3 Ecrivez un programme qui lit le numerateur et le denominateur d'une fraction et fourni la fraction simplifiée.
je sais le faire en Basic, mais pas en Turbo Pascal....de plus je ne vois pas ce qu'on appelle fonction...
pourriez-vous l'aider?... Evidemment, c'est pour demain!!!
merci
Marc
programme en Turbo Pascal
Modérateur : Politburo
- gilles
- Fonctionne à 9600 bauds
- Messages : 3100
- Enregistré le : 17 avr. 2007 21:25
- Localisation : 44
- Contact :
Re: programme en Turbo Pascal
pour le 1 ca doit donner un truc comme
function EstVide (chaine : STRING) : boolean;
var i:int;
begin
if (length(chaine) == 0) then
begin
EstVide := true;
end;
EstVide := false;
end;
pour le 2 il va falloir faire une boucle et utiliser du ord()
le 3 est plus rigolo.
après ça commence à remonter loin le Turbo pascal, je fais plutôt du C depuis 20 ou 25 ans
function EstVide (chaine : STRING) : boolean;
var i:int;
begin
if (length(chaine) == 0) then
begin
EstVide := true;
end;
EstVide := false;
end;
pour le 2 il va falloir faire une boucle et utiliser du ord()
le 3 est plus rigolo.
après ça commence à remonter loin le Turbo pascal, je fais plutôt du C depuis 20 ou 25 ans
- Rom1500
- Fonctionne à 1200 bauds
- Messages : 701
- Enregistré le : 29 nov. 2013 16:24
- Localisation : Pas très loin de Lyon
- Contact :
Re: programme en Turbo Pascal
On va simplifier un peu en syntaxe Delphi...
Function EstVide(MaChaine :String):Boolean;
Begin
Result:= Length(MaChaine)=0;
End;
Function NbChiffres(MaChaine:String):Integer;
Var i:Integer;
Begin
Result:=0;
If MaChaine <>'' then
For i:=1 to Length(MaChaine) do
Result:=Result+1*( Pos( MaChaine , '0123456789')>0);
End;
... si ça peut te donner une piste
Function EstVide(MaChaine :String):Boolean;
Begin
Result:= Length(MaChaine)=0;
End;
Function NbChiffres(MaChaine:String):Integer;
Var i:Integer;
Begin
Result:=0;
If MaChaine <>'' then
For i:=1 to Length(MaChaine) do
Result:=Result+1*( Pos( MaChaine , '0123456789')>0);
End;
... si ça peut te donner une piste
Toutes les infos : http://www.pc-1500.info
PC-1500+CE-150 : EU PC1500, PC1500A / JP PC1500, PC1500D, PC1501 / HU PTA4000, PTA4000+16 / US TRS80 PC2 / BR PC-1500RP, PC-1500RP2 / CN PC-1500, PC-1500A, Nanfeng PC-1500A
PC-1600 : PC-1600K V2, CE-1600M, CE-1604L, CE-515P, module 32Ko, module 512Ko
Extensions en boite : CE-150/151/152/153/154/155/156/157/158/159/160/161/162E/163 sans boite
PC-1500+CE-150 : EU PC1500, PC1500A / JP PC1500, PC1500D, PC1501 / HU PTA4000, PTA4000+16 / US TRS80 PC2 / BR PC-1500RP, PC-1500RP2 / CN PC-1500, PC-1500A, Nanfeng PC-1500A
PC-1600 : PC-1600K V2, CE-1600M, CE-1604L, CE-515P, module 32Ko, module 512Ko
Extensions en boite : CE-150/151/152/153/154/155/156/157/158/159/160/161/162E/163 sans boite
- gilles
- Fonctionne à 9600 bauds
- Messages : 3100
- Enregistré le : 17 avr. 2007 21:25
- Localisation : 44
- Contact :
Re: programme en Turbo Pascal
'ffectivment un seul signe égal pour le test d'égalité en Pascal.
Autant avec le C et le pascal j'avais tendance à prendre une écriture compacte, autant avec le temps on se rend compte que c'est une pratique qui rend la relecture plus difficile. La plupart des langages postérieurs vont imposer la présence de parenthèses sur les "if" et l'ouverture d'un bloc même s'il n'y a qu'une seule instruction. Certains langages vont jusqu'à imposer une indentation qui sert de structure (python). Optimiser c'est le boulot du compilateur, pas du (re)lecteur
Autant avec le C et le pascal j'avais tendance à prendre une écriture compacte, autant avec le temps on se rend compte que c'est une pratique qui rend la relecture plus difficile. La plupart des langages postérieurs vont imposer la présence de parenthèses sur les "if" et l'ouverture d'un bloc même s'il n'y a qu'une seule instruction. Certains langages vont jusqu'à imposer une indentation qui sert de structure (python). Optimiser c'est le boulot du compilateur, pas du (re)lecteur
-
- Fonctionne à 300 bauds
- Messages : 105
- Enregistré le : 26 nov. 2015 11:09
- Localisation : Wiltz ( Luxembourg)
Re: programme en Turbo Pascal
merci les gars de vous penchez sur ces petits exercices....
pour ma part, le Pascal, ça date de ....................30 ans......
pour ma part, le Pascal, ça date de ....................30 ans......
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3422
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: programme en Turbo Pascal
Du Turbo Pacal, ça fait un bail... En tout cas bien moins que 30 ans (28 en fait )
Mais je me souviens qu'en Turbo Pascal, que nous utilisions le nom de la fonction pour 'retourner' le "résultat" de celle-ci.
Je me souviens aussi que nous utilisions les majuscules pour les mots et instruction du Pascal. Mais je ne sais plus si c'était une convention (une demande de l'enseignant pour plus de pédagogie) ou une obligation (liée à la version du Borland Turbo Pascal que nous utilisions) ?
Je m'attendais donc à quelque chose du style :
Ce dernier programme pouvant être "structuré" :
Mais je me souviens qu'en Turbo Pascal, que nous utilisions le nom de la fonction pour 'retourner' le "résultat" de celle-ci.
Je me souviens aussi que nous utilisions les majuscules pour les mots et instruction du Pascal. Mais je ne sais plus si c'était une convention (une demande de l'enseignant pour plus de pédagogie) ou une obligation (liée à la version du Borland Turbo Pascal que nous utilisions) ?
Je m'attendais donc à quelque chose du style :
Code : Tout sélectionner
FUNCTION EstVide(MaChaine:STRING):BOOLEAN;
BEGIN
EstVide:= LENGTH(MaChaine)=0;
END;
Code : Tout sélectionner
FUNCTION NbChiffres(MaChaine:STRING):INTEGER;
CONST d0=ORD('0'),d9=ORD('9');
VAR i,n,d:INTEGER;
BEGIN
i:=0;
n:=0;
WHILE i<LENGTH(MaChaine) DO
BEGIN
i:=i+1;
d:=ORD(MaChaine[i]);
IF d0<=d AND d<=d9 THEN n:=n+1;
END;
NbChiffres:=n;
END;
Code : Tout sélectionner
PROGRAM SimplFrac ;
VAR N,D,A,B,T:INTEGER;
BEGIN
D:=0;
WHILE D<=0 DO
BEGIN
WRITE('ENTRER Numérateur:'); READLN(N):
WRITE('ENTRER Dénominateur:'); READLN(D);
END;
WRITELN();
A:=ABS(N);B:=D;
WRITE( 'PGCD(' );WRITE( A );WRITE( ',' );WRITE( B );WRITE( ' = ' );
WHILE B>0 DO
BEGIN
T:=B; B=A-B*INT(A/B); A:=T;
END;
WRITELN(T); WRITELN();
WRITE( N ); WRITE('/'); WRITE(D ); WRITE(' = ');
WRITE( N/T ); WRITE('/'); WRITE(D/T); WRITELN();
END.
Code : Tout sélectionner
PROGRAM SimplFrac ;
VAR N,D,P:INTEGER;
FUNCTION Pgdc( A:INTEGER , B:INTEGER ):INTEGER;
VAR T:INTEGER;
BEGIN
WRITE( 'PGDC(' , A , ',' , B , ' = ' );
WHILE B>0 DO
BEGIN
T:=B; B=A-B*INT(A/B); A:=T;
END;
WRITELN( T );
Pgdc:=T;
END;
BEGIN
D:=0;
WHILE D<=0 DO
BEGIN
WRITE( 'ENTRER Numérateur:' ); READLN( N ):
WRITE( 'ENTRER Dénominateur:' ); READLN( D );
END;
P:=Pgdc(ABS(N),D);
WRITELN( N , '/' , D , ' = ' , N/P , '/' , D/P );
END.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.