Notas de la clase de 30 oct, 2013
Por: Marcela Morales Quispe
Inicialización de arreglos
Ejemplo:
#include
#include
#define SIZE 3
int main() {
int n1[10] = {1,2,3,4,5,6,7,8,9,10};
int n2[] = {5,2,4,7,2};
int n3[SIZE];
n3[0] = 2;
n3[1] = 5;
n3[2] = 8;
int n4[5] = {0};
return 0;
}
Errores comunes:
- Olvidar inicializar un arreglo que debe ser inicializado.
- Terminar la directiva del preprocesador
#define SIZE 3;
- Asignar un valor a una constante simbólica en un enunciado
ejecutable
SIZE=6;
Problema:
A cuarenta alumnos se les pidió calificar la cafetería de su escuela en una escala de 1 a 10 (1 significa terrible y
10 significa excelente). Coloca las cuarenta respuestas en un arreglo de
enteros y resume los resultados de la encuesta.
Respuesta:
#include
#define RESP_SIZE 40
#define FREQ_SIZE 11
int main() {
int i,calif, total;
int respuestas[RESP_SIZE] ={1,2,6,4,8,5,9,7,8,
10,1,6,3,8,6,10,3,8,2,7,6,5,7,6,8,6,7,
5,6,6,5,6,7,5,6,4,8,6,8,10};
int frecuencias[FREQ_SIZE] = {0};
for( i=0, total=0; i < RESP_SIZE; i++) {
calif=respuestas[i];
frecuencias[calif]++;
total+=calif;
}
printf("\nCalificacion:\t");
for(calif=1;calif < FREQ_SIZE; calif++)
printf("%5d",calif);
printf("\nFrecuencia:\t");
for(calif=1;calif < FREQ_SIZE; calif++)
printf("%5d", frecuencias[calif]);
printf("\n\nCalificacion promedia = %1.3f\n",
((float) total)/RESP_SIZE);
return 0;
}
Salida:
Calificacion: 1 2 3 4 5 6 7 8 9 10
Frecuencia: 2 2 2 2 5 11 5 7 1 3
Calificacion promedia = 6.025
Cadenas
Declaración e inicialización:
char cadena[] = "hola";
cadena contiene 4 caracteres, más un caracter especial de
terminación de cadena, conocido como caracter nulo;
así que el arreglo cadena contiene 5 elementos.
char cadena[] = {'h','o','l','a','\0'};
En este tipo de inicialización es necesario incluir
explícitamente el caracter nulo.
Entrada y salida de cadenas:
#include
int main() {
char cadena[20];
printf("Introduce cadena (19 caracteres)\n:");
scanf("%s", cadena);
printf("%s", cadena);
system("pause");
return 0;
}
- El & es utilizado para darle a scanf una localización de variable
en memoria, el nombre de un arreglo es la dirección del inicio del
arreglo y, por lo tanto, & no es necesario.
- La función scanf lee caracteres del teclado hasta que se encuentra
con el primer caracter de espacio en blanco.
- La función printf imprime todas las letras hasta que encuentre
un caracter nulo.
Ejercicios para realizar en clase
- Escribe un programa que reciba una cadena de caracteres desde
teclado y que imprima las letras de la cadena separados por un
salto de línea.
- Escribe una función que reciba un arreglo de caracteres (o
simplemente cadena) y que regrese el número de letras que
contiene la cadena.
- Escribe una función que reciba dos cadenas y que concatene éstas
en una tercer cadena, además la función debe de imprimir la tercer
cadena.
- Escribe una función que reciba dos cadenas y que regrese un
entero, 1 si las cadenas son iguales y 0 si no lo son.
Bibliografía:
Cómo programar en C/C++, H.M. Deitel, P.J. Deitel, 2da ed. Prentice Hall.
|