SO25 - Lenguaje C (III)

Anuncio
FUNDAMENTOS DE PROGRAMACIÓN
PRÁCTICA 25: LENGUAJE C (III)
Curso: 2010/11
Versión: 1.0.0
SOLUCIONES
vectores.h
#ifndef VECTORES_H_INCLUDED
#define VECTORES_H_INCLUDED
#include <stdio.h>
#define DIM 20
typedef double Vector[DIM];
void leeVector(Vector, int);
void escribeVector(const Vector, int);
int buscaElementoVector(const Vector , int, double);
double mediaAritmeticaVector(const Vector, int );
double productoEscalar(const Vector, const Vector , int );
void mayoresVector(const Vector , int , double, Vector , int *);
#endif
matrices.h
#include <stdio.h>
#include "vectores.h"
#define
#define
typedef
typedef
typedef
typedef
FIL 20
COL 10
double Matriz[FIL][COL];
enum {falso, cierto} boolean;
int * intP;
double * doubleP;
void leeMatriz (Matriz, int , int);
void escribeMatriz (const Matriz, int, int );
void buscaElementoMatriz(const Matriz, int, int, double, intP, intP);
void maximoMatriz(const Matriz , int, int c, intP, intP, doubleP);
void sumaMatriz(const Matriz , const Matriz, int , int, Matriz);
void mediasPorFila(const Matriz , int , int , Vector);
void mediasPorColumna(const Matriz, int, int, Vector);
#endif
vectores.c
#include "vectores.h"
void leeVector(Vector v, int n) {
int i;
for(i=0;i<n;i++) {
printf("deme el elemento %d-esimo: ",i);
scanf("%lf",&v[i]);
}
}
Práctica 25: Lenguaje C (III)
2
void escribeVector(const Vector v, int n) {
int i;
printf("los elementos del vector son: \n");
printf("[ ");
for(i=0;i<n;i++)
printf("%5.2lf ",v[i]);
printf ("]\n");
}
int buscaElementoVector(const Vector v, int n, double x) {
int i,pos = -1;
for(i=0;i<n;i++)
if (v[i] == x) {
pos = i;
break;
}
return pos;
}
double mediaAritmeticaVector(const Vector v, int n) {
double suma = 0.0;
int i;
for(i=0;i<n;i++)
suma += v[i];
return suma/n;
}
double productoEscalar(const Vector v, const Vector w, int n) {
double p = 0;
int i;
for(i=0;i<n;i++)
p = p + v[i] * w[i];
return p;
}
void mayoresVector(const Vector v, int n, double x, Vector w, int *m){
int i,j = 0;
for(i=0;i<n;i++)
if(v[i] >= x) {
w[j] = v[i];
j++;
}
*m=j;
}
Práctica 25: Lenguaje C (III)
3
matrices.c
#include "vectores.h"
#include "matrices.h"
void leeMatriz (Matriz m, int f, int c) {
int i,j;
for(i=0;i<f;i++)
for(j=0;j<c;j++){
printf ("escriba el elemento (%d,%d): ",i,j);
scanf("%lf",&m[i][j]);
}
}
void escribeMatriz (const Matriz m, int f, int c) {
int i,j;
for(i=0;i<f;i++) {
for(j=0;j<c;j++)
printf("%5.2lf
printf("\n");
}
",m[i][j]);
}
void buscaElementoMatriz(const Matriz m, int f, int c, double x, intP
fenc, intP cenc) {
int i,j;
boolean enc = falso;
*fenc = -1;
*cenc = -1;
for(i=0;i<f && !enc;i++)
for(j=0;j<c && !enc;j++)
if(m[i][j] == x) {
*fenc = i;
*cenc = j;
enc = cierto;
}
}
void maximoMatriz(const Matriz m, int f, int c, intP fm, intP cm,
doubleP max) {
int i,j;
*max = m[0][0];
*fm = 0;
*cm = 0;
for(i=0;i<f;i++)
for(j=0;j<c;j++)
if(m[i][j] > *max) {
*fm = i;
*cm = j;
*max = m[i][j];
}
}
Práctica 25: Lenguaje C (III)
void sumaMatriz (const Matriz m, const Matriz n, int f, int c, Matriz
sum) {
int i,j;
for(i=0;i<f;i++)
for(j=0;j<c;j++)
sum[i][j] = m[i][j]+n[i][j];
}
void mediasPorFila(const Matriz m, int f, int c, Vector medias) {
int i;
for(i=0;i<f;i++)
medias[i] = mediaAritmeticaVector(m[i], c);
}
void mediasPorColumna(const Matriz m, int f, int c, Vector medias) {
int i,j;
Vector columnas;
for(j=0;j<c;j++) {
for(i=0;i<f;i++)
columnas[i] = m[i][j];
medias[j] = mediaAritmeticaVector(columnas, f);
}
}
4
Descargar