Per un esercizio analogo mi sono imbattuto a dover confrontarmi con un problema simile.
Devo trovare il massimo di un array, un argomento sciocco tuttavia, trovo delle difficolta'.
Ho iniziato innanzitutto a scrivere l'algoritmo, per poi cercare di passarlo in C, sia per esercitazione sia per aver conferma che l'algoritmo funzioni.
Fin qui, credo che tutto vada bene, ho provato a fare il mio schemino con i rettangoli, e pare andare (o diagrammi di flusso insomma).codice:function massimo_dell_array (a,n) var i: INTEGER var massimo: INTEGER begin i:=1 massimo:=a[i] for i:= 2 to n do if a[i]>massimo then massimo:=a[i] massimo_dell_array:=massimo end
Andiamo oltre, in C (ho aggiunto qualche commento per avere coscienza di cosa stia facendo):
Il programma parte, mi fa immettere dei valori, e questi vengono stampati a video.codice:#include <stdio.h> #define DIM_ARRAY 5 /* Abbiamo definito la dimensione massima di un ARRAY. Questo ci aiuta a immettere dei numeri in un ARRAY per poi confrontarli. */ main () { int a[DIM_ARRAY]; int i=0; int massimo=0; //costrutto per l'acquisizione dei valori /* 1 */ for (i=0;i<DIM_ARRAY;i++) { /* 2 */ printf("Immetti numero [%d]: ",i); /* 3 */ scanf("%d",&a[i]); } /* Nei primi 3 passi, abbiamo effettuato un controllo per l'immissione dei numeri nell'array */ /* 4 */ for (i=0;i<DIM_ARRAY;i++) { /* 5 */ printf("I valori immessi sono: [%d]\n",a[i]); } /* In questi altri passi invece, verifichiamo che il costrutto precedente sia corretto stampando i valori a video */ /*Entriamo nel ciclo ... E' qui che inizia il dilemma */ for (i=1;i<DIM_ARRAY;i++) { if (a[i]>a[i+1]) //if (a[i]==a[i+1]) { printf("\nSono tutti uguali\n");} else { a[i]=massimo; } } printf("Ok, esiste %d\n"); system("PAUSE"); }
L'entrata nel costrutto di controllo al fine di verificare se' ci sia il massimo ... bho' crea problemi.
Non capisco pero' perche' si blocca - e come risolvere.
Attendo una vostra.

Rispondi quotando