Resolver problemas básicos del lenguaje C.
I. Plataforma: Los elementos consecutivos iguales en el array son una plataforma.
II. Plataforma más larga: Encuentra la más larga entre todas las plataformas.
3. Hay más de un método. Desde la perspectiva del programa completo, se incluye al menos una función que implementa la función e imprime la salida.
El siguiente es el código de demostración que escribí:
Recorre la matriz para encontrar la plataforma más larga y devuelve sus posiciones inicial y final en la matriz (el valor de retorno es una matriz de punteros ). Las excepciones se lanzan directamente para que puedan ser manejadas por ellas mismas.
#includelt; stdio.hgt;
#define ML 20
int **findMaxG(int nums[], int len); plataforma larga máxima y devuelve sus posiciones inicial y final en una matriz (matriz de punteros).
La excepción devuelve NULL
int showMaxG(int *pMax[2]); //Imprime la plataforma más larga. La excepción devuelve 0
int main()
. {
int **pMax=NULL;
int nums[ML]={1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6 , 7, 7, 7, 7, 8, 8, 8, 8, 9, 10, 10};
pMax= findMaxG(nums, ML);
return! showMaxG(pMax);
}
int showMaxG(int *pMax[2])
{
int *p0=pMax [0];
if(pMax [0]==NULL || pMax[1]==NULL || pMax[1]lt; pMax[0]) devuelve 0; p> printf("La plataforma más larga es: ");
while(p0lt;=pMax[1])
printf("d ",*p0);
printf("\n");
devuelve 1;
}
int **findMaxG(int nums[], int len)
{
static int *pMax[2];
int n=1, maxn=1, *p0=nums, *p1=nums; p>
p>
if(lenlt;=0) return NULL;
pMax[0]=pMax[1]=nums;
while(p0lt; amp;nums[len -1])
{
p1=p0 1;
while(p1lt;amp;nums[len-1])/ /cuenta la longitud actual de la plataforma
{
if(*p1!=*p0)//Comienza a calcular la nueva plataforma, la plataforma anterior termina en p1-1
romper;
p>else
n, p1
}
if(ngt; maxn)
maxn=n, pMax [0]=p0, pMax[1]=p1-1; //Registra la plataforma más grande
p0=p1, n=1; contar la siguiente plataforma
}
return pMax
}