Ejercicios Resueltos en C: Arrays, Primos, Matrices y Funciones

Informática y Telecomunicaciones5,66 KB

1) Construya una función tal que, dado un array de números reales y un valor real P, devuelva cuántos elementos hay que sumar desde el primer valor para superar P.

#define MAX 100

typedef double ArrayReal [MAX];

int SuperarP (ArrayReal A, int tamA, double P) {

int i; double suma; int resul;

suma = 0.0;

resul = 0;

while (suma <= P) {

resul++;

suma = suma + A[i];

i++;

}

return resul;

}

2) Dado un valor entero n, construya una función que devuelva en un array los n primeros valores primos. Supongamos n menor de 100.

#define TAM 100

typedef int ArrayEnteros [TAM];

void primerosPrimos (ArrayEnteros, int);

int siguientePrimo (int);

int esPrimo (int);

void primerosPrimos (ArrayEnteros t, int n) {

int i; int sp = 1; // sp: siguiente primo

for (i = 0; i < n; i++) {

t[i] = sp;

sp = siguientePrimo(sp);

}

}

int siguientePrimo (int n) {

int r = n + 1;

while (esPrimo(r) == 0) {

r = r + 1;

}

return r;

}

int esPrimo (int n) {

int i; int r = 1;

for (i = 2; i < n; i++) {

if (n % i == 0) {

r = 0;

break;

}

}

return r;

}

3) Tenemos un array de cadenas con los nombres de unos alumnos y un array de valores reales con sus notas (ambos del mismo tamaño). Construya una función que, dados ambos arrays, devuelva otro con los alumnos que han aprobado (nota mayor o igual que 5).

AlumnosAprobados(VectorNotas tnotas, tablaCadena alumnos, int n, TablaCadena taprobados) {

int numAprobados = 0, i;

for (i = 0; i < n; i++) {

if (tnotas[i] >= 5) {

taprobados[numAprobados] = alumnos[i];

numAprobados++;

}

}

return numAprobados;

}

4) Dada una matriz de números reales, construya una función que devuelva su valor máximo.

#define NUMFIL 100

#define NUMCOL 50

#define TAM 200

typedef double matrizReal [NUMFIL][NUMCOL];

typedef double vectorReal [TAM];

double valorMaximo (const matrizReal m, int nf, int nc) {

int i, j;

double vm = m[0][0];

for (i = 0; i < nf; i++) {

for (j = 0; j < nc; j++) {

if (m[i][j] > vm) {

vm = m[i][j];

}

}

}

return vm;

}

5) Dada una matriz de números reales, construya una función que devuelva un array con la suma de sus elementos por filas.

#define NUMFIL 100

#define NUMCOL 50

#define TAM 100

typedef double MatrizReal [NUMFIL][NUMCOL];

typedef double ValorReal [TAM];

void sumFil (const MatrizReal m, int nc, int nf, ValorReal resul) {

int i, j;

for (i = 0; i < nf; i++) {

double sumfil = 0.0;

for (j = 0; j < nc; j++) {

sumfil = m[i][j] + sumfil;

}

resul[i] = sumfil;

}

}

Descargar

PDF Word HTML