Jump to content

Recommended Posts

Guest HAVOC

Bon n'ayant plus aucun souvenir du langage pascal, je te propose la solution sous forme algorithmique (y'a qu'à traduire en pascal... le principe étant donné).

 

Exo 2 :

Ceci est un cas typique qu'on peut facilement résoudre avec de la récursivité :

 

programme Exo2

 

fonction calculSomme(n:entier):réel { // C'est à dire que la fonction prend en paramère un entier et elle rend à la fin un réél.

 

si n==1 alors

retourne 1

sinon

1/fact(n) + calculSomme(n-2)

fsi

 

fin

 

Note : Si tu as peur de la récursivité (ou si tout simplement ce principe n'a pas encore été vu en cours), tu peux utiliser une boucle while avec un i initialisé à 1 et qui va jusqu'à i=n avec un pas de 2 (c'est à dire que tu i fera : 1, 3, 5, 7...etc).

Edited by HAVOC
Link to post
Share on other sites
Guest HAVOC

Pour l'exo3, c'est un cas typique d'exo accès mathématique/recherche... tout ce que je déteste mdr.

 

Bref... ici tout est une histoire de sélection d'un bon type ou plutôt de la bonne forme pour stocker ses données. Je pense qu'en pascal les tableau à deux dimensions existent, c'est ce que tu dois utiliser.

 

Pour la lecture et l'écrire de la matrice il te suffit d'utiliser des boucles, en plus c'est une matrice carrée (N*N).

 

Exemple (en C l'exemple cette fois lol) :

 

int i, j, n; // Déclaration de deux entier i, j et n

int matrice[][]; // Déclaration d'un tableau d'entier à deux dimensions

 

printf("Veuillez entrez la taille de la matrice : ");

scanf("%d", &n); // Rien d'inquiétant ici, je récupère juste l'entier entré au clavier par l'utilisateur

 

for (i = 0, i

for (j = 0, j

 

printf("Veuillez entrer l'élément %d, %d de la matrice", i, j); // Pour obtenir un affichage du style : Veuillez entrer l'élément 0,0 de la matrice

 

scanf("%d", &matrice[j]); // On met l'entier tapé dans une des case de la matrice

 

}

}

 

Voilà... on a créé notre matrice.

 

Pour les questions B et C c'est aussi un parcours comme celui que j'ai donné avec un petit if pour vérifier si c pair ou impair.

 

Pour la suite... j'ai pas trop le temps là mais j'essaierai d'y répondre plus tard.

Link to post
Share on other sites
  • Moderators

program EXO2;

var N : integer, I : integer, P : integer, S : real;

function Fact ( n : integer) : integer;
begin
if n=0 then Fact := 1
else
  begin
  Fact := Fact(n-1) * n ;
  end;
end;


begin

S := 1;
P := 1;

for I :=1 to N do
begin

S := S + 1 / Fact( P ) ; 
P := P + 2 ;
end;

write ( S ) ;

end.

 

pour le reste tu fais un petit effort :)

Edited by mouradski
Link to post
Share on other sites

Ah ! Mourad je te demande un tout petit dérnier service :D", comment déterminer les élément paires de la matrice et de faire d'eux les éléments d'un vecteur ?

Si tu te souviens bien sûr, parce que le pascal c'est seulement pour les premières années :)

 

Merci.

Link to post
Share on other sites
  • Moderators
Ah ! Mourad je te demande un tout petit dérnier service :D", comment déterminer les élément paires de la matrice et de faire d'eux les éléments d'un vecteur ?

Si tu te souviens bien sûr, parce que le pascal c'est seulement pour les premières années :)

 

Merci.

 

fonction Pair qui retourne Vrai si l'entier passé en paramètre est pair et faux sinon :)

 

function Pair ( n : integer ) : bool;
begin
if (n mode 2) = 0 then Pair := true;
else Pair := false;
end;

 

Pour les vecteurs qui ne sont que des tableaux dynamiques consultes ce lien et digères bien la notion de pointeur.

 

C'est pas parce que le Pascal n'est qu'en première année bark qu'il faut le négliger, c'est un langage purement pédagogique c-à-d qu'il t'apprendra la philosophie de la programmation, je te conseille de bien l'étudier sinon tu auras un peu de mal à digérer plus tard le C/C++ et cie.

Edited by mouradski
Link to post
Share on other sites
Guest HAVOC
Salut Havoc,

 

Merci beaucoup pour ton aide, mais je crois que ça c'est du C++ :D"

 

Chui encore dans le pascal lol, je cherche un programme de langage pascal :)

 

Merci.

 

Kifkif, C ou Java ou Python...c'est la syntaxe qui diffère, l'idée de résolution reste à quelques détails près la même!

Link to post
Share on other sites

Ah! Merci beaucoup Mourad, je te promis que si j'aie une très bonne note en Algo demain, 3endek pizza men 3endi.

 

Allez @+

 

Un petit ennui de ma part si tu le permet, comment distinguer ces paires d'une matrice.:o

 

Merci. ;)

Edited by Yacine_3tm
Link to post
Share on other sites
Kifkif, C ou Java ou Python...c'est la syntaxe qui diffère, l'idée de résolution reste à quelques détails près la même!

:D:D:D" je ne suis que débutant dans les langages, faire la différence entre les syntaxe et comme la grande différence entre toi et moi en programmation :)"

Link to post
Share on other sites
  • Moderators
Ah! Merci beaucoup Mourad, je te promis que si j'aie une très bonne note en Algo demain, 3endek pizza me 3endi.

 

Allez @+

 

Un petit ennui de ma part si tu le permets, comment distinguer ces paires d'une matrice.:o

 

Merci. ;)

 

