Ciao, ho fatto questo programmino che indica di quanti elementi è composta la sequenza di numeri crescenti più lunga tra i valori inseriti:
codice:
#include <stdio.h>
main() {
int i, flag, flag2, flagmax, seqstart, seqend, flagcambio, flag3, flagPos;
float n, valmax;
flag3=0;
flag = 0;
flagmax = 0;
valmax = 0;
i=1;
seqstart= 0;
seqend = 0;
flagcambio = 0;
flag2 = 0;
flagPos = 0;
printf("Inserisci il valore\n");
scanf("%f", &n);
while (n!=0)
{
if (n > valmax)
{
valmax = n;
flag++;
if (flag > flagmax)
{
if (flagPos == 0)
{
seqstart = i;
}
flagmax = flag;
// aggiunta
flagPos = 1;
// fine aggiunta
}
else
{
flagPos = 0;
}
}
else
{
flag = 1;
valmax = 0;
flagPos = 0;
}
printf("Inserisci il valore\n");
scanf("%f", &n);
i++;
}
printf("La massima sequenza crescente e' di %d elementi\n", flagmax);
printf("La massima sequenza crescente inizia in %d \n", seqstart);
scanf("%d");
}
Come noterete dal codice devo anche fare in modo di sapere in corrispondenza di quale valore inizia la sequenza massima crescente. Se ad esempio inserisco:
4 5 6 1 2 3 4 5 6 dovrebbe dirmi che la sequenza massima crescente è lunga 6 elementi e che inizia dal quarto elemento. Non posso usare vettori, solo flag. Io ho comnciato con l'inserire un contatore i che mi indica il valore i esimo che stiamo considerando, poi volevo mettere un flag che avvisasse quando era iniziata una nuova sequenza crescente massima e che a quel punto dasse a seqstart il valore di i, ma non funziona.
Cosa sbaglio?
Grazie