Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Pascal!URGENTISSIMO!!!

    Ciao,
    c'è qualcuno ke si ricorda qcosa di Pascal?
    Mi servirebbe saper come faccio ad allineare dei numeri mem in una matrice..

    es.:

    2 3 4
    44 5 66

    GRAZIE!

  2. #2
    Vanessa, la prossima volta utilizza un titolo più esplicativo.
    Grazie

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  3. #3
    in che senso allineare?ti serve ordinarli? è una matrice bidimensionale? spiega meglio così non ho capito niente!ti spiego io come si fa!

  4. #4
    Devo INCOLONNARLI,
    ma utilizzando i due punti e il nuemro (es: var:10) lo spazio tra due variabili dipende dalla loro lunghezza!!!

    2 23
    24 5

    io vorrei
    2 23
    24 5

    Grazie!

  5. #5
    2 23
    4 524

    speriamo prenda bene!

  6. #6
    Insomma nn posso fart vedere l'esempio, ma vorrei unità incolonnate, decine ecc....mi sono spiegata?
    Grazie!

  7. #7
    fai un disegno con il paint e postalo..xè giuro nn ho capito...

  8. #8
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263
    credo che il concetto che sta cercando di esprimere sia questo... stampando i valori di una matrice ottiene una cosa tipo
    codice:
    23 3 654 75
    2 9 38 9
    19 256 4 29
    e invece vorrebbe ottenere un output più ordinato come
    codice:
     23   3 654  75
      2   9  38   9
     19 256   4  29
    almeno... mi è parso di aver capito così!

    nonostante questo io il pascal non sto nemmeno dove sia di casa e non so proprio aiutarti.

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Se è come dice toraz, allora questa procedura dovrebbe fare al caso tuo:
    codice:
    procedure Allinea(num_cifre: integer; valore: string);
    var i:integer;
    begin
       for i:=(num_cifre - Length(valore)) Downto 0 do
          write(' ');
       write (valore);
    end;
    Ti spiego come funziona: essa prende come argomenti due parametri.

    num_cifre: è un intero che rappresenta il numero di cifre del valore più grade (in base al quale effettuare l'allineamento: è ovvio che l'allineamento deve essere fatto in base al numero con più cifre)

    valore: è la rappresentazione stringa del numero da stampare.

    Questa procedura si preoccupa di stampare davanti al numero che deve visualizzare tanti spazi quanti sono quelli mancanti per completare il numero di cifre del più grande numero presente nella lista di valori che devi allineare.

    Ti posto un esempio del suo utilizzo: questo esempio chiede all'utente l'inserimento di un array 3x3 di numeri e li stampa in forma matriciale allineati (come suggerito da toraz):
    codice:
    Program Matrice;
    uses crt;
    
       procedure Allinea(num_cifre: integer; valore: string);
       var i:integer;
       begin
          for i:=(num_cifre - Length(valore)) Downto 0 do
          begin
             write(' ');
          end;
          write (valore);
       end;
    
    var mat:array[0..3,0..3] of Integer;
        i, j, max:Integer;
        tmp: String[80];
    begin
       clrscr;
    
       for i:=0 to 2 do
          for j:=0 to 2 do
          begin
             Writeln('Introdurre il valore ',i,',',j,': ');
             Readln(mat[i,j]);
          end;
    
       Str(mat[0,0], tmp);
       max := Length(tmp);
    
       (* Qui calcolo quant'è lungo il numero più grande *)
       for i:=0 to 2 do
          for j:=0 to 2 do
          begin
             Str(mat[i,j], tmp); (* converto in stringa il numero *)
             if (Length(tmp) > max) then max := Length(tmp);
          end;
       (* Ora nella variabile 'max' ho il numero di cifre del numero più grande *)
    
       for i:=0 to 2 do
       begin
          for j:=0 to 2 do
          begin
             Str(mat[i,j], tmp);
             Allinea(max, tmp);
          end;
          Writeln;
       end;
    end.
    Spero di essere riuscito a risolvere il tuo problema.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.