lol ben tu exécutes la fonction Pair sur chacune des case de la matrice comme suit

 

for i :=1 to N do 
for j :=1 to N do 
  begin
  if Pair ( Matrice [i,j]) then // ajouter la valeur au vecteur approprié
  end;

 

je te conseille de jeter un coup d'œil sur le lien que je t'ai donné en haut pour voir comment manipuler les Matrices/Vecteurs, pour faire simple je te conseille de travailler qu'avec des vecteurs statiques sur dimensionnés s'il le faut mais de préférence utilise des structures dynamiques avec les pointeurs et là WOULAHI EL 3ADIM que Google saura faire copain copain avec toi mieux que moi :)

Link to post
Share on other sites

Ah bon, donc si j'ai bien compris, je déclare avant la fonction qui définie les paires puis j'utilise directement paire comme connu.

 

Très très bien, merci beaucoup pour le lien et ton aide, ça m'a vraiment aidé vu qu'on a pas vu les fonctions ni en cours ni en TD :).

 

Merci à Havoc aussi pour ton aide ;)

 

Allez @++ mes amis :)

 

----------------------------------------------------------------------------------------------------------------------------

Vive ForumDz !

Edited by Yacine_3tm
Link to post
Share on other sites

Je viens de passer aujourd'hui l'EMD d'Algo, malheureusement y avait pas de fonction, on nous a donné le déroulement d'un Algorithme avec la boucle Tant que pour seulement 4.5 pts :mad::(:o :

Algorithme calcul

Variables a,r: réel

i,b,c: entier

Début

lire(a,b)

c

Si a≠0 alors r

i

Tant que i

r

i

Fintantque

Si b

finsi

Ecrire®

Sinon écrire ('Erreur: a est nul')

 

Finsi

Fin

 

Trouvez moi l'expression générale qu'il calcule et je vais savoir est ce que j'aurai 4.5/4.5 sur cette exo :)

 

Ok je sais c'est dégoutant de résoudre un tel problème en middle de juin avec une chaleur pareille...ouai je sais :D"

Edited by Yacine_3tm
Link to post
Share on other sites
Guest HAVOC

Cet algorithme visiblement calcul l'expression générale : a^b (lire a puissance b) avec a étant un réel et b un entier.

 

Note : par contre je ne vois pas pourquoi l'algo énoncé affiche une erreur si a est nulle... le résultat donne zéro dans ce cas et puis c'est tout.

Link to post
Share on other sites
Cet algorithme visiblement calcul l'expression générale : a^b (lire a puissance b) avec a étant un réel et b un entier.

 

Note : par contre je ne vois pas pourquoi l'algo énoncé affiche une erreur si a est nulle... le résultat donne zéro dans ce cas et puis c'est tout.

 

Pour A^b je lance un grand youyou, j'ai donc eu 100% de l'exo.

 

Et pour le ('erreur bla blab bla') tu sais, ils cherchent toujours à inventer des diversions sans intérêt.

 

Merci Havoc :)

