You are on page 1of 8

PROGRAMACION

/ Clave: 11214

UABC Facultad de Ingenieria Arquitectura y Diseo

PRACTICA 10.
Programas en DevC++
1.- Programa que imprima las tablas de multiplicar del 1 al 10, se deber hacer
una pausa entre tabla y tabla de multiplicar.
2 .- Programa que se repita N cantidad de veces el programa de Fibonacci (el
programa deber salirse cuando el usuario presione ESC
3 .- Programa que lea N cantidad de veces nmeros entre el rango de 10-200, el
programa se repetir hasta que el usuario introduzca un cero, al final imprimir la
media de los nmeros.

47

Pedro Nez Ypiz


Email: pedro_yepiz@uabc.edu.mx

PROGRAMACION

/ Clave: 11214

UABC Facultad de Ingenieria Arquitectura y Diseo

TEORIA
4.2.3 ANIDACION
Un ciclo anidado es un ciclo que contiene otro ciclo. En C tenemos 3 ciclos diferentes el ciclo while, do_while y
for, estos ciclos se pueden anidar uno en otro ya sea el mismo ciclo o uno diferente. C permite 15 niveles de
anidacin, cuando se anida un ciclo dentro de otro siempre se terminan de realizar primero el ciclo que esta
ms anidado, por ejemplo en caso de que anidramos dentro de un ciclo do while a un ciclo for, el ciclo for se
terminara primero.
El ejemplo mas claro de un ciclo anidado es un reloj, donde se necesita un ciclo para las Horas, otro ciclo para
los minutos, y otro para los segundos.
SINTAXIS:
for ( ; ; )
{
for ( ; ; )
{
Sentencia;
}
}

Este es un ejemplo de ciclo anidado con for, pero se puede realizar con cualqueira de los 3 ciclos incluso
conbinando for con do while etc.
EJEMPLO:
for ( i=1; i<=10 ;i++ )
{
for (j=1 ;j<=10 ;j++ )
{
r=i*j;
printf(%d * %d= %d,i,j,r);
}
system(PAUSE);
}

i=1;
while ( i<=10 )
{
j=1;
while( j<=10 )
{
r=i*j;
printf(%d * %d= %d,i,j,r);
j++;
}
i++;
system(PAUSE);
}

i=1;
do {
j=1;
do{
r=i*j;
printf(%d * %d= %d,i,j,r);
j++;
}while( j<=10 );
i++;
system(PAUSE);
}while ( i<=10 );

En los siguientes ejemplos son 3 formas de anidar los diferentes tipos de ciclos, recordando que tambin se
pueden combinar. En esta ocasin estos ejemplos imprimen las tablas de multiplicar del 1 al 10.

48

Pedro Nez Ypiz


Email: pedro_yepiz@uabc.edu.mx

PROGRAMACION

/ Clave: 11214

UABC Facultad de Ingenieria Arquitectura y Diseo

PRACTICA 11

49

Pedro Nez Ypiz


Email: pedro_yepiz@uabc.edu.mx

PROGRAMACION

/ Clave: 11214

UABC Facultad de Ingenieria Arquitectura y Diseo

PRACTICA 11.
Programas en DevC++
1.- Programa que lea el nombre y edad de 20 alumnos, desplegar al final el
nombre y la edad del alumno con mayor edad y el alumno con menor edad.
2.- Programa que lea el nombre de usuario y password y si el password es igual
a 12345 desplegar password correcto si es diferente Incorrecto
3.- Programa que lea N cantidad de cadenas y desplegar la cantidad de vocales
que contiene cada frase.

50

Pedro Nez Ypiz


Email: pedro_yepiz@uabc.edu.mx

PROGRAMACION

/ Clave: 11214

UABC Facultad de Ingenieria Arquitectura y Diseo

TEORIA:
5.1 Cadenas
A diferencia de otros lenguajes de programacin que emplean un tipo denominado cadena string para
manipular un conjunto de simbolos, en C, se debe simular mediante un arreglo de caracteres, en donde la
terminacin de la cadena se debe indicar con nulo. Un nulo se especifica como '\0'. Por lo anterior, cuando
se declare un arreglo de caracteres se debe considerar un carcter adicional a la cadena ms larga que se
vaya a guardar. Por ejemplo, si se quiere declarar un arreglo cadena que guarde una cadena de diez
caracteres, se har como:

char cadena[11];

Se pueden hacer tambin inicializaciones de arreglos de caracteres en donde automticamente C asigna el


caracter nulo al final de la cadena, de la siguiente forma:

char nombre_arr[ tam ]="cadena";


Por ejemplo, el siguiente fragmento inicializa cadena con ``hola'':

char cadena[5]="hola";

El cdigo anterior es equivalente a:

char cadena[5]={'h','o','l','a','\0'};

5.1.1 LECTURA Y ESCRITURA


Para asignar la entrada estndar a una cadena se puede usar la funcin scanf con la opcin %s (observar que
no se requiere usar el operador &), de igual forma para mostrarlo en la salida estndar.
EJEMPLO:

int main()
{
char nombre[15], apellidos[30];
printf("Introduce tu nombre: ");
scanf("%s",nombre);
printf("Introduce tus apellidos: ");
scanf("%s",apellidos);
printf("Usted es %s %s\n",nombre,apellidos);
}

51

Pedro Nez Ypiz


Email: pedro_yepiz@uabc.edu.mx

PROGRAMACION

/ Clave: 11214

UABC Facultad de Ingenieria Arquitectura y Diseo


El lenguaje C no maneja cadenas de caracteres, como se hace con enteros o flotantes, por lo que lo
siguiente no es vlido:

int main()
{
char nombre[40], apellidos[40], completo[80];
nombre="Jos Mara";
/* Ilegal */
apellidos="Morelos y Pavn";
/* Ilegal */
completo="Gral."+nombre+appellidos; /* Ilegal */
}

Si bien las cadenas se pueden leer con la sentencia scanf no es lo mas correcto ya que al presionar la tecla
espacio se da por aceptada toda la cadena, la forma correcta en C es usar la sentencia gets, para lo que se
debe sar la librera <string.h>
LECTURA DE UNA CADENA:
SINTAXIS:
fflush(stdin);
gets (cadena);
Para usar la sentencia gets no solo se debe usar la librera <string.h> se debe anteponer la sentencia
fflush(stdin) , para limpiar el buffer de memoria y permita capturar la cadena correctamente.
EJEMPLO:

int main()
{
char nombreCompleto[60];
printf("Introduce tu nombre con apellidos: ");
fflush(stdin);
gets(nombreCompleto);
printf("Usted es %s \n",nombreCompleto);
return 0;
}
Salida de cadenas:
Para Imprimir una cadena existen 2 formas en C, una es salida sin formato y la salida formateada.
SINTAXIS:
Salidas sin formato: puts(cadena);
Salida con formato printf( %s, cadena );

52

Pedro Nez Ypiz


Email: pedro_yepiz@uabc.edu.mx

PROGRAMACION

/ Clave: 11214

UABC Facultad de Ingenieria Arquitectura y Diseo


EJEMPLO:

int main()
{
char nombreCompleto[60];
printf("Introduce tu nombre con apellidos: ");
fflush(stdin);
gets(nombreCompleto);
printf("Usted es %s \n",nombreCompleto); //salida formateada
puts(nombreCompleto); //salida Sin formato
return 0;
}

5.1.2 ASIGNACION DE CADENAS


Podemos reflejar todo el contenido de una cadena a otra, en otras palabras la copiamos tal cual, para esto
utilizamos la funcin strcpy.
SINTAXIS
strcpy( cadenaDestino, cadenaOrigen );

Todo el contenido de la cadenaOrigen se copia a la cadenaDestino, si esta ltima tuviera algn valor este se
borra.
EJEMPLO
#include <string.h>
int main()
{
char nombreCompleto[60],alumno[50];
printf("Cul es tu nombre? );
fflush(stdin);
gets(nombreCompleto);
printf("Usted es %s \n",nombreCompleto);
strcpy(alumno, nombreCompleto);
//Se asigna la cadena nombreCompleto a la cadena alumno
printf("Alumno: %s \n",alumno);
return 0;
}

53

Pedro Nez Ypiz


Email: pedro_yepiz@uabc.edu.mx

PROGRAMACION

/ Clave: 11214

UABC Facultad de Ingenieria Arquitectura y Diseo


5.1.3 COMPARACIN DE CADENAS
Para saber si dos cadenas son exactamente iguales utilizamos la funcin strcmp.
SINTAXIS
strcmp ( cadena1, cadena2 );
Esta funcin devuelve un valor de acuerdo al resultado de la comparacin.
DEVUELVE:
0
Mayor a 0
Menor a 0

si la dos cadenas son exactamente iguales


si la cadena1 es mayor a la cadena2
si la cadena1 es menor que la cadena2

EJEMPLO

#include <string.h>
int main()
{
char password[30], rePassword[30];
int resultado;
printf(Escribe tu contrasea ");
fflush(stdin);
gets(password);
printf(Escribe tu contrasea ");
fflush(stdin);
gets(rePassword);
resultado = strcmp(password, rePassword);
if ( resultado == 0 )
printf("La contrasea es aceptada");
else
printf("La contrasea no coincide");
return 0;
}

54

Pedro Nez Ypiz


Email: pedro_yepiz@uabc.edu.mx

You might also like