You are on page 1of 12

Ejercicios de Arreglos y

Funciones
“En C”
Semestre de Otoño 2006

Claudio Gutiérrez-Soto
Destrezas Esperadas
 Solucionar un problema utilizando
funciones, sin preocuparse de su
implementación.
Ejercicios 1
 Crear una función que cuente cuántas
palabras tiene una cadena. La cadena
puede estar separada por espacios,
puntos y puntos y comas.
Solución 1
int CuentaPalabras(char arreglo[])
{
int i,cont,pal;

for(i=0,cont=0,pal=0; arreglo[i]!=‘\0’;i++)
{
if(arreglo[i]!=‘ ‘ && arreglo[i]!=‘.’ && arreglo[i]!=‘;’)
pal++; // Aquí vamos contando los caracteres de una
palabra
else if(pal!=0)
{ cont++; // aquí contamos las palabras
pal=0;
}
else continue;
}
if(pal!=0)
return(cont+1);
else return(cont);
}
Ejercicio 2
 Crear una función que copie de una
cadena a otra a partir del i-ésimo
elemento.
Solución 2
void CopiarIesimo(char cadenaDest[ ],int iesimo , char
cadenaO[ ])
{
int i,j=0;
for(i=iesimo; cadenaO[i]!='\0' ; i++,j++)
cadenaDest[j]=cadenaO[i];
cadenaDest[j]='\0';
}
Ejercicio 3
 Crear una función que calcule la
transpuesta de una matriz de 5x5:

Ejemplo, de una matriz de 3x3


abc adg
def= beh
ghi c f i
Solución 3
void Traspuesta(int matriz[][5]) Observe que aquí no es
necesario dejar explícito
{ int MatAux[5][5],i,j;
la primera dimensión de
for(i=0;i<5;i++) una matriz. De hecho un
for(j=0;j<5;j++) en un vector
multidimensional, la
MatAux[j][i]=matriz[i][j];
primera dimensión nunca
se expresa
for(i=0;i<5;i++)
for(j=0;j<5;j++)
matriz[i][j]=MatAux[i][j];
}
Ejercicio 4
 Crear una función que determine si dos arreglos
contienen los mismos elementos. Considere que los
arreglos pueden estar desordenados. Los arreglos
pueden ser de cualquier tamaño.
Fíjese que cuando hablamos de vectores
(no de cadenas), es necesario recibir
Solución 4 como parámetro la dimensión del arreglo

int VerificaIguales(int arr1[], int arr2[],int N)


{ int i,j,encontrado,stop;
for(i=0,stop=0;i<N && !stop;i++)
{ for(j=0,encontrado=0; j<N ;j++)
{ if(arr1[i]==arr2[j])
encontrado=1;
else continue;
}
if(encontrado==0)
stop=1;
else continue;
}
return(!stop);
}
Ejercicio 5
 Crear una función que determine si una
cadena es una subcadena de otra cadena.
Si la cadena de menor tamaño es una
subcadena, entonces la función retorna 1,
sino 0.
Solución 5
int SubCadena(char cad[], char Sub[])
{ int i,LCad,LSub; char CadAux[20];
LCad=largo(cad);
LSub =largo(Sub);
if(LSub<=LCad)
{ for(i=0;cad[i]!=‘\0’;i++)
if(cad[i]==Sub[0])
{ Copiar_Iesimo(cad,i,CadAux);
if(Comparar(CadAux,Sub))
return(1);
else continue;;
}
else continue;
return(0);
}else return(0);
}

You might also like