Sie sind auf Seite 1von 8

Prctica 3: Vectores y matrices en C.

Objetivos
En esta prctica el objetivo principal es el de poner en prctica los principios bsicos de
algoritmia (bucles y bifurcaciones) empleando vectores y matrices. Para ello el alumno deber
conocer cmo declarar un vector (matriz) y cmo indexar cada uno de los elementos del mismo para
acceder a su contenido.

Evaluacin
La prctica consta de 5 cuestiones, de los cuales habr que realizar correctamente al menos
2 para aprobar la prctica.

Procedimiento
Cada cuestin consta de un enunciado y de una plantilla en lenguaje C. El alumno usar
dicha plantilla para verificar el correcto funcionamiento del algoritmo que haya diseado y su
implementacin en lenguaje C. En la plantilla se indica dnde debe el alumno insertar su cdigo. Este
mismo cdigo deber copiarse y enviarse a travs del servidor de docencia (bono.us.es/sdocencia),
teniendo especial cuidado de seleccionar correctamente la lnea de insercin en funcin del ejercicio
que est resolviendo.
IMPORTANTE:

Cada ejercicio se debe resolver utilizando nicamente las variables definidas en el molde que
se proporciona

Debe respetar la estructura que se le propone sin cambiar nombres de variables ni omitir
ninguna lnea de cdigo.

Cuestiones
Apartado 1
Realice un programa en lenguaje C que compruebe si una matriz cuadrada dada es la matriz
identidad. Para ello realice primero un diagrama de flujo con su correspondiente tabla de objetos.
Nota: Se recuerda que la matriz identidad es aquella matriz cuadrada en la que los elementos de la
diagonal son unos y el resto de los elementos son ceros.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void main(void)
{
/* DECLARACIN DE VARIABLES (realice tabla de objetos) */
int M[10][10]; /* Matriz de dimension mxima 10x10*/
int i,j;
/* ndices para la indexacin de la matriz*/
int nc;
/* Nmero de columnas de la matriz cuadrada*/
int resultado;
/* LECTURA DE DATOS */
printf("Introduzca el numero de columnas de la matriz (<11): ");
scanf("%d",&nc);
printf("El primer elemento de la matriz es el M11\n");
for(i=1;i<=nc;i++) /* lectura de matriz */
{
for(j=1;j<=nc;j++)
{
printf("M%d%d = ",i,j);
scanf("%d",&M[i-1][j-1]);
}
}
/*************INICIO CDIGO DE ALUMNO*****************/

/***************FIN CDIGO DE ALUMNO******************/


/* ESCRITURA DE RESULTADOS */
if (resultado==1)
{
printf("Es la matriz identidad");
}
else
{
printf("No es la matriz identidad");
}
/* BLOQUEO DE PANTALLA*/
printf("\n");
system("pause");
}

Apartado 2
Realice un programa en lenguaje C que compruebe si una matriz dada es antisimtrica. Para ello
realice primero un diagrama de flujo con su correspondiente tabla de objetos.
Nota: Se dice que una matriz A es antisimtrica cuando sta es igual a su propia traspuesta pero
cambiada de signo. Es decir A es antisimtrica si

A=-AT.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void main(void)
{
/* DECLARACIN DE VARIABLES (realice tabla de objetos) */
int M[10*10];
/* Vector de 100 componentes para almacenar una
matriz de dimension mxima 10x10*/
int i,j;
/* ndices para la indexacin de la matriz*/
int nc;
/* Nmero de columnas de la matriz cuadrada*/
int resultado;
/* LECTURA DE DATOS */
printf("Introduzca el numero de columnas de la matriz (<10):");
scanf("%d",&nc);
printf("El primer elemento de la matriz es el M00\n");
for(i=0;i<nc;i++) /* lectura de matriz */
{
for(j=0;j<nc;j++)
{
printf("M%d%d = ",i,j);
scanf("%d",&M[i*nc+j]);
}
}
/*************INICIO CDIGO DE ALUMNO*****************/

/***************FIN CDIGO DE ALUMNO******************/


/* ESCRITURA DE RESULTADOS */
if (resultado==1)
{
printf("La matriz es antisimetrica");
}
else
{
printf("La matriz no es antisimetrica");
}
/* BLOQUEO DE PANTALLA*/
printf("\n");
system("pause");
}

