Escolar Documentos
Profissional Documentos
Cultura Documentos
Informáticos
E.T.S. de Ingeniería Informática
Universidad de Sevilla
Avda Reina Mercedes, s/n. 41012 SEVILLA
IP1 2005-2006
Práctica 4. TABLAS
1.) No habrá inicialización. Para las 4 primeras tablas, declarar solo la variable. Para las dos últimas declarar
tipo y variable. Alternar el uso de constantes.
#include <stdio.h>
#define CTEMP 24
#define CNOM 20
#define CAJE 8
#define CMESES 12
#define CALFA 27
typedef int TDiasMes[CMESES];
typedef char TAlfa[CALFA];
void main(void)
{
float temperaturas[CTEMP];
char nombre[CNOM];
int ajedrez[CAJE][CAJE];
TDiasMes diasmes;
TAlfa alfabeto;
Ejemplo:
#include <stdio.h>
#define CTEMP 24
#define CNOM 20
#define CAJE 8
#define CMESES 12
#define CALFA 27
typedef int TDiasMes[CMESES];
typedef char TAlfa[CALFA];
void main(void)
{
float temperaturas[CTEMP];
char nombre[CNOM];
int ajedrez[CAJE][CAJE];
int v[5]={1,2,3,4,5}; // Inicializacion en la propia declaracion. solo en la
// declaracion
int w[3][3]={1,2,3,4,5,6,7,8,9};
int i,j;
TDiasMes diasmes;
TAlfa alfabeto;
Página 1 de 8
Departamento de Lenguajes y Sistemas
Informáticos
E.T.S. de Ingeniería Informática
Universidad de Sevilla
Avda Reina Mercedes, s/n. 41012 SEVILLA
IP1 2005-2006
printf("%d\n",ajedrez[0][0]); // Acceso a un elemento sin inicializar
// Inicialización de un vector
for(i=0;i<CMESES;i++)
diasmes[i]=0; //ACCESO Y MODIFICACION
// Inicialización de una matriz
for(i=0;i<CAJE;i++){
for(j=0;j<CAJE;j++)
ajedrez[i][j]=0; //ACCESO Y MODIFICACION
printf("%d\n",ajedrez[0][0]); // Acceso a un elemento inicializado
printf("%d\n",diasmes[0]); // Acceso a un elemento inicializado
ajedrez[0][0]=45;
diasmes[0]=34;
printf("%d\n",ajedrez[0][0]); // Acceso a un elemento inicializado
printf("%d\n",diasmes[0]); // Acceso a un elemento inicializado
i=diasmes[6];
j=ajedrez[5677][456];
printf("%d\n",i);
printf("%d\n",j); // Acceso a un elemento inicializado
ejemplo2: utilizar dicho ejemplo para mostrar las distintas formas que hay de llamar a
una tabla y matriz como parametro de entrada/salida
#include <stdio.h>
#define TAM 10
typedef int Vector[TAM];
typedef int Matriz[TAM][TAM];
void InicializaVector(int,Vector);
void ImprimeVector(Vector);
void InicializaMatriz(int,int,Matriz);
void ImprimeMatriz(int,int,Matriz);
void main (void)
{
Vector v;
int v2 [TAM];
int m [TAM][TAM];
InicializaVector(5,v);
ImprimeVector(v);
InicializaMatriz(TAM,TAM,m);
ImprimeMatriz(TAM,TAM,m);
Página 2 de 8
Departamento de Lenguajes y Sistemas
Informáticos
E.T.S. de Ingeniería Informática
Universidad de Sevilla
Avda Reina Mercedes, s/n. 41012 SEVILLA
IP1 2005-2006
void InicializaVector(int n, Vector v)
{
int i;
for(i=0;i<n;i++)
v[i]=i+1;
void ImprimeVector(Vector v)
{
int i;
for(i=0;i<TAM;i++)
printf("\n%d\n",v[i]);
void InicializaMatriz(int f, int c, Matriz m)
{
int i,j;
for(i=0;i<f;i++)
{
for(j=0;j<c;j++)
m[i][j]=1;
void ImprimeMatriz(int f, int c, Matriz m)
{
int i,j;
for(i=0;i<f;i++)
{
printf("\n");
for(j=0;j<c;j++)
printf("%d ",m[i][j]);
3) Cambiamos el enunciado. En vez de 50 elementos que sean 10. Cuando se introduzca un número negativo
dejaremos de recoger números enteros. Eso o que lleguemos a 10
#include <stdio.h>
#define TAM 10
Página 3 de 8
Departamento de Lenguajes y Sistemas
Informáticos
E.T.S. de Ingeniería Informática
Universidad de Sevilla
Avda Reina Mercedes, s/n. 41012 SEVILLA
IP1 2005-2006
typedef int Tabla[TAM];
void OrdenaTabla(int,Tabla);
void ImprimeTabla(int,Tabla);
void main(void)
{
Tabla t={0,0,0,0,0,0,0,0,0,0}; //¿Es necesario inicializarla??
int x,i=0,l=0;
printf("\nPor favor, introduzca 10 numeros enteros\n");
while(i<TAM && !l)
{
scanf("%d",&x); //ATENCION, hay otra forma de recoger los valores para una
tabla
if(x<0)
l=1;
else
{
t[i]=x;
i=i+1;
}
OrdenaTabla(TAM,t);
ImprimeTabla(TAM,t);
void OrdenaTabla(int n, Tabla t)
{
int i,l,temp;
l=0;
while(!l)
{
l=1;
for(i=0;i<(n1);i++)
{
if (t[i]>t[i+1])
{
temp=t[i];
t[i]=t[i+1];
t[i+1]=temp;
l=0;
}
}
}
}
void ImprimeTabla(int n, Tabla t)
{
int i;
for(i=0;i<n;i++)
printf("%d ",t[i]);
Página 4 de 8
Departamento de Lenguajes y Sistemas
Informáticos
E.T.S. de Ingeniería Informática
Universidad de Sevilla
Avda Reina Mercedes, s/n. 41012 SEVILLA
IP1 2005-2006
17)
#include <stdio.h>
#define TAM 4
typedef int Matriz[TAM][TAM];
int RecibeValores(Matriz);
void RecorreEImprime(int,Matriz);
void main(void)
{
Matriz m;
int i=0;
i=RecibeValores(m);
RecorreEImprime(i,m);
int RecibeValores(Matriz m)
{
int i,j,n;
printf ("\nEscriba dimension para la tabla cuadrada menor que %d\n", TAM);
scanf("%d",&n);
while(n<0 || n>4)
{
printf("\n Escriba dimension para la tabla cuadrada menor que %d\n", TAM);
scanf("%d",&n);
printf("\nPor favor, introduzca los numeros\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf("%d",&m[i][j]);
}
return n;
}
void RecorreEImprime(int n, Matriz m)
{
int i,j;
for(i=n1;i>=0;i)
{
for(j=i;j<n;j++)
{
printf("%d ",m[j][ji]);
}
Página 5 de 8
Departamento de Lenguajes y Sistemas
Informáticos
E.T.S. de Ingeniería Informática
Universidad de Sevilla
Avda Reina Mercedes, s/n. 41012 SEVILLA
IP1 2005-2006
Ejercicio de EXAMEN
int v[4]={1,2,3,4};
int *p;
p=v;
p[v[0]]++;
-Definimos int t[5]={1,2,3,4,5}; e invocamos al procedimiento: intercambia(t[2],&t[4]); que tiene el siguiente código:
, este código:
for(i=1;i<=6;i++)
scanf(“%d”,&t[i]);
for(j=3;j>0;j--)
printf(“%d”,t[2*j]);
. Dada una matriz N × N de enteros denominada tabla, ¿Cuál es la condición de parada que hace que un bucle
while termine cuando encuentre en la diagonal principal dos elementos consecutivos que sean iguales o cuando acabe
la tabla? Inicialice el contador
Página 6 de 8
Departamento de Lenguajes y Sistemas
Informáticos
E.T.S. de Ingeniería Informática
Universidad de Sevilla
Avda Reina Mercedes, s/n. 41012 SEVILLA
IP1 2005-2006
scanf("%d",&i);
}
¿Cuántos números se van a leer? Justifica la respuesta
Si se introducen desde el teclado los valores 1 y 2, el resultado en pantalla es un 3. Teniendo en cuenta que algunos de los
subrayados pueden no contener nada, escriba los símbolos & y * que faltan en el código. Escríbalos sobre el enunciado.
Se necesita un procedimiento que tome en el siguiente orden: una tabla de enteros como parámetro de entrada, una
tabla de enteros como parámetro de entrada/salida, un entero como parámetro de entrada y un double como parámetro
de entrada/salida. Escriba su prototipo.
Pasar a C el siguiente código escrito en LEA correspondiente a la función que implementa la búsqueda binaria en tablas de
numeros reales
#define N 10
typedef double Tabla[N];
typedef enum{falso,cierto} Logico;
Página 7 de 8
Departamento de Lenguajes y Sistemas
Informáticos
E.T.S. de Ingeniería Informática
Universidad de Sevilla
Avda Reina Mercedes, s/n. 41012 SEVILLA
IP1 2005-2006
Logico BusquedaBinaria(Tabla,int,double);
…
return enc;
}
Página 8 de 8