PDA

View Full Version : [C]aiuto su piccolo programmino..


johnny90
29-01-2009, 20:53
ciao a tutti,devo risolvere questo piccolo programma:data una matrice da tastiera calcola i massimi per ogni riga e visualizza a video il vettore contenente i massimi...io ho già impostato il programma però nn riesco a impostare la funzione per trovare il massimo su ogni riga infatti il programma ke ho fatto e ke adesso posto calcola quanti massimi ci sn nella matrice(il ke è inutile)....

na-kun
29-01-2009, 21:30
ciao a tutti,devo risolvere questo piccolo programma:data una matrice da tastiera calcola i massimi per ogni riga e visualizza a video il vettore contenente i massimi...io ho già impostato il programma però nn riesco a impostare la funzione per trovare il massimo su ogni riga infatti il programma ke ho fatto e ke adesso posto calcola quanti massimi ci sn nella matrice(il ke è inutile)....

la prima idea che mi verrebbe in mente (premetto però che non ho mai lavorato con matrici in C, ma solo in JAVA) è quella di istanziare una variabile max ed un array di lunghezza m (m = numero di colonne) in memoria...

successivamente prendi la prima riga e la inizi a scansionare... prendi il primo elemento della matrice e lo assegni a max, e poi tramite l'uso del for, scansioni passo per passo la prima riga facendo confronti (all'interno del for) con gli elementi successivi... fintanto che max >= array[i] allora il massimo rimarrà max, nel momento in cui max < array[i] allora assegni il nuovo massimo e quindi max = array[i]

finita di scansionare la riga, piazzi max in new_array[j] (l'array contenente tutti i massimi) dove j è inizializzato a 0 e cresce ogni volta che viene inserito un massimo all'interno di new_array

non so se sono stato abbastanza chiaro XD ora sarebbe da prendere questo discorso e procedere alla stesura dell'algoritmo...

ricordati che prima di procedere a fare un algoritmo, prima pensalo... poi vai a bere un the... lo trascrivi a parole (come ho fatto io sopra), e poi provi a tradurre quel che hai scritto a parole in codice...

Kenger
30-01-2009, 12:45
Visto che c'è un massimo per riga l'array dei massimi sarà di grandezza n ;)

Mesh89
30-01-2009, 14:26
if(mat[i]>mat[i][j])

Questo cosa dovrebbe significare? Non ho compilato, ma così ad occhio è anche un errore sintattico... Forse intendevi "se mat[i][j] è maggiore del massimo, allora è lui il nuovo massimo"?

johnny90
30-01-2009, 14:54
si,hai ragione,modificando e mettendo mat[i][j]>max mi esce il max ma di tutta la matrice,per far uscire il massimo di ogni singola riga cm devo fare?

Mesh89
30-01-2009, 14:58
si,hai ragione,modificando e mettendo mat[i][j]>max mi esce il max ma di tutta la matrice,per far uscire il massimo di ogni singola riga cm devo fare?

Però sei probabilmente uno studente, quindi non mi va di imboccarti così la soluzione... Innanzitutto, puoi postare il tuo nuovo codice? Solo la funzione che trova il/i massimo/i

johnny90
30-01-2009, 15:04
adesso la posto,cmq sn uno studente ma sto studiando per fare l'esame,questi aiuti mi servono a capire un pò di più visto ke nn sn molto bravo con il c...

Mesh89
30-01-2009, 15:18
adesso la posto,cmq sn uno studente ma sto studiando per fare l'esame,questi aiuti mi servono a capire un pò di più visto ke nn sn molto bravo con il c...

E' appunto per quello che non voglio imboccarti la soluzione.

Questo è il pezzo incriminato:

short int calcoloMassimi(short int mat[][DIM],short int riemp) {
short int i,j,max=0;

for(i=0;i<riemp;i++)
for(j=0;j<riemp;j++)
if(mat[i][j]>max)
max=mat[i][j];

return max;
}


Innanzitutto, dovrai reinizializzare il max ogni volta, perchè ovviamente non puoi passare alla riga successiva tenendoti il max della precedente. Seconda cosa, quando finisci il ciclo interno, hai il massimo per una data riga, no? A quel punto ci fai quello che vuoi (lo stampi, mi par di capire).
Se qualcosa non ti è chiaro, chiedi pure ;)

Cerca di essere un attimino conformista nell'indentazione -.- E visto che è un programma c, chiamalo programma.c

Mesh89
30-01-2009, 15:21
Guardando il programma nella sua interezza, ci sono anche altre cose che non vanno. Ad esempio, sei sicuro che l'utente ti inserisca una matrice quadrata?

johnny90
30-01-2009, 15:52
no,la matrice può essere di ogni tipo

Mesh89
30-01-2009, 15:56
no,la matrice può essere di ogni tipo

Quando vai a cercare il massimo però assumi che la matrice sia quadrata.

Mesh89
30-01-2009, 15:58
Però per prima cosa comincerei almeno a farlo funzionare almeno per le matrici quadrate :P