Sentencia - Programacion en C/C++

Anuncio
PROGRAMACION
/ Clave: 11214
UABC Facultad de Ingenieria Arquitectura y Diseño
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 números entre el rango de 10-200, el
programa se repetirá hasta que el usuario introduzca un cero, al final imprimir la
media de los números.
47
Pedro Núñez Yépiz
Email: [email protected]
PROGRAMACION
/ Clave: 11214
UABC Facultad de Ingenieria Arquitectura y Diseño
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
anidación, cuando se anida un ciclo dentro de otro siempre se terminan de realizar primero el ciclo que esta
más anidado, por ejemplo en caso de que anidáramos dentro de un ciclo do while a un ciclo for, el ciclo for se
terminaría 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 también se
pueden combinar. En esta ocasión estos ejemplos imprimen las tablas de multiplicar del 1 al 10.
48
Pedro Núñez Yépiz
Email: [email protected]
PROGRAMACION
/ Clave: 11214
UABC Facultad de Ingenieria Arquitectura y Diseño
PRACTICA 11
49
Pedro Núñez Yépiz
Email: [email protected]
PROGRAMACION
/ Clave: 11214
UABC Facultad de Ingenieria Arquitectura y Diseño
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 Núñez Yépiz
Email: [email protected]
PROGRAMACION
/ Clave: 11214
UABC Facultad de Ingenieria Arquitectura y Diseño
TEORIA:
5.1 Cadenas
A diferencia de otros lenguajes de programación 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
terminación 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 carácter adicional a la cadena más 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 también inicializaciones de arreglos de caracteres en donde automáticamente 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 código anterior es equivalente a:
char cadena[5]={'h','o','l','a','\0'};
5.1.1 LECTURA Y ESCRITURA
Para asignar la entrada estándar a una cadena se puede usar la función scanf con la opción %s (observar que
no se requiere usar el operador &), de igual forma para mostrarlo en la salida estándar.
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 Núñez Yépiz
Email: [email protected]
PROGRAMACION
/ Clave: 11214
UABC Facultad de Ingenieria Arquitectura y Diseño
El lenguaje C no maneja cadenas de caracteres, como se hace con enteros o flotantes, por lo que lo
siguiente no es válido:
int main()
{
char nombre[40], apellidos[40], completo[80];
nombre="José María";
/* Ilegal */
apellidos="Morelos y Pavón";
/* 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 librería <string.h>
LECTURA DE UNA CADENA:
SINTAXIS:
fflush(stdin);
gets (cadena);
Para usar la sentencia gets no solo se debe usar la librería <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 Núñez Yépiz
Email: [email protected]
PROGRAMACION
/ Clave: 11214
UABC Facultad de Ingenieria Arquitectura y Diseño
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 función strcpy.
SINTAXIS
strcpy( cadenaDestino, cadenaOrigen );
Todo el contenido de la cadenaOrigen se copia a la cadenaDestino, si esta última tuviera algún valor este se
borra.
EJEMPLO
#include <string.h>
int main()
{
char nombreCompleto[60],alumno[50];
printf("¿Cuál 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 Núñez Yépiz
Email: [email protected]
PROGRAMACION
/ Clave: 11214
UABC Facultad de Ingenieria Arquitectura y Diseño
5.1.3 COMPARACIÓN DE CADENAS
Para saber si dos cadenas son exactamente iguales utilizamos la función strcmp.
SINTAXIS
strcmp ( cadena1, cadena2 );
Esta función devuelve un valor de acuerdo al resultado de la comparación.
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 contraseña ");
fflush(stdin);
gets(password);
printf(“Escribe tu contraseña ");
fflush(stdin);
gets(rePassword);
resultado = strcmp(password, rePassword);
if ( resultado == 0 )
printf("La contraseña es aceptada");
else
printf("La contraseña no coincide");
return 0;
}
54
Pedro Núñez Yépiz
Email: [email protected]
Descargar