A ver, aqui os dejo hasta donde he podido llegar. Se que me falta lo mas importante, pero no consigo tenerlo...
No se si estoy cometiendo alguna locura con el codigo, asi que si hay algun error muy grave perdonadme T_T
-------------------
He hecho un fichero con varios modulos:
El primero se llama ordenacion y he puesto lo siguiente (lo he probado y funciona bien)---
#include <stdio.h>
#include <stdlib.h>
#include "burbujamejorada.h"
//Cabecera: burbuja_mejorado(E/S vect:v, E entero: n)
//Precondicion: n>0 y n pertence a los numeros naturales. V es un vector de n elementos.
//Postcondicion: Vector v con los elementos ordenados ascendentemente.
void burbuja_mejorado(int *vector, int tam)
{
int i,j,aux,no_interc;
i=0;
do{
no_interc=1;
for(j=0;j<tam-i-1;j++){
if(vector[j]>vector[j+1]){
aux=vector[j+1];
vector[j+1]=vector[j];
vector[j]=aux;
no_interc=0;}}
i++;
}while(no_interc==1);
}
Otro modulo que genere un vector aleatorio (que tambien funciona correctamente)----
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "generar_vector.h"
int generar_vector_aleatorio(int *vector,int tam){
int i;
srand(time());
for(i=0;i<tam;i++)
{
vector=rand();
}
}
Otro módulo con el vector ya ordenado crecientemente (este no se si funciona porque no me ha dado tiempo a comprobarlo):
#include <stdio.h>
#include <stdlib.h>
#include "vector_creciente.h"
vector_creciente(int vector, int tam)
{
int aux,i ;
generar_vector_aleatorio(vector,tam);
burbuja_mejorada(vector,tam);
for(i=0;i<tam;i++){
vector[aux]=vector[tam-i];
vector[tam-i]=vector;
vector=vector[aux];
}
}
Y ahora, me centro en el principal, no se si hacer una funcion a parte ni como podria ser o si hay alguna manera mas facil... ni idea :::
#include <stdio.h>
#include <stdlib.h>
#include "principal.h"
int main(){
int vector,tam,cont;
printf("tamaño del vector");
scanf("%i",&tam);
vector= (int*) malloc (tam*sizeof(int));
vector_creciente(vector,tam);
Desde aqui ya no se como seguir... ni siquiera se como expresarlo de otra manera T_T o si hay alguna forma muchisimo más rapida que esta...
No se si estoy cometiendo alguna locura con el codigo, asi que si hay algun error muy grave perdonadme T_T
-------------------
He hecho un fichero con varios modulos:
El primero se llama ordenacion y he puesto lo siguiente (lo he probado y funciona bien)---
#include <stdio.h>
#include <stdlib.h>
#include "burbujamejorada.h"
//Cabecera: burbuja_mejorado(E/S vect:v, E entero: n)
//Precondicion: n>0 y n pertence a los numeros naturales. V es un vector de n elementos.
//Postcondicion: Vector v con los elementos ordenados ascendentemente.
void burbuja_mejorado(int *vector, int tam)
{
int i,j,aux,no_interc;
i=0;
do{
no_interc=1;
for(j=0;j<tam-i-1;j++){
if(vector[j]>vector[j+1]){
aux=vector[j+1];
vector[j+1]=vector[j];
vector[j]=aux;
no_interc=0;}}
i++;
}while(no_interc==1);
}
Otro modulo que genere un vector aleatorio (que tambien funciona correctamente)----
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "generar_vector.h"
int generar_vector_aleatorio(int *vector,int tam){
int i;
srand(time());
for(i=0;i<tam;i++)
{
vector=rand();
}
}
Otro módulo con el vector ya ordenado crecientemente (este no se si funciona porque no me ha dado tiempo a comprobarlo):
#include <stdio.h>
#include <stdlib.h>
#include "vector_creciente.h"
vector_creciente(int vector, int tam)
{
int aux,i ;
generar_vector_aleatorio(vector,tam);
burbuja_mejorada(vector,tam);
for(i=0;i<tam;i++){
vector[aux]=vector[tam-i];
vector[tam-i]=vector;
vector=vector[aux];
}
}
Y ahora, me centro en el principal, no se si hacer una funcion a parte ni como podria ser o si hay alguna manera mas facil... ni idea :::
#include <stdio.h>
#include <stdlib.h>
#include "principal.h"
int main(){
int vector,tam,cont;
printf("tamaño del vector");
scanf("%i",&tam);
vector= (int*) malloc (tam*sizeof(int));
vector_creciente(vector,tam);
Desde aqui ya no se como seguir... ni siquiera se como expresarlo de otra manera T_T o si hay alguna forma muchisimo más rapida que esta...