Ejercicio en C de Vectores 1[Borland 5.02]

Iniciado por SonaArtica, 3 Noviembre 2012, 20:41 PM

0 Miembros y 1 Visitante están viendo este tema.

SonaArtica

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
<z

ecfisa

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.

SonaArtica

ecfisa tu codigo no me funka y ademas me tira una banda de errores :(
<z

twins

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;
}

SonaArtica

Me sigue sin funcar, no me reconoce el pasaje de valor de longitud o tamaño del vector, a vector atravez de una variable.
<z

BatchianoISpyxolo

#5
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.
Puede que desees aprender a programar desde 0: www.espascal.es

twins

Y a todo esto que compilador estas utilizando porque yo lo corri y me funciono perfectamente

SonaArtica

<z