Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Bloque 5
Tipos de datos compuestos estáticos:
arrays, strings y structs
Parte I: Arrays
Ing. Informática Programación I Bloque 5-I
Hasta ahora...
Arrays unidimensionales
12.8 13.7 14.9 15.5 16.0 17.1 19.3 20.1 19.0 17.2 15.4 13.1 Valor
De 0 a numero_de_elementos-1
Ing. Informática Programación I Bloque 5-I
Arrays unidimensionales
Para acceder a una cierta posición:
temperaturas[5]
Por ejemplo:
temperaturas[5] = 18.2;
0 1 2 3 4 5 6 7 8 9 10 11
12.8 13.7 14.9 15.5 16.0 18.2 19.3 20.1 19.0 17.2 15.4 13.1
Arrays unidimensionales.
Ejemplo 1: llenar un array
#include <stdio.h>
Arrays unidimensionales.
Ejemplo 1: llenar un array (2)
#include <stdio.h>
main()
El array va del 0 al 11
{
float temperaturas[12];
int indice;
Al usuario le mostramos el resultado del
indice=0; 1 al 12
while (indice<12)
{
printf(“Introduce la temperatura del mes %d\n", indice+1);
scanf(“%f”, &temperaturas[indice]);
indice++;
}
}
Ing. Informática Programación I Bloque 5-I
Arrays unidimensionales.
Ejemplo 1: llenar un array (3)
#include <stdio.h>
#define N 24
main() Así es más fácil hacer cambios (por ejemplo
{ guardar 24 meses, o una temperatura al día)
float temperaturas[N];
int indice;
indice=0;
while (indice<N)
{
printf(“Introduce la temperatura del mes %d\n", indice+1);
scanf(“%f”, &temperaturas[indice]);
indice++;
}
}
Ing. Informática Programación I Bloque 5-I
indice=0;
suma=0;
while (indice<N)
{
suma=suma+temperaturas[indice];
indice++;
}
suma=suma/N; //dividimos por el número de meses
printf("La temperatura media es %f",suma);
}
Ing. Informática Programación I Bloque 5-I
indice=0;
maxima=0;
while (indice<N)
{
if (maxima<temperaturas[indice])
maxima=temperaturas[indice];
indice++;
}
printf("La maxima anual es %f",maxima);
}
Ing. Informática Programación I Bloque 5-I
indice=0;
minima=0;
while (indice<N)
{
if (minima>temperaturas[indice])
minima=temperaturas[indice];
indice++;
}
printf("La minima anual es %f", minima);
}
Ing. Informática Programación I Bloque 5-I
indice=0; minima=temperaturas[0];
minima=1000; indice=1;
while (indice<N) while (indice<N)
{ {
if (minima>temperaturas[indice]) if (minima>temperaturas[indice])
minima=temperaturas[indice]; minima=temperaturas[indice];
indice++; indice++;
} }
printf("La minima anual es %f", printf("La minima anual es %f",
minima); minima);
} }
Ing. Informática Programación I Bloque 5-I
indice=0;
encontrado=0;
printf("Introdueix el valor que vols cercar: ");
scanf("%f",&valor_buscado);
indice=0;
encontrado=0;
printf("Introdueix el valor que vols cercar: ");
scanf("%f",&valor_buscado);
indice=0;
veces=0;
printf("Introdueix el valor que vols cercar: ");
scanf("%f",&valor_buscado);
while (indice<N)
{
if (temperaturas[indice]==valor_buscado)
veces++;
indice++;
}
printf("El valor %f se a encontrado %d veces\n", valor_buscado,veces);
}
Ing. Informática Programación I Bloque 5-I
Arrays multidimensionales
(matrices)
Permiten más de una dimensión
Ejemplo: matriz 2x3 de enteros:
int matriz[2][3];
matriz[0][1] = 2; 2
matriz[1][2] = 3;
3
Ing. Informática Programación I Bloque 5-I
for (j=0;j<4;j++)
for (i=0;i<3;i++)
printf(" - %d - ",m[i][j]);
}
main()
{
int a[3][4],b[3][4],c[3][4];
int i,j;
for (i=0;i<3;i++)
for (j=0;j<4;j++)
c[i][j]=a[i][j]+b[i][j];
}
Ing. Informática Programación I Bloque 5-I
for (i=0;i<M;i++)
for (j=0;j<N;j++)
c[i][j]=0; //llenamos C con ceros
for (i=0;i<M;i++)
for (j=0;j<N;j++)
for (k=0;k<P;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
Ing. Informática Programación I Bloque 5-I
for (i=0;i<M;i++)
for (j=0;j<N;j++)
{
c[i][j]=0; //llenamos C con ceros
for (k=0;k<P;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
Ing. Informática Programación I Bloque 5-I
for (i=0;i<N;i++)
for (j=0;j<N;j++)
b[i][j]=a[j][i];
}
Ing. Informática Programación I Bloque 5-I
for (i=0;i<N;i++)
for (j=0;j<N;j++)
a[i][j]=a[j][i];
}
Ing. Informática Programación I Bloque 5-I
for (i=0;i<N;i++)
for (j=0;j<N;j++)
a[i][j]=a[j][i];
}
ERROR!!
Ing. Informática Programación I Bloque 5-I
for (i=0;i<N;i++)
for (j=0;j<N;j++)
{
aux=a[i][j];
a[i][j]=a[j][i];
a[j][i]=aux;
}
}
Ing. Informática Programación I Bloque 5-I
for (i=0;i<N;i++)
for (j=0;j<N;j++)
{ ERROR: la matriz queda igual
aux=a[i][j]; que estaba!!
a[i][j]=a[j][i];
a[j][i]=aux;
}
}
Ing. Informática Programación I Bloque 5-I
for (i=0;i<N-1;i++)
for (j=i+1;j<N;j++)
{ CORRECTO!!
aux=a[i][j];
a[i][j]=a[j][i];
a[j][i]=aux;
}
}