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.
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
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).
Andiamo oltre, in C (ho aggiunto qualche commento per avere coscienza di cosa stia facendo):
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");
}
Il programma parte, mi fa immettere dei valori, e questi vengono stampati a video.
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.