Autor
|
Tema: intercalar elemento en vector (Leído 9,622 veces)
|
m@o_614
Desconectado
Mensajes: 389
|
Saludos estoy haciendo el siguiente código que me tiene que leer un vector de longitud n ordenado ascendente y un elemento x del mismo tipo que los elementos del vector, intercalar x en el vector v de manera que siga ordenado. todo esto sin utilizar funciones, solo arreglos y llevo lo siguiente pero mi problema es en la parte que me tiene que intercalar el elemento x en el vector que no se si esta bien hecha #include <stdio.h> #include <stdlib.h> #define MAX 20 /* Leer un vector de longitud n ordenado ascendente y un elemento x del mismo tipo que los elementos del vector, intercalar x en el vector v de manera que siga ordenado. */ int main() { int n,i,j,v[MAX],aux,x; printf("Dame longitud del vector\n"); for(i=0;i<n;i++) { printf("Imprimir elemento %d\n",i ); } for(j=0;j<n;j++) { for(i=0;i<n;i++) { if(v[i+1]>v[i]) { aux=v[i+1]; v[i+1]=v[i]; v[i]=aux; } } } for(i=0;i<n;i++) { } printf("Dame elemento a intercalar\n"); for(i=0;i<=n;i++)//Aqui le estoy creando una posicion mas al arreglo { if(x > v[i]) { for(j=n;j>v[i];j--) { v[j]=v[j-1];/*Aqui recorro los elementos para insertar el elemento x*/ } } } return 0; }
me falta todavia la parte en la que se inserta el elemento x en la posicion correcta sin desordenar el vector gracias
|
|
|
En línea
|
|
|
|
ecfisa
Desconectado
Mensajes: 114
|
Hola. #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { int *vec, n_elem, elem, i, j; randomize(); /* cantidad de elementos */ printf("Cantidad de enteros?: "); /* dimensionar arreglo */ vec = (int*)malloc((n_elem +1)*sizeof(int)); /* ingreso aleatorio (0-99) */ for(i = 0; i < n_elem ; i ++) vec [i ] = rand()%100; /* buble */ for(i=0; i < n_elem; i++) for(j=0; j < n_elem; j++) if (vec[i] < vec[j]) { vec[i] ^= vec[j]; vec[j] ^= vec[i]; vec[i] ^= vec[j]; } /* mostrar arreglo ordenado */ printf("\nArreglo ordenado: "); for(i =0; i < n_elem ; i ++) printf("%3d",vec [i ]); /* pedir elemento a insertar */ printf("\nNumero a insertar: "); /* insertar elemento */ i = 0; while (elem > vec[i] && i < n_elem) i++; for(j = n_elem+1; j > i; j--) vec[j] = vec[j-1]; vec[i] = elem; /* mostrar arreglo con elemento insertado */ for(i =0; i < n_elem +1; i ++) printf("%3d",vec [i ]); return 0; }
Saludos.
|
|
« Última modificación: 16 Agosto 2012, 05:22 am por ecfisa »
|
En línea
|
|
|
|
xiruko
Desconectado
Mensajes: 438
|
/* buble */ for(i=0; i < n_elem; i++) for(j=0; j < n_elem; j++) if (vec[i] < vec[j]) { vec[i] ^= vec[j]; vec[j] ^= vec[i]; vec[i] ^= vec[j]; }
nunca habia visto esta manera de ordenar un arreglo y me la apunto solo una cosa y es que diria que en un arreglo de int no hace falta reservar un espacio al final para un null. y si reservas memoria, asegurate al final de liberarla con free(vec). un saludo!
|
|
|
En línea
|
|
|
|
ecfisa
Desconectado
Mensajes: 114
|
Hola xiruko. En realidad el espacio extra reservado es para el elemento a insertar. Y tenes razón, se me escapó el free... Saludos.
|
|
« Última modificación: 16 Agosto 2012, 19:11 pm por ecfisa »
|
En línea
|
|
|
|
xiruko
Desconectado
Mensajes: 438
|
vaya es verdad, me olvide del objetivo del programa y no cai... un saludo!
|
|
|
En línea
|
|
|
|
m@o_614
Desconectado
Mensajes: 389
|
gracias ecfisa le hice unas modificaciones a mi código ya que pensé que lo único que le faltaba era agregar v =x para integrar el nuevo elemento en el vector sin desordenarlo, pero aunque no me marca errores no hace lo que le pido y no entiendo por qué, leí tu código pero me fue un poco difícil de entender porque todavia no domino el uso de apuntadores
#include <stdio.h> #include <stdlib.h> #define MAX 20 /* Leer un vector de longitud n ordenado ascendente y un elemento x del mismo tipo que los elementos del vector, intercalar x en el vector v de manera que siga ordenado. */ int main() { int n,i,j,v[MAX],aux,x; printf("Dame longitud del vector\n"); for(i=0;i<n;i++) { printf("Imprimir elemento %d\n",i ); } for(j=0;j<n;j++) { for(i=0;i<n;i++) { if(v[i+1]>v[i] && i+1!=n) { aux=v[i+1]; v[i+1]=v[i]; v[i]=aux; } } } for(i=0;i<n;i++) { } printf("Dame elemento a intercalar"); for(i=0;i<=n;i++) { if(x > v[i]) { for(j=n;j>i;j--) { v[j]=v[j-1]; } } } v[i]=x; for(i=0;i<=n;i++) return 0; }
me di cuenta que tu usas un while para ir recorriendo los elementos y dejar un espacio para el elemento nuevo, pero yo utilice el for para que me vaya recorriendo el vector uno por uno pero aun asi no funciona gracias
|
|
« Última modificación: 20 Agosto 2012, 21:59 pm por m@o_614 »
|
En línea
|
|
|
|
ecfisa
Desconectado
Mensajes: 114
|
Hola m@o_614. #include <stdio.h> #include <stdlib.h> #define MAX 21 int main() { int n, i, j, v[MAX], x, aux; /* PEDIR CANTIDAD DE ELEMENTOS */ printf("Dame longitud del vector(maximo 20) :"); /* PEDIR LOS ELEMENTOS */ for(i = 0; i < n; i++) { } /* ORDENAR EL ARREGLO */ for(i=0; i < n; i++) for(j=0; j < n; j++) if (v[i] < v[j]) { aux = v[i]; v[i] = v[j]; v[j] = aux; } /* MOSTRAR ARREGLO ORDENADO */ for(i =0; i <n ; i ++) printf("%d\n",v [i ]); /* PEDIR ELEMENTO A INSERTAR */ printf("Dame elemento a intercalar :"); /* INSERTAR EL ELEMENTO */ i = 0; while (x > v[i] && i <= n) i++; for(j = n+1; j > i; j--) v[j] = v[j-1]; v[i] = x; /* MOSTRAR ARREGLO CON ELEMENTO INSERTADO EN POSICION */ for(i =0; i <=n ; i ++) printf("%d\n",v [i ]); return 0; }
Saludos.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema en volver la posición del elemento maximo de un vector
Programación C/C++
|
Denok
|
8
|
7,753
|
15 Diciembre 2011, 15:34 pm
por Denok
|
|
|
Ayuda para intercalar elementos de un arreglo en un tercer vector dado 2 vectore
Programación General
|
sebastian2012
|
0
|
7,622
|
23 Julio 2012, 02:56 am
por sebastian2012
|
|
|
comparar un elemento con un vector c++
Programación C/C++
|
indict
|
4
|
8,312
|
24 Enero 2013, 21:48 pm
por indict
|
|
|
¿Cómo eliminar un elemento de un vector y correr los espacios en java?
Java
|
ShadowA7X
|
2
|
16,214
|
25 Agosto 2016, 16:32 pm
por ShadowA7X
|
|
|
Vector con puntero, obtener la posición de un determinado elemento.
Programación C/C++
|
Dano1952
|
6
|
3,549
|
8 Junio 2018, 18:26 pm
por Dano1952
|
|