sesion 2 resuelta
stevejobs22
Estructura de Datos y Algoritmos I
2º Grado en Ingeniería Informática
Facultad de Ciencias
Universidad de Salamanca
Reservados todos los derechos.
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
/*
* algoritmos.c
*
* Created on: 07/10/2013
* Author: MJ Polo
*/
#include <math.h>
#include "algoritmos.h"
// Orden cuadrático
void algA(int n)
{ int i,j,c;
c = 1;
for (i=1;i<=n;i++){
for (j=1;j<=n;j++) {
c = c + 1;
}
}
}
void algB(int n){
int i,j,k,c;
c = 1;
for (i=1;i<=n;i++){
for (j=1;j<=n;j++) {
for(k=1;k<=2;k++){
c = c + 1;
}
}
}
}
void algC(int n) {
int i,j,k,c;
c=1;
for (i=1; i<=n; i++) {
for (j=1; j<=(n*n); j++) {
for (k=1; k<=(n*n*n); k++) {
c = c + 1;
}
}
}
void algD(int n) {
int i,j,c;
c=1;
for (i=1; i<=n; i++) {
for (j=1; j<=i; j++) {
c = c + 1;
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6380405
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
}
}
}
void algE(int n) {
int i,j,k,c;
c=1;
for (i=1; i<=n; i++) {
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
for (j=1; j<=n; j++) {
for (k=1; k<=j; k++) {
c = c + 1;
}
}
}
}
void algF(int n) {
int i,j,k,c;
c=1;
for (i=1; i<=n; i++) {
for (j=1; j<=i; j++) {
for (k=1; k<=j; k++) {
c = c + 1;
}
}
}
}
void algG(int n) {
int j,x;
x=0;
j=n;
while (j>=1) {
x = x + 1;
j = j % 2;
}
}
void algH(int n) {
int j,x;
x=0;
j=n;
while (j>=1) {
x = x + 1;
j = j % 3;
}
}
void algI(int n) {
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6380405
si lees esto me debes un besito
Estructura de Datos y Algori...
Banco de apuntes de la
int i,j,x;
x=0;
j=n;
do {
j = 1;
while (j<=i) {
x = x + 1;
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
j = j * 2;
}
i = i + 1;
}while ( i <= n);
}
void algJ(int n) {
int i,j,x;
x=0;
i=1;
do {
j = 1;
while (j<=i) {
x = x + 1;
j = j + 2;
}
i = i + 1;
}while ( i <= n);
}
void algK(int n) {
int i,j,x;
x=0;
i=1;
while (i<n) {
for (j=1; j<=i; j++) {
x = x + 1;
}
i = i * 10;
}
return x;
/*
* algoritmos.h
*
* Created on: 07/10/2013
* Author: MJ Polo
*/
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6380405
si lees esto me debes un besito
#ifndef ALGORITMOS_H_INCLUDED
#define ALGORITMOS_H_INCLUDED
#define MIN_T 10 * CLOCKS_PER_SEC
#define MIN_REP 5
void algA(int n);
void algB(int n);
void algC(int n);
void algD(int n);
void algE(int n);
void algF(int n);
void algG(int n);
void algH(int n);
void algI(int n);
void algJ(int n);
#endif // ALGORITMOS_H_INCLUDED
# Proyecto Práctica 1 - Sesión 2
medirTiempos: medirTiempos.c algoritmos.o
gcc -g medirTiempos.c algoritmos.o -o medirTiempos
algoritmos.o: algoritmos.c algoritmos.h
gcc -c -g algoritmos.c
clean:
rm *.o
/*
* medirTiempos.c Procedimiento general para medir tiempos de ejecución a diferetes algortimos en
funcion
* del "tamaño"
*
* Created on: 29/09/2014
* Author: M.J. Polo
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "algoritmos.h"
int main(int argc, char *argv[])
{
//clock_t tiempoInicial , tiempoFinal ;
double tiempo,tiempoInicial , tiempoFinal, tiempoMinimo=10*CLOCKS_PER_SEC ;
int n,i,repeticiones=0;
FILE *f;
if (argc != 2) {
printf("\n Uso: ./medirTiempos <nombre fichero resultados>\n\n");
return -1;
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6380405
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
}
f = fopen(argv[1], "w+");
fprintf(f,"n;tiempoMedio\n");
for (n=5000;n<=50000;n=5000+n) {
repeticiones=contadorInterno=contadorExterno=0;
tiempoInicial = tiempoFinal= (double)clock();
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
while ((tiempoFinal-tiempoInicial < MIN_T) || (repeticiones < MIN_REP))
{ algA(n) ;
repeticiones++;
tiempoFinal = (double)clock();
}
tiempo = (tiempoFinal - tiempoInicial ) / CLOCKS_PER_SEC /repeticiones;
printf("\n %d \t %e \t %ld \t %ld",
n,tiempo,contadorExterno/repeticiones,contadorInterno/repeticiones);
fprintf(f,"\n %d \t %e \t %ld \t %ld",
n,tiempo,contadorExterno/repeticiones,contadorInterno/repeticiones);
}
fclose(f);
return 0;
}
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6380405
si lees esto me debes un besito