Ciao, ho fatto questo programmino che indica di quanti elementi è composta la sequenza di numeri crescenti più lunga tra i valori inseriti:
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: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"); }
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

					
					
					
						
  Rispondi quotando
						