Apartado 3
Realice un programa en lenguaje C que programa que multiplique dos matrices dadas. Para ello
realice primero un diagrama de flujo con su correspondiente tabla de objetos.
Nota: Las dimensiones de las matrices sern introducidas por el usuario, pero su tamao mximo
ser inferior a la constante NxN.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void main(void)
{
/* DECLARACIN DE VARIABLES (realice tabla de objetos) */
int A[10][10];
/* Matriz Dato de dimensiones mximas 10x10 */
int B[10][10];
/* Matriz Dato de dimensiones mximas 10x10*/
int C[10][10];
/* Matriz Resultado de dimensiones mximas 10x10*/
int i,j,k;
/* ndices para indexar las matrices */
int nfA; /* nmero de filas de A, que ha de coincidir con el nmero de
filas de C*/
int ncA; /* nmero de columnas de A, que ha de coincidir con el nmero
de filas de B*/
int ncB; /* nmero de columnas de B, que ha de coincidir con el nmero
de columnas de C*/
/* LECTURA DE DATOS */
printf("Introduzca el numero de filas de la matriz A (<11): ");
scanf("%d",&nfA);
printf("Introduzca el numero de columnas de la matriz A (<11): ");
scanf("%d",&ncA);
printf("Introduzca el numero de columnas de la matriz B (<11): ");
scanf("%d",&ncB);
for(i=0;i<nfA;i++) /* lectura de matriz A */
{
for(j=0;j<ncA;j++)
{
printf("A%d%d = ",i,j);
scanf("%d",&A[i][j]);
}
}
for(i=0;i<ncA;i++) /* lectura de matriz B */
{
for(j=0;j<ncB;j++)
{
printf("B%d%d = ",i,j);
scanf("%d",&B[i][j]);
}
}
/*************INICIO CDIGO DE ALUMNO*****************/

/***************FIN CDIGO DE ALUMNO******************/

/* ESCRITURA DE RESULTADOS */
printf("C=[ ");
for(i=0;i<nfA;i++) /* Escritura de matriz C */
{
printf("\n");
for(j=0;j<ncB;j++)
{
printf("%d ",C[i][j]);
}
}
printf("]");
/* BLOQUEO DE PANTALLA*/
printf("\n");
system("pause");
}

Apartado 4
Realice un programa en lenguaje C que determine si una palabra dada es un palndromo. Para ello
realice primero un diagrama de flujo con su correspondiente tabla de objetos.
Nota 1: Una palabra es un palndromo cuando que se lee igual hacia adelante que hacia atrs
Nota 2: Para finalizar de introducir la palabra escriba el carcter punto y coma ;.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void main(void)
{
/* DECLARACIN DE VARIABLES (realice tabla de objetos) */
char v[10];
/* Declaracin de un vector de 10 caracteres*/
int tam;
/* Tamao de la cadena */
int i;
/* ndice para indexar el vector */
int res;
/* Resultado. Vale 1 si es palndromo
/* LECTURA DE DATOS */
printf("Introduzca una palabra de menos de 11 caracteres:\n");

*/

i=0;
do
{
i++;
printf("Letra_%d=",i);
scanf(" %c",&v[i-1]);
}while(v[i-1]!=';' && i<10);
i=0; /*No quitar esta sentencia*/
/*************INICIO CDIGO DE ALUMNO*****************/

/***************FIN CDIGO DE ALUMNO******************/


/* ESCRITURA DE RESULTADOS */
if (res==1) printf("Es palindromo");
if (res==0) printf("No es palindromo");
/* BLOQUEO DE PANTALLA*/
printf("\n");
system("pause");
}

Apartado 5
Realice un programa en lenguaje C que ordene un vector en orden decreciente. El vector ordenado
deber almacenarse sobre el vector original, sin emplear vectores auxiliares.
Nota: Se podr emplear una variable auxiliar (aux) para realizar el intercambio de posiciones.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void main(void)
{
/* DECLARACIN DE VARIABLES (realice tabla de objetos) */
int v[10];
/* vector de 10 componentes */
int i,j;
/* ndices para indexar las componentes del vector*/
int n;
/* Nmero de elementos del vector a ordenar (<10)*/
int aux;
/* Variable auxiliar para el intercambio de elementos */
/* LECTURA DE DATOS */
printf("Introduzca el numero de elementos del vector (<10): ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("V%d=",i);
scanf("%d",&v[i]);
}
/*************INICIO CDIGO DE ALUMNO*****************/

/***************FIN CDIGO DE ALUMNO******************/


/* ESCRITURA DE RESULTADOS */
printf("V=[ ");
for(i=0;i<n;i++)
{
printf("%d ",v[i]);
}
printf("]");
/* BLOQUEO DE PANTALLA*/
printf("\n");
system("pause");
}

Entrega de la prctica a travs del servidor


Los resultados de todas la prctica se entregar usando el Servidor de Docencia. Para el correcto
funcionamiento de las siguientes pginas su navegador debe permitir cookies y la ejecucin de
javascript. El servidor de docencia se encuentra situado en la siguiente direccin:
http://bono.us.es/sdocencia/
La entrega de la prctica consiste en copiar el cdigo de cada cuestin que se encuentra entre las
dos lneas de comentarios (en rojo) en el cuadro de respuestas correspondiente del Servidor de
Docencia. Hay que copiar el cdigo una vez se haya comprobado el correcto funcionamiento del
programa.
Cada apartado tiene un espacio asignado dnde copiar el cdigo correspondiente. Solo hay que
copiar el cdigo que se encuentra entre las dos lneas de comentarios del molde proporcionado en el
enunciado.
Es especialmente importante que siga estas instrucciones si quiere que la prctica sea evaluada
apropiadamente.

Das könnte Ihnen auch gefallen