Ultima modifica:
Ciao ragazzi, sto provando a risolvere questo esercizio in C, dovrei svilupparlo con un pensiero diverso e molto probabilmente mi sono complicato la vita attraverso vettori e matrici inutili. Qualcuno può delucidarmi su come ottimizzare e risolvere il codice? Questa è la traccia:
Scrivere un programma che acquisisca da tastiera un vettore di (max 100) valori di tipo intero e identifichi la più lunga sequenza di numeri consecutivi uguali. Se vengono identificate più sequenze della stessa lunghezza, si consideri solo la prima identificata. Il programma deve indicare il valore ripetuto e il numero di ripetizioni di quel valore.
Esempio:
Input: 19 3 15 15 7 9 9 9 9 12 3 3 3 Output: numero: 9, ripetizioni: 4
Io ho provato a risolverlo in questo modo ma so di aver fatto un pasticcio D:
Scrivere un programma che acquisisca da tastiera un vettore di (max 100) valori di tipo intero e identifichi la più lunga sequenza di numeri consecutivi uguali. Se vengono identificate più sequenze della stessa lunghezza, si consideri solo la prima identificata. Il programma deve indicare il valore ripetuto e il numero di ripetizioni di quel valore.
Esempio:
Input: 19 3 15 15 7 9 9 9 9 12 3 3 3 Output: numero: 9, ripetizioni: 4
Io ho provato a risolverlo in questo modo ma so di aver fatto un pasticcio D:
C:
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int main() {
int vetA[MAX],i,j=0,k=0,n,num=0,rep=0,vetB[MAX][MAX];
printf("Quanti valori si vuole introdurre?=");
scanf("%d", &n);
for(i=0;i<n;i++){
printf("Valore=");
scanf("%d", &vetA[i]);
}
for(i=0;i<n;i++){
if(vetA[i]==vetA[i+1]){
vetB[k][j]=vetA[i];
num=vetA[i];
j++;
rep++;
}
if(vetA[i]!=vetA[i+1]){
vetB[k][j]=vetA[i];
num=vetA[i];
rep=0;
k++;
}
printf("Numero=%d Rep=%d\n", num,rep);
}
return 0;
}