Académique Documents
Professionnel Documents
Culture Documents
3.1 Introducción.
3.2 Matrices.
3.2.1 Matrices de una dimensión.
3.2.2 Matrices multidimesionales.
3.3 Cadenas de caracteres.
1
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
3.1 Introducción.
Ejercicio. Obtener la media de 3 notas y calcular la diferencia entre la media y cada una de
las notas.
Solución:
#include <stdio.h>
void main(void)
{
int n1,n2,n3;
float suma = 0,media;
printf("n1=");
scanf("%d",&n1);
printf("n2=");
scanf("%d",&n2);
printf("n3=");
scanf("%d",&n3);
suma=n1+n2+n3;
media = suma / 3;
printf("n1-media= %f\n", n1 - media);
printf("n2-media= %f\n", n2 - media);
printf("n3-media= %f\n", n3 - media);
} 2
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
Ejercicio. Obtener la media de 300 notas y calcular la diferencia entre la media y cada una de
las notas.
3.2 Matrices.
Definición.
Una matriz es una colección de variables del mismo tipo a las que se hace referencia por
mismo nombre.
3
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
Ejemplo:
Para acceder a un elemento del vector se usa un índice. El primer elemento del vector
tiene asociado el índice 0.
a = 2; vars[0] = 2;
b = 4; vars[1] = 4;
c = 6; vars[2] = 6;
Ejemplo. Obtener la media de 300 notas y calcular la diferencia entre la media y cada una
de las notas.
4
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
#include <stdio.h>
void main(void)
{
float notas[300],suma=0,media,resultado;
int contador;
for(contador=0; contador<=299; contador=contador+1){
printf("\nDame la nota %d:",contador);
scanf("%f ",¬as[contador]);
suma=suma+notas[contador];
}
media=suma/300;
5
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
#include <stdio.h>
void main(void)
{
int edades[]={20,25,30,35,40,45,50};
int indice;
edades[5]=70;
6
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
Ejemplo. Hacer un programa que inicialice un vector con el doble del valor de la componente
anterior, empezando con el valor 1, y mostrar por pantalla dicho vector.
#include <stdio.h>
#define tamano 10
void main(void)
{
int vector[tamano];
int indice;
vector[0]=1;
for(indice=1; indice<tamano; indice=indice+1)
vector[indice]=vector[indice-1]*2;
for(indice=0; indice<tamano; indice=indice+1)
printf("El valor del componente %d del vector es %d\n",indice,vector[indice]);
}
7
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
8
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
Ejemplo 1. Hacer un programa en C que obtenga las tablas de multiplicar del 1 al 9 y mostrar
el resultado en pantalla.
0 1 2 3 4 5 6 7 8 9
0
0 0 0 0 0 0 0 0 0 0
1
0 1 2 3 4 5 6 7 8 9
2
0 2 4 6 8 10 12 14 16 18
3 0 3 6 9 12 15 18 21 24 27
4
0 4 8 12 16 20 24 28 32 36
5 0 5 10 15 20 25 30 35 40 45
6 0 6 12 18 24 30 36 42 48 54
7 0 7 14 21 28 35 42 49 56 63
8 0 8 16 24 32 40 48 56 68 72
9 0 9 18 27 36 45 54 63 72 81
9
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
#include <stdio.h>
void main(void)
{
int tablamult[10][10],indice1,indice2;
for(indice1=0; indice1<=9; indice1=indice1+1)
for(indice2=0;indice2<=9;indice2=indice2+1)
tablamult[indice1][indice2]=indice1*indice2;
10
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
#include <stdio.h>
void main(void)
{
char dia;
int fila,columna, primerdia, comienzo=1;
int diasdelmes[6][7];
int nombremes,mes;
int cuantosdias[]={31,28,31,30,31,30,31,31,30,31,30,31};
switch (nombremes) {
case 1: mes=0;
break;
case 2: mes=1;
break;
case 3: mes=2;
break;
case 4: mes=3;
break;
case 5: mes=4;
break;
case 6: mes=5;
break;
case 7: mes=6;
break;
case 8: mes=7;
break;
case 9: mes=8;
break;
case 10: mes=9;
break;
case 11: mes=10;
break;
case 12: mes=11;
break; 12
}
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
14
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
printf("\n\n");
switch (nombremes) {
case 1: printf("Enero\n");
break;
case 2: printf("Febrero\n");
break;
case 3: printf("Marzo\n");
break;
case 4: printf("Abril\n");
break;
case 5: printf("Mayo\n");
break;
case 6: printf("Junio\n");
break;
case 7: printf("Julio\n");
break;
case 8: printf("Agosto\n");
break;
case 9: printf("Septiembre\n");
break;
case 10: printf("Octubre\n");
break;
case 11: printf("Noviembre\n");
break;
case 12: printf("Diciembre\n");
break;
} 15
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
Solución
Otra solución
16
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
Ejemplos:
#include <stdio.h>
void main(void)
{
int indice;
char cadena1[]={'E','s','t','o',' ','e','s',' ','u','n','a',' ','c','a','d','e','n','a','.','\0'};
char cadenaerronea[]={'E','s','t','o‘,' ','e','s',' ','u','n','a',' ','c','a','d','e','n','a','.'};
char cadena2[]="Esto es una cadena.";
char cadena3[20]="Esto es una cadena.";
char apellido[10];
printf("%s\n",cadena1);
printf("%s\n",cadenaerronea);
printf("%s\n",cadena2);
printf("%s\n",cadena3);
printf("Esto es una cadena.\n");
17
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
for(indice=0;indice<=3;indice=indice+1)
printf("%c",cadena2[indice]);
printf("\n");
18
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
2. Manipularlas con:
a) strcpy(cadena_destino, cadena_origen)
Copia la cadena_origen en la cadena_destino.
b) strcat(cadena_destino, cadena_origen)
Pega (concatena) al final de la cadena_destino la cadena_origen.
c) strlen(cadena)
Devuelve la longitud de la cadena como un int.
d) strcmp(cadena1, cadena2)
Compara la cadena1 con la cadena2 y devuelve :
0 si cadena1 es exactamente igual a cadena2.
<0 si cadena1 está antes que cadena2 en el diccionario.
>0 si cadena1 está después que cadena2 en el diccionario
19
Departamento de Sistemas Informáticos Informática
Universidad de Castilla-La mancha EDII
Ejemplo:
#include <stdio.h>
#include <string.h>
void main(void)
{
char palabra1[20], palabra2[20];
int resultado,longitud;
printf("Teclea una palabra: ");
scanf("%s",palabra1);
printf("Teclea otra palabra: ");
scanf("%s",palabra2);
longitud=strlen(palabra1);
printf("La longitud de %s es %d\n",palabra1,longitud);
resultado=strcmp(palabra1,palabra2);
if (resultado == 0) printf("%s es igual que %s\n",palabra1,palabra2);
else printf("%s no es igual que %s\n",palabra1,palabra2);