elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  invertir un vector en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: invertir un vector en C  (Leído 37,073 veces)
windic

Desconectado Desconectado

Mensajes: 34



Ver Perfil
invertir un vector en C
« en: 23 Noviembre 2013, 19:34 pm »

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

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. main()
  4. {
  5. //Declaracion de variables
  6. int i,c[]={1,2,3,4,5,6};
  7. int j;
  8. //Bucle de inversion
  9. for (i=0;i<=5;i++)
  10. c[i]=c[5-i];
  11. //Impresion del invertido del vector
  12. for (j=0;j<=5;j++)
  13. printf("el vector invertido es %i",c[j]);
  14. system("Pause > nul");
  15. system("Exit");
  16. }


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 Desconectado

Mensajes: 16



Ver Perfil
Re: invertir un vector en C
« Respuesta #1 en: 23 Noviembre 2013, 20:05 pm »

Igual me equivoco pero porque no haces un recorrido inverso y ya está
Código:
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
Código:
    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 Desconectado

Mensajes: 34



Ver Perfil
Re: invertir un vector en C
« Respuesta #2 en: 23 Noviembre 2013, 20:44 pm »

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 Desconectado

Mensajes: 16



Ver Perfil
Re: invertir un vector en C
« Respuesta #3 en: 24 Noviembre 2013, 00:22 am »

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 Desconectado

Mensajes: 34



Ver Perfil
Re: invertir un vector en C
« Respuesta #4 en: 24 Noviembre 2013, 12:47 pm »

si cierto xD. Muchas gracias por la solucion
En línea

Elias Flores

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Re: invertir un vector en C
« Respuesta #5 en: 12 Septiembre 2018, 23:33 pm »

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <conio.h>
  4. #include <string>
  5. #include <ctime>
  6. using namespace std;
  7. void cargar (int arreglo[],int num2,int n);
  8. void mostrar (int arreglo[],int num2,int n);
  9. void invertir (int arreglo[],int a,int b);
  10. void mostrarinversa (int arreglo[],int num2,int n);
  11. int main (){
  12. int n;
  13.   cout<<"ingrese la longitud del vector: ";cin>>n;
  14.   int arreglo[n];
  15.   cargar (arreglo,0,n);
  16.   cout<<endl<<endl;
  17.   mostrar (arreglo,0,n);
  18.   cout<<endl<<endl;
  19.   invertir (arreglo,0,n);
  20.   cout<<endl<<endl;
  21.   mostrarinversa (arreglo,n-n+1,n);
  22.   getch();
  23.   return 0;
  24. }
  25. void invertir(int arreglo[],int a ,int b){
  26.   int n=b-a+1;
  27.   int aux;
  28.   if (n>1){
  29.      invertir(arreglo,a+1,b-1);
  30.      aux=arreglo[a];
  31.      arreglo[a]=arreglo;
  32.      arreglo=aux;}
  33. }
  34. void mostrarinversa (int arreglo[],int num2,int n){
  35.   if (n>0){
  36.      mostrarinversa(arreglo,num2+1,n-1);
  37.      cout<<arreglo[num2]<<" ";}
  38. }
  39. void cargar (int arreglo[],int num2,int n){//en el siguiente metodo le pasado el vector y el indice que comienza en cero = num2
  40. if (n>0){                           //num2 debe ir aumentando de 1 en 1
  41.   srand(time(0));                     //el srand sirve para sincronizar el rand con el reloj del pc
  42.   cargar(arreglo,num2+1,n-1);            //llamamos a la misma funcion cargar pero menos el ultimo dato n-1
  43.   arreglo[num2]=1+rand()% 10;}
  44. }
  45. void mostrar (int arreglo[],int num2,int n){
  46.   if (n>0){
  47.      mostrar(arreglo,num2+1,n-1);
  48.      cout<<arreglo[num2]<<" ";}
  49. }


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 Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: invertir un vector en C
« Respuesta #6 en: 15 Septiembre 2018, 00:40 am »

Hola para invertir un vector puedes usar la recursividad
Código
  1. void invertir(arreglo a, int n)
  2. {
  3. if(n>=0)
  4. cout << a[n] << " ";
  5. invertir(a,n-1);
  6. }

O de la forma iterativa

Código
  1. void invertir(arreglo a)
  2. {
  3. for(int i=MAX-1;i>=0;i--)
  4. cout << a[i] << " ";
  5. cout << endl;
  6. }
« Última modificación: 15 Septiembre 2018, 00:43 am por Beginner Web » En línea

7w7
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: invertir un vector en C
« Respuesta #7 en: 16 Septiembre 2018, 04:46 am »

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
invertir el orden de un vector
Programación C/C++
indict 2 3,516 Último mensaje 22 Junio 2013, 17:34 pm
por leosansan
Invertir un vector
Programación C/C++
bryanrz96 1 2,702 Último mensaje 3 Diciembre 2015, 04:56 am
por Zodiak98
invertir un vector
Programación C/C++
creiko 4 5,356 Último mensaje 12 Abril 2016, 05:02 am
por Gunhack
como invertir un vector
Programación C/C++
rembrandt85 1 2,178 Último mensaje 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,715 Último mensaje 16 Septiembre 2018, 04:32 am
por Beginner Web
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines