Bueno aca planteo un ejercicio de vectores, el cual primero ingreso el largo del vector y despues comienzo a colocar los valores para el vector.El vector este se llama "vector1" y despues en una funcion aparte utilizo el metodo de ordenamiento por burbujeo o burbuja y lo llamo "ordenar1" y ordeno de menor a mayor los valores de mi vector.
Aca les dejo el codigo:
#include <stdio.h>
#include <conio.h>
void ordenar1(int largo,int vector1[])
{ int i,j,aux;
for (i=0;i<largo-1;i++) /* Pasadas */
for (j=1;j<largo-i;j++) /* Comparaciones */
if (vector1[j-1]>vector1[i])
{ aux=vector1[j];
vector1[j]=vector1[j-1];
vector1[j-1]=aux;
}
//Imprimo valores ordenados
for(i=0;i<largo-1;i++){
printf("Valor en la posicion[%d]:%d \n",i,vector1[i]);
}//Cierre de Muestra Valores Ordenados
}
main(){
size_t largo; // Declarar el tamaño del vector
printf("Ingrese el largo de su vector a ordenar \n");
fflush(stdin);
scanf("%d",&largo);
printf("El largo ingresado es :%d",largo);
int vector1[largo];
int i;
for(i=0;i<largo;i++){
printf("Ingrese el valor para la posicion[%d]de su vector:\n",i);
fflush(stdin);
scanf("%d",&vector1[i]);}
void ordenar1(int largo,int vector1[]);
getch ();
return 0;}
Cuando lo coloco en el Borland 5.02 que es el que tengo que usar,me salta dos errores,uno en esta linea:
int vector1[largo];
y otro en esta otra:
for(i=0;i<largo;i++){
que es cuando declaro el for.
Espero que me puedan ayudar,Saludos ^^ :P
Hola SonaArtica.
Proba de este modo:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void cargar(int **, int);
void ordenar(int **, int);
void mostrar(int *, int);
int main() {
int i, largo, *vector1;
printf("Ingrese el largo de su vector a ordenar: ");
scanf("%d",&largo);
vector1 = (int *)malloc(sizeof(int) * largo);
cargar(vector1, largo);
ordenar(vector1, largo);
mostrar(vector1, largo);
free(vector1);
getch ();
return 0;
}
void cargar(int **v, int largo) {
int i;
printf("\n");
for(i=0;i<largo;i++) {
printf("Ingrese el valor para la posicion [%d] de su vector: ",i);
fflush(stdin);
scanf("%d",&v[i]);
}
}
void ordenar(int **v, int largo){
int i, j, aux;
for(i=0; i < largo-1;i++)
for(j=i+1; j < largo; j++)
if (v[i] > v[j]) {
aux = v[j];
v[j] = v[i];
v[i] = aux;
}
}
void mostrar(int *v, int largo) {
int i;
printf("\nVector ordenado:\n");
for(i=0; i < largo; i++)
printf("Valor en la posicion[%d]:%d \n", i, v[i]);
}
Saludos.
ecfisa tu codigo no me funka y ademas me tira una banda de errores :(
Prueba ahora, tenía algunos errores de paréntesis y otros detalles menores.
#include <stdio.h>
void ordenar1(int largo,int vector1[]){
int i,j,aux; //aqui solo habia desorden el los parentesis
for(i=0;i<largo-1;i++){
for(j=0;j<largo-i-1;j++){
if(vector1[j]>vector1[j+1]){
aux=vector1[j];
vector1[j]=vector1[j+1];
vector1[j+1]=aux;
}
}
}
printf("el vector ordenado\n"); //se imprime el vector ordenado
for(i=0;i<largo;i++)
printf("[%i]",vector1[i]);
}
int main(void){
size_t largo; // Declarar el tamaño del vector
printf("Ingrese el largo de su vector a ordenar \n");
scanf("%d",&largo);
printf("El largo ingresado es :%i\n",largo);
int vector1[largo];
int i;
for(i=0;i<largo;i++){
printf("Ingrese el valor para la posicion[%i]\tde su vector:\n",i);
scanf("%i",&vector1[i]);
}
ordenar1(largo,vector1); //para llamar a la funcion simplemente se pone el nombre de esta y sus parametros sin el tipo de dato
return 0;
}
Me sigue sin funcar, no me reconoce el pasaje de valor de longitud o tamaño del vector, a vector atravez de una variable.
Cita de: SonaArtica en 6 Noviembre 2012, 02:12 AM
Me sigue sin funcar, no me reconoce el pasaje de valor de longitud o tamaño del vector, a vector atravez de una variable.
Es que le tienes que pasar la dirección de memoria donde está alojada la variable largo en el montículo. O sea, el puntero:
ordenar1(&largo,vector1)
No, no haría falta, porque le pasas una copia y listo ._., Y a mí al compilar con C::B y ejecutar me va todo perfecto.
Y a todo esto que compilador estas utilizando porque yo lo corri y me funciono perfectamente
Aclaro bien en el titulo, "Borland 5.02" ::)