Affichage d'une matrice en pascal

Résolu/Fermé
Pogan Messages postés 2 Date d'inscription dimanche 1 mai 2011 Statut Membre Dernière intervention 23 octobre 2011 - 1 mai 2011 à 13:42
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 1 mai 2011 à 15:02
Salut à tous !

Voilà mon projet à faire en pascal : je dois convertir un fichier texte de la forme :

abcd
efgh
ijkl


en une matrice, pour ensuite l'afficher.

Voici le code que j'ai utilisé :
program texte_matrice;
uses crt;
var  F : text;
      ligne : string;
      t_matrice : array[1..4, 1..3] of char;
      i,j : integer;
	
begin
 
//Création de la matrice
assign (F, 'car.txt');
reset(F);
for i:=1 to 3 do
    begin 
    readln(F,ligne);
    for j:=1 to 4 do t_matrice[i,j]:=ligne[j];
    end;
close(F); 
 
 
//Affichage de la matrice
for i := 1 to 3 do
    begin
    for j := 1 to 4 do  
    write(t_matrice[i,j], ' ');
    writeln;
    end;
 
end.


Seulement, pour une raison qui m'échappe complètement, lorsque j'augmente le nombre de colonnes dans mon fichier texte (en changeant aussi les valeurs dans le array et les valeurs finales de i et j), il m'affiche absolument n'importe quoi !


Merci d'avance pour votre aide :D
A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
1 mai 2011 à 15:02
Remarque : avec ce code, cela ne marche déjà pas. Cela affiche :
a b c e
e f g i
i j k l

Le problème est dans la définition de t_matrice, tu as inversé le 3 et le 4.

Le mieux serait d'utiliser des constantes pour ne pas avoir à tout modifier à chaque fois et éviter ce genre d'erreurs de recopie :

program texte_matrice;

const
     imin=1; imax=3;
     jmin=1; jmax=4;

var
     t_matrice : array[imin..imax, jmin..jmax] of char;
     //...

begin
     // ...
     for i:=imin to imax do
     for j:=jmin to jmax do
     // ...
end.
5