Bienvenido, Invitado
Nombre de Usuario Contraseña: Recordarme

Invertir elementos vectores
(1 viendo) (1) Invitado
  • Página:
  • 1

TEMA: Invertir elementos vectores

Invertir elementos vectores hace 1 año, 9 meses #15050

Invertir los elementos de un vector vec de N posiciones, intercambiando el primero con el último, el segúndo por el penúltimo y así sucesivamente hasta terminar

Cual podría ser un ejemplo para invertir el siguiente nombre:

Juan David Pabon

Muchas gracias de antemano
  • JuanDP
  • DESCONECTADO
  • Visitante
  • Temas: 14
  • Karma: 0

Re: Invertir elementos vectores hace 1 año, 9 meses #15055

Aquí te lo dejo, en c++
#include <iostream>
using namespace std;
 
string invertir_string(const string str) {
string invertido("");
char *c;
c = new char;
for (int i=str.length()-1; i>=0; i--) {
*c = str.at(i);
invertido.append(c);
}
return invertido;
}
 
int main() {
string vector;
cout<<"Vector: ";
getline(cin, vector);
 
cout<<endl<<"Cambiado: "<<invertir_string(vector)<<endl;
system("PAUSE");
return 0;
}
  • JoniJnm
  • DESCONECTADO
  • Administrador
  • Temas: 4167
  • Karma: 144

Re: Invertir elementos vectores hace 1 año, 9 meses #15172

Esta perfecto Muchisimas gracias

Tengo un error, estoy usando DEV c++

El vector se invierte, pero es separado por un * y un digito.

Ej: Vector: INVIERTO

Resultado: O*$T*$R*$E*$I*$V*$N*$I

¿Qué sera?

Fue compilado usando Boodshed Dev C++ ver. 4.9.9.2

Amigo y te agradeceria una pequeña explicacón de las lineas de la funcion:

string invertir_string(const string str) {
string invertido("");
char *c;
c = new char;
for (int i=str.length()-1; i>=0; i--) {
*c = str.at(i);
invertido.append(c);
}
return invertido;
}


GRACIAS nuevamente !! xD
  • JuanDP
  • DESCONECTADO
  • Visitante
  • Temas: 14
  • Karma: 0

Re: Invertir elementos vectores hace 1 año, 9 meses #15179

El código que te he dado es para c++, quizá lo querías para c?
string invertir_string(const string str) {
string invertido(""); //iniciar string (cadena de caracteres) de salida a "vacio"
char *c; //puntero a char para usar en "invertido.append(c);"
c = new char; //reservar la memoria para el puntero
for (int i=str.length()-1; i>=0; i--) { //recorrer el string de entrada desde el final al principio
*c = str.at(i); //coger cada posición
invertido.append(c); //y añadirserla al string de salida (como se recorre al revés, sale invertido)
}
return invertido; //devolver string de salida
}
  • JoniJnm
  • DESCONECTADO
  • Administrador
  • Temas: 4167
  • Karma: 144

Re: Invertir elementos vectores hace 1 año, 9 meses #15186

Que bien esa explicación excelente amigo.

SII xD si lo necesitaba en C.

y no he dado maña para cambiarlo xD.
  • JuanDP
  • DESCONECTADO
  • Visitante
  • Temas: 14
  • Karma: 0

Re: Invertir elementos vectores hace 1 año, 9 meses #15192

En c es así:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
 
char* invertir(char* cadena) {
char *out = malloc(strlen(cadena+1)); //reservar memoria para el ancho de la cadena de entrada (+1 para el caracter de cierre)
int i;
int pos;
for (i=0; i<strlen(cadena); i++) { //recorrer la cadena de entrada desde el principio al final
pos = strlen(cadena)-1-i;
out[pos] = cadena[i]; //e insertas desde el final al principio
}
out[strlen(cadena)] = '\0'; //añade el caracter de cierre de cadena al final
return out;
}
 
int main() {
char cadena[255]; //caracteres máximos de la frase
printf("Escribe la frase: ");
gets(cadena);
 
char *invertido = invertir(cadena);
printf("\nInvertido: %s\n", invertido);
 
system("PAUSE");
return 0;
}
  • JoniJnm
  • DESCONECTADO
  • Administrador
  • Temas: 4167
  • Karma: 144
  • Página:
  • 1
Página generada en: 0.40 segundos