Autor
|
Tema: invertir un vector en C (Leído 37,163 veces)
|
windic
Desconectado
Mensajes: 34
|
Hola buenas a todos. Estaba haciendo un programa en el que ya viene dado un vector y tienes que imprimir el inverso sin utilizar un vector auxiliar. La forma que se me ocurrio fue esta #include <stdio.h> #include <stdlib.h> main() { //Declaracion de variables int i,c[]={1,2,3,4,5,6}; int j; //Bucle de inversion for (i=0;i<=5;i++) c[i]=c[5-i]; //Impresion del invertido del vector for (j=0;j<=5;j++) printf("el vector invertido es %i",c [j ]); }
El problema es que para los valores c[3]hasta c[5] ya se han invertido por lo que vuelve a invertir los mismos tres valores. Si alguien encuentra una solucion se agradeceria mucho.
|
|
|
En línea
|
|
|
|
mad_soft
Desconectado
Mensajes: 16
|
Igual me equivoco pero porque no haces un recorrido inverso y ya está for (j=5;j>=0;j--) { printf("el vector invertido es %i",c[j]); }
Si de lo que se trata es de que c se quede invertido, entonces como lo haces, pero para en la mitad del vector Eso si que acabo de fijarme, cuando intercambias en el bucle de inversión, guarda la posición de 0 en 5 que solo haces la de 5 a 0 temp=c[i]; c[i]=c[5-i]; c[5-i]=temp;
|
|
« Última modificación: 23 Noviembre 2013, 20:18 pm por mad_soft »
|
En línea
|
SuSE 13.2 + Kernel 3.16
|
|
|
windic
Desconectado
Mensajes: 34
|
mad_soft es cierto que el recorrido inverso seria la solucion a imprimir por pantalla el vector inverso, pero lo que necesito no es imprimir el inverso en pantalla sino sobrescribir encima del vector c su inverso sin utilizar otro vector para hacerlo, aunque gracias por la idea.
|
|
|
En línea
|
|
|
|
mad_soft
Desconectado
Mensajes: 16
|
has visto que la segunda parte de la respuesta te digo como hacerlo sobreescribiendo el vector
|
|
|
En línea
|
SuSE 13.2 + Kernel 3.16
|
|
|
windic
Desconectado
Mensajes: 34
|
si cierto xD. Muchas gracias por la solucion
|
|
|
En línea
|
|
|
|
Elias Flores
Desconectado
Mensajes: 13
|
#include <iostream> #include <cstdlib> #include <conio.h> #include <string> #include <ctime> using namespace std; void cargar (int arreglo[],int num2,int n); void mostrar (int arreglo[],int num2,int n); void invertir (int arreglo[],int a,int b); void mostrarinversa (int arreglo[],int num2,int n); int main (){ int n; cout<<"ingrese la longitud del vector: ";cin>>n; int arreglo[n]; cargar (arreglo,0,n); cout<<endl<<endl; mostrar (arreglo,0,n); cout<<endl<<endl; invertir (arreglo,0,n); cout<<endl<<endl; mostrarinversa (arreglo,n-n+1,n); getch(); return 0; } void invertir(int arreglo[],int a ,int b){ int n=b-a+1; int aux; if (n>1){ invertir(arreglo,a+1,b-1); aux=arreglo[a]; arreglo[a]=arreglo; arreglo=aux;} } void mostrarinversa (int arreglo[],int num2,int n){ if (n>0){ mostrarinversa(arreglo,num2+1,n-1); cout<<arreglo[num2]<<" ";} } void cargar (int arreglo[],int num2,int n){//en el siguiente metodo le pasado el vector y el indice que comienza en cero = num2 if (n>0){ //num2 debe ir aumentando de 1 en 1 srand(time(0)); //el srand sirve para sincronizar el rand con el reloj del pc cargar(arreglo,num2+1,n-1); //llamamos a la misma funcion cargar pero menos el ultimo dato n-1 arreglo[num2]=1+rand()% 10;} } void mostrar (int arreglo[],int num2,int n){ if (n>0){ mostrar(arreglo,num2+1,n-1); cout<<arreglo[num2]<<" ";} }
Mod: Obligatorio el uso de etiquetas GeSHi para códigos.
|
|
« Última modificación: 16 Septiembre 2018, 01:33 am por #!drvy »
|
En línea
|
|
|
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
Hola para invertir un vector puedes usar la recursividad void invertir(arreglo a, int n) { if(n>=0) cout << a[n] << " "; invertir(a,n-1); }
O de la forma iterativa void invertir(arreglo a) { for(int i=MAX-1;i>=0;i--) cout << a[i] << " "; cout << endl; }
|
|
« Última modificación: 15 Septiembre 2018, 00:43 am por Beginner Web »
|
En línea
|
7w7
|
|
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
Ahora que me doy cuenta la mejor forma de invertir un vector sin usar otro auxiliar es hacer un bubblesort que traiga el ultimo elemento a la primera posicion del arreglo y ya
|
|
|
En línea
|
7w7
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
invertir el orden de un vector
Programación C/C++
|
indict
|
2
|
3,546
|
22 Junio 2013, 17:34 pm
por leosansan
|
|
|
Invertir un vector
Programación C/C++
|
bryanrz96
|
1
|
2,731
|
3 Diciembre 2015, 04:56 am
por Zodiak98
|
|
|
invertir un vector
Programación C/C++
|
creiko
|
4
|
5,405
|
12 Abril 2016, 05:02 am
por Gunhack
|
|
|
como invertir un vector
Programación C/C++
|
rembrandt85
|
1
|
2,213
|
24 Febrero 2017, 14:38 pm
por AnthonyS
|
|
|
RECURSION en su estado mas puro para invertir un vector!
« 1 2 »
Programación C/C++
|
Elias Flores
|
13
|
5,801
|
16 Septiembre 2018, 04:32 am
por Beginner Web
|
|