Link to post
Share on other sites

Ah ! très bonne question, je rame dans le tronc commun St (Science technique), mais je donne une très grande importance à la programmation surtout l'Algorithme vu que je vais faire automatisme comme spécialité nchalah.

 

je vais essayer de poster le reste du sujet.

 

Merci.

Link to post
Share on other sites

Bon, un autre de 6pts :) :

 

Soit une matrice A d'ordre (n,m) de valeurs réelles donné. Ecrivez un programme Borland Pascal permettant de compter le nombre d'occurrences dans cette matrice d'une valeur V donnée et de récupérer leurs position dans un tableau POS. Le nombre d'occurrences est le nombre de fois que V apparît dans la matrice A.

 

Exemple : Soit A=32628002.jpg, le nombre d'occurrences de 7 est 3. POS: [1 3 2 1 3 2].

Link to post
Share on other sites
Bon, un autre de 6pts :) :

 

Soit une matrice A d'ordre (n,m) de valeurs réelles donné. Ecrivez un programme Borland Pascal ...

mdr :D :D

 

puisque je passe par la .. :

const
 n = 3;

type 
 TMat = array [0 .. n - 1, 0 .. n - 1] of Integer;
 TTab = array [0 .. (n * n - 1)] of record
   i, j: Byte;
 end;

function nombreocc(k: Integer; m: TMat; var v: TTab): Integer;
var
 i, j, s: Integer;
begin
 s := 0;
 for i := 0 to n - 1 do
   for j := 0 to n - 1 do
     if k = m[i, j] then
     begin
       v[s].i := i;
       v[s].j := j;
       Inc(s); { équivalent à s := s + 1;}
     end;
  nombreocc := s;
end;

voila essaye de comprendre ce petit code (rien de bien compliqué normalement..), et écrit le programme principal..

Link to post
Share on other sites

Bon, pour les erreurs ? Pour tu crois que c'est des erreurs ? : De l'ordre n:ex: 3, m:ex:2, et borland pascal n'existe pas ?

A propos du code:

 

v.i := i;

v.j := j;

je ne comprend pas bien, bon... je comprend le principe mais le syntaxe, non. Et y à pas d'affichage des résultat, qu'est qu'on doit afficher ?

Merci.

Link to post
Share on other sites
  • Moderators
Bon, pour les erreurs ? Pour tu crois que c'est des erreurs ? : De l'ordre n:ex: 3, m:ex:2, et borland pascal n'existe pas ?

A propos du code:

 

v.i := i;

v.j := j;

je ne comprend pas bien, bon... je comprend le principe mais le syntaxe, non. Et y à pas d'affichage des résultat, qu'est qu'on doit afficher ?

Merci.

 

Borland est un Editeur de Compilateur/IDE

Pascal est un langage de programmation.

 

Pour la syntaxe, un Record comme son nom l'indique est un Enregistrement, une sorte de structure qui contient des éléments de différents types, dans le cas de ton code chaque enregistrement contient deux variables de type Byte, on accède aux éléments composant le Record avec un point, ex : MonRecord.VarableX, on peut lire et affecter une valeur à cette variable, on peut aussi créer des tableaux de type record et accéder au variables des éléments ce ce tableaux avec MonTableau[index].VariableX.

Link to post
Share on other sites
Borland est un Editeur de Compilateur/IDE

Pascal est un langage de programmation.

 

Pour la syntaxe, un Record comme son nom l'indique est un Enregistrement, une sorte de structure qui contient des éléments de différents types, dans le cas de ton code chaque enregistrement contient deux variables de type Byte, on accède aux éléments composant le Record avec un point, ex : MonRecord.VarableX, on peut lire et affecter une valeur à cette variable, on peut aussi créer des tableaux de type record et accéder au variables des éléments ce ce tableaux avec MonTableau[index].VariableX.

 

Désolé pour te dire mais peut-tu trouver une autre solution simple avec seulement les types : Real et Integer.

j'ai trouvé la solution pour l'occurrence mais pour la position des cette dernière sous forme d'un Tableau, quelque chose m'échappe.

 

Merci.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...