Programme en pascal??????

Fermé
liza22 - 29 déc. 2008 à 17:57
KX Messages postés 16746 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 29 juin 2024 - 3 janv. 2009 à 01:39
Bonjour,
j'ai un programmme pour realiser consernant les matrices ,le programme fait lui meme choisir un matrice (5x5),et fait remplier aleatoirement mais en fait respecter a deux condition :
1-les nombre de la matrice entre 0 et 1. (deux nombres apres la virgule).
2-la somme de chaque colonne egale a 1.
A voir également:

18 réponses

KX Messages postés 16746 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 29 juin 2024 3 016
3 janv. 2009 à 01:07
2
KX Messages postés 16746 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 29 juin 2024 3 016
1 janv. 2009 à 17:30
program SansTitre; // uses KX;

const a=5; b=5;

type colonne=array[1..a] of real;
     matrice=array[1..b] of colonne;

procedure RemplirColonne(var c:colonne);
var i,partiel,total:integer;
begin
total:=100;
for i:=1 to (a-1) do
    begin
    partiel:=random(total);
    total:=total-partiel;
    c[i]:=real(partiel)/100;
    end;
c[a]:=real(total)/100;
end;

procedure RemplirMatrice(var m:matrice);
var j:integer;
begin
for j:=1 to b do
    RemplirColonne(m[j]);
end;

procedure AfficherMatrice(m:matrice);
var i,j:integer;
begin
for j:=1 to b do
    begin
    for i:=1 to a do
        write(m[i,j]:5:2);
    writeln;
    end;
end;

var m:matrice;
begin
randomize;
RemplirMatrice(m);
AfficherMatrice(m);
writeln; write('Fin du programme. Appuyer sur Entree'); readln;
end.
2
KX Messages postés 16746 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 29 juin 2024 3 016
2 janv. 2009 à 23:44
program SansTitre; // uses KX;

const a=5; b=5;

type colonne=array[1..a] of real;
     matrice=array[1..b] of colonne;

procedure RemplirColonne(var c:colonne);
var i,partiel,total:integer;
begin
total:=100;
for i:=1 to (a-1) do
    begin
    partiel:=random(total);
    total:=total-partiel;
    c[i]:=real(partiel)/100;
    end;
c[a]:=real(total)/100;
end;

procedure RemplirMatrice(var m:matrice);
var j:integer;
begin
for j:=1 to b do
    RemplirColonne(m[j]);
end;

procedure AfficherMatrice(m:matrice);
var i,j:integer;
begin
for j:=1 to b do
    begin
    for i:=1 to a do
        write(m[i,j]:5:2);
    writeln;
    end;
end;

function Moyenne(c:colonne):real;
var i:integer;
begin
result:=0;
for i:=1 to a do
    result:=result+c[i];
result:=result/a;
end;

function SommeCarre(c:colonne):real;
var i:integer;
begin
result:=0;
for i:=1 to a do
    result:=result+sqr(c[i]);
end;

function EcartType(c:colonne):real;
begin
result:=sqrt(SommeCarre(c)-sqr(Moyenne(c)))/a
end;

var m:matrice; i:integer;
begin
randomize;
RemplirMatrice(m);
AfficherMatrice(m);
for i:=1 to b do
    begin
    writeln;
    writeln('Colonne ',i);
    writeln('Moyenne : ',Moyenne(m[i]):0:4);
    writeln('Ecart-T : ',EcartType(m[i]):0:4);
    end;
writeln; write('Fin du programme. Appuyer sur Entree'); readln;
end.
2
KX Messages postés 16746 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 29 juin 2024 3 016
3 janv. 2009 à 00:29
Je suis désolé mais moi j'obtiens une moyenne de 0.20 (normal puisque la somme est de 1)
Et un écart type compris entre 0.13 et 0.19...
Ton problème ne vient pas du code... Qu'utilises-tu comme compilateur ?
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KX Messages postés 16746 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 29 juin 2024 3 016
2 janv. 2009 à 17:55
Le code est bon, j'arrive à le faire marcher sans problème et j'obtiens ce genre de résultat :
 0.08 0.43 0.06 0.48 0.31
 0.68 0.53 0.52 0.14 0.05
 0.18 0.02 0.21 0.00 0.24
 0.05 0.00 0.15 0.35 0.28
 0.01 0.02 0.06 0.03 0.09
