CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Pascal] Afficher une matrice

kragoth
kragoth
Niveau 10
08 février 2008 à 13:04:36

Bonjour, je dois faire un programme qui permet de multiplier 2 matrice entre elle le problème est que je n'arrive même pas à en afficher une, est ce que vous pouvez me dire ce qui ne ve pas

const dim=10;
var nl,nc,nc2,i,j : integer;
mat1: array [1..10,1..10] of real;
rep:char;

begin
repeat

writeln('Entrez le nombre de lignes de la matrice 1');
readln(nl);
writeln(' Entrez le nombre de colonnes de la matrice 1');
readln(nc);
writeln(' Entrez le nombre de colonnes de la matrice 2');
readln(nc2);

i:=1;
j:=1;
for i:=1to nl do
for j:=1 to nc do

begin
writeln('Entrez ligne ',i,' colonne ',j);
read(mat1[i,j]);

end;
for j:=1 to nc do for i:=1 to nl do
begin

write (mat1[i,j]:8);
end;
writeln('Voulez vous continuer? o/n');
readln(rep);
until rep='n';
end.

:merci:

guyver2
guyver2
Niveau 10
08 février 2008 à 20:39:57

je ne me souvient plus trop comment fonctionne la fonction write (arf c'est loin le deug...) mais il te manque tres certainement un retour a la ligne a la fin de chaque ligne de ta matrice.

Tu dois avoir toutes tes valeurs qui s'affichent les unes a la suite des autres.

for j:=1 to nc do
begin
...for i:=1 to nl do
...begin
...write (mat1[i,j]:8);
...end;
writeln();
end;

kragoth
kragoth
Niveau 10
09 février 2008 à 11:52:12

oui c'est exactement ça, la matrice s'écrit sur une ligne, j'avais déjà essayé ta proposition mais ça ne fonctionne pas non plus

je pense qu'il faut quelque chose du genre

for j:=1 to nc do
i:=1
write()

for j:=1 to nc do
i:=2
write()

et ainsi de suite mais je ne sais pas comment exprimer cela

MongueurGecko
MongueurGecko
Niveau 6
10 février 2008 à 17:09:20

Le gros problème vient du fait que tu dises que ca ne fonctionne pas.. et qu'on ne sa

MongueurGecko
MongueurGecko
Niveau 6
10 février 2008 à 17:12:19

Le gros problème vient du fait que tu dises que ca ne fonctionne pas.. et qu'on ne sache pas ce que tu obtiens commme résultat !

La soluce de guyver est bonne, le problème doit venir d'ailleurs : type des variables, initialisation...

kragoth
kragoth
Niveau 10
11 février 2008 à 19:31:29

je l'ai dis ce qui ne va pas c'est que ca affiche la matrice sur une ligne par exemple : 1 2 3 4 a la place de

1 2
3 4

guyver2
guyver2
Niveau 10
12 février 2008 à 00:24:42

la solution que je t'ai donnée devrai resoudre ce probleme justement.

donne ton code complet car si tu fait comme je t'ai dis et que tu as tjs tous les elements sur une ligne doit y avoir une merdouille qq part

kragoth
kragoth
Niveau 10
13 février 2008 à 16:49:49

j'ai essayé d'une autre facon mais ca ne marche toujours pas :(

program CARNA107 ;
uses crt;
const dim=10;
var nl,nc,nc2,i,j,k : integer;
mat1,mat2,mat3: array [0..dim,0..dim] of integer;
rep,conf:char;

begin
repeat
clrscr;
writeln('Entrez le nombre de lignes de la matrice 1');
readln(nl);
writeln(' Entrez le nombre de colonnes de la matrice 1');
readln(nc);
writeln(' Entrez le nombre de colonnes de la matrice 2');
readln(nc2);

repeat
begin
writeln ('Entree de la matrice 1');
writeln(' ');
for i:=1to nl do
for j:=1 to nc do
begin
writeln('Entrez ligne ',i,' colonne ',j);
readln(mat1[i,j]);
end;

i:=0;
repeat
i:=i+1;
for j:=1 to nc do
write (mat1[i,j]:8);
until (i=nl);

writeln(' ');
writeln ('Est ce la bonne matrice ? (o/n)');
readln (conf);
end;
until (conf ='O') or (conf = 'o');

repeat
begin
writeln('Entree de la matrice 2');
writeln(' ');
for j:=1 to nc do
for k:=1 to nc2 do
begin
writeln('Entrez ligne ',j,' colonne ',k);
readln(mat2[j,k]);
end;

j:=0;
repeat
j:=j+1;
for k:=1 to nc2 do
write(mat2[j,k]:8);
until (j=nc);
writeln(' ');
writeln ('Est ce la bonne matrice ? (o/n)');
readln (conf);
end;
until (conf ='O') or (conf = 'o');
writeln('Voulez vous recommencer? (o/n) ?');
readln(rep);
until (rep='n') or (rep='N')
end.

voila :merci:

kragoth
kragoth
Niveau 10
13 février 2008 à 18:11:15

voila le programme fonctionne

program carna107;
uses crt;
const dim=10;
var
mat1,mat2,mat3:array[0..dim,0..dim] of integer;
nl,nc,nc2,i,j,k:integer;
rep:char;
conf:char;
begin
repeat
clrscr;
writeln('Entrez le nombre de lignes de la matrice 1');
readln(nl);
writeln('Entrez le nombre de colonnes de la matrice 1');
readln(nc);
writeln('Entrez le nombre de colonnes de la matrice 2');
readln(nc2);

repeat
begin
writeln('Entree de la matrice 1');
writeln(' ');
for i:=1 to nl do
for j:=1 to nc do
begin
writeln('Entrez ligne ',i,' colonne ',j);
readln(mat1[i,j]);
end;
i:=0;
repeat
i:=i+1;
for j:=1 to nc do
write(mat1[i,j]:3);
writeln(' ');
until (i=nl);
writeln(' ');
writeln('Est ce la bonne matrice ? (O/N)');
readln(conf);
end;
until (conf='O') or (conf='o');

repeat
begin
writeln('Entree de la matrice 2');
writeln(' ');
for j:=1 to nc do
for k:=1 to nc2 do
begin
writeln('Entrez ligne ',j,' colonne',k);
readln(mat2[j,k]);
end;
j:=0;
repeat
j:=j+1;
for k:=1 to nc2 do
write(mat1[j,k]:3);
writeln(' ');
until (j=nc);

writeln(' ');
writeln('Est ce la bonne matrice ? (O/N)');
readln(conf);
end;
until (conf='O') or (conf='o');

begin
for i:=1 to nl do
for k:=1 to nc2 do
for j:=1 to nc do

mat3[i,k]:=mat3[i,k]+(mat1[i,j]*mat2[j,k]);
end;

writeln('Resultat');

for i:=1 to nl do
begin
for k:=1 to nc2 do
write(mat3[i,k]:3);
writeln(' ');
end;

writeln('Voulez vous recommencer ?(O/N)');
readln(rep);
until (rep='n') or (rep='N')
end.

mais je ne comprend pas pourquoi la méthode que j'utilise sur le poste au dessus fonctionne ici et pas dans celui d'avant et pourquoi il fonctionne pour les matrice 1 et 2 et pas pour la 3 contrairement a la méthode de guyver2 qui elle fonctionne pour la matrice 3

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment