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

  1. 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.
  2. 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.
  3. 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.
  4. 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.