Qu'est ce que tu utilises comme compilateur ?
1
le programme ne marche pas (des erreurs),et je n'arrive pas a resouler,l'erreur c'est :
Invalid type cast................
0
merci merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii , c'est le programme s'a marche, j'ai enlever le mot real l'à :

*******
c[i]:=real(partiel)/100;
end;
c[a]:=real(total)/100;
end;
*************
0
maintenant la 2 eme partie :
comment fait aussi afficher Xbar et l'ecart type de chaque colonne ,(les resultat toujour deux nombre apres la virgules) , bien sur apres afficher la matrice il affiche Xbar et l'ecart type de chaque colonne......????
0
xbar=1/5 ∑x i.
l'ecart type=racine de 1/5 ∑(xi-xbar)puissance de 2.
0
KX Messages postés 16746 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 29 juin 2024 3 016
2 janv. 2009 à 19:49
Petite remarque : écart type=racine_carré( somme_des_carrés - carré_de_la_moyenne)/n
function Moyenne(c:colonne):real;
var i:integer;
begin
result:=0;
for i:=1 to a do
    result:=result+c[i];
result:=result/a;
end;

function SommeCarre(c:colonne):real;
var i:integer;
begin
result:=0;
for i:=1 to a do
    result:=result+sqr(c[i]);
end;

function EcartType(c:colonne):real;
begin
result:=sqrt(SommeCarre(c)-sqr(Moyenne(c)))/a
end;
0
Marci.......d'avoir m'aider...........merci
0
ja n'arrive pas a pouvoir fait la combinaison entre les deux codes?????
0
il ne marche pas le programme ??????????
0
il faut toujour deux nombre apres la virgules dans les resultats...........
0
KX Messages postés 16746 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 29 juin 2024 3 016
3 janv. 2009 à 00:10
Pour le faire marcher, il faut enlever les real comme tu l'as déjà fait...
Pour les 2 chiffres après la virgule remplace les :0:4 par :0:2 et c'est tout...
0
oui j'ai fait comme tu ma dait mais les resultats de moyenne et l'ecart type qui sont apparu sont faut pourquoi........mon dieu j'arrive a etre fou.......
0
KX Messages postés 16746 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 29 juin 2024 3 016
3 janv. 2009 à 00:21
Probablement parce que la formule que j'ai implémenté n'est pas la même que celle que tu donnais...
Essaye de refaire tes calculs manuellement mais avec ma formule (qui est la bonne)
0
il donne des resultat environ les 10000000.00
0
je ne sais pas comment savoir le compilateur mais je utilise le turbo pascal...
0
KX Messages postés 16746 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 29 juin 2024 3 016
3 janv. 2009 à 00:54
Turbo Pascal c'est ça ton compilateur...
Moi j'utilise Dev-Pascal... Et je ne sais pas quelles sont les différences entre les deux !
Mais normalement il ne devrait pas y avoir de telles absurdités...

J'ai trouvé une petite erreur même si ça ne devrait pas changer grand chose...
procedure AfficherMatrice(m:matrice);
var i,j:integer;
begin
for j:=1 to b do
    begin
    for i:=1 to a do
        write(m[j][i]:5:2);
    writeln;
    end;
end;
Si ce n'est toujours pas ça il faudrait que tu essayes avec autre chose que Turbo Pascal...
0
alors tu peux m'envoyer dev-pascal et j'abdonne le turbo pascal
0
waw c'est tres bien il marche bien ,merci beaucoup........ ,mais j_ai un question comment tu as arrivee a savoir tous ca et savoir maitriser le pascal..................merci...................merci........
0
KX Messages postés 16746 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 29 juin 2024 3 016
3 janv. 2009 à 01:39
Je suis en licence d'informatique...
Le Pascal est le premier langage que l'on apprend, alors forcément c'est celui que je connais le mieux !
Pour le reste on suit des cours d'algorithmique, ton exercice ne m'a donc pas trop posé problème...

Bonne continuation.
0