View Full Version : [Turbo Pascal] trasferire matrice in array
Giuseppe214
14-09-2007, 18:03
Salve ragazzi!!Ho un problemino!!Ho una matrice di numeri reali di m righe ed n colonne con m e n definiti come costanti e devo trasferire i dati della matrice in un array di dimensione m*n!!Come si fa?Grazie :help:
cdimauro
15-09-2007, 06:54
program ProvaCopiaMatriceInVettore;
const
m = 10;
n = 10;
var
Matrice: array[1..m, 1..n] of real;
Vettore: array[1..m * n] of real;
procedure CopiaMatriceInVettore_DirtyWay;
begin
(* La soluzione più "sporca", ma veloce, come piace agli smanettoni. *)
Move(Matrice, Vettore, m * n * SizeOf(real));
end;
procedure CopiaMatriceInVettore;
var
Riga, Colonna: Integer;
begin
for Riga := 1 to m do
for Colonna := 1 to n do
Vettore[(Riga - 1) * n + Colonna] := Matrice[Riga, Colonna];
end;
begin
CopiaMatriceInVettore;
end.
Giuseppe214
17-09-2007, 16:28
Non parte propiro :help:
variabilepippo
17-09-2007, 16:38
Non parte propiro
Cosa significa???
Non riesci a compilare? Hai un errore in fase di esecuzione?
Hai inserito delle istruzioni per popolare la matrice e visualizzare il vettore?
cdimauro
17-09-2007, 16:49
Mi accodo: cosa c'è che non va? Errore di sintassi? Output errato?
Considera che il programmino l'ho scritto al volo senza neppure controllare. :p
giustamente il compilatore si rifiuta di compilare :rolleyes: :D
cdimauro
17-09-2007, 21:54
Il programma in questione compila e funziona perfettamente. ;)
Vettore[(Figa - 1) * n + Colonna] := Matrice[Figa, Colonna];
ma sei convinto ? :rolleyes: :D
cdimauro
17-09-2007, 22:23
:rotfl: Sei sempre il solito! :p
Giuseppe214
18-09-2007, 13:46
Non va in esecuzione!!Non va il run run
cdimauro
18-09-2007, 13:49
Io l'ho lanciato e andava. Certo, il programma terminava immediatamente senza visualizzare niente, ma non era questo il suo scopo mi pare.
Giuseppe214
18-09-2007, 15:04
ah ecco!!Sono alle prime armi con le matrici e nn le ho capite bene!!Potreste dirmi anche come ordinarla in ordine crescente?
cdimauro
18-09-2007, 15:21
ah ecco!!Sono alle prime armi con le matrici e nn le ho capite bene!!
Non c'è problema: nessuno è nato "imparato". :p
Potreste dirmi anche come ordinarla in ordine crescente?
Vorresti che i suoi elementi fossero ordinati in ordine crescente?
Giuseppe214
18-09-2007, 15:34
Si dal più piccolo al più grande
Avendo nella matrice i numeri messi così
3 17 1
15 5 13
7 9 11
ordinarla così
1 3 5
7 9 11
13 15 17
cdimauro
18-09-2007, 15:41
Visto che sei alle prime armi, ti conviene copiara la matrice in un vettore, ordinare questo tramite uno dei tanti algoritmi che si trovano in giro (il select sort è MOLTO semplice da implementare), e poi ricopiare il vettore nella matrice.
Se hai bisogno della soluzione fammi sapere, ma è sempre preferibile sbatterci un po' la testa da soli per apprendere meglio quello che si sta facendo. :)
Giuseppe214
18-09-2007, 16:03
(il select sort è MOLTO semplice da implementare)
E che è il select sort??non si può fare normalmente?
cdimauro
18-09-2007, 16:07
Non c'è un costrutto già pronto: lo devi programmare tu. :D
Qui http://en.wikipedia.org/wiki/Selection_sort c'è spiegato come funziona e ci sono due esempi.
Se non te la senti stasera, appena ho qualche minuto libero, te lo scrivo io il codice, ma nel frattempo ti consiglio per lo meno di provarci. ;)
Giuseppe214
18-09-2007, 16:17
Ci sto provando da 2 giorni!!La testa l'ho già persa :muro:
Cmq qll è C e Phyton a me serve in TP e senza select sort poi pian piano le studierò qll cose!!
variabilepippo
18-09-2007, 16:34
a me serve in TP e senza select sort
Dovrai comunque implementare un algoritmo di ordinamento, ne esistono tanti tra cui scegliere. Prova a trasformare il codice C in Pascal, potresti imparare qualcosa. ;)
Giuseppe214
18-09-2007, 17:04
Per l'ordinamento del vettore farei così io:
prenderei 2 vettori e una variabile
var
vettore1:array[1..10] of integer
vettore2:array[1..10] of integer
comodo:integer
poi farei questo
comodo<- vettore1[i]
vettore1[i]<-vettore2[k]
vettore2[k]<-comodo
variabilepippo
18-09-2007, 18:58
poi farei questo
comodo<- vettore1[i]
vettore1[i]<-vettore2[k]
vettore2[k]<-comodo
Non capisco il senso di queste assegnazioni, il tuo scopo non è ordinare un vettore?
Giuseppe214
18-09-2007, 20:40
:doh: scusate ero nell'aldilà!!Si lo scopo è ordinare una matrice!!Potete firmi come si fa?Mi servirebbe per domattina :help: :mc:
cdimauro
19-09-2007, 07:53
procedure ScambiaElementi(var a, b: real);
var
Temp: real;
begin
Temp := a;
a := b;
b := Temp;
end;
Procedure OrdinaVettore;
const
NumElementi = n * m;
var
i, j: Integer;
begin
for i := 1 to NumElementi - 1 do
for j := i + 1 to NumElementi do
if Vettore[i] > Vettore[j] then
ScambiaElementi(Vettore[i], Vettore[j]);
end;
Questo è il codice che ordina gli elementi del vettore (definito come nell'altro programma che t'avevo scritto) con l'algoritmo del selection sort.
Giuseppe214
22-09-2007, 21:06
Grazie a tutti dell'aiuto
genioexpress
23-09-2007, 01:04
il vecchi e amato pascal quanto mi manca :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.