Programación General > C/C++
Funcion para poner puntos de miles y millones en una cadena de caracteres.
(1/1)
neider02:
Hola , llevo un buen rato intentando hacer una funcion en c++ en la que yo le paso una cadena con un numero y quiero que me la devuelva con los puntos de los miles y los millones
Ejemplo:
Recibe la cadena
cad[30]="100000"
y quiero que me devuelva
1.000.000
En princpio solo necesito que lo haga con numeros hasta 100.000.000
Si alguien me puede echar una mano se lo agradeceria. Hasta luego
Checho360:
Se me ocurrio esto, igual lo hice muy dificil y se puede hacer más fácil jaja
--- Código: C++ ---#include <iostream>using namespace std; int main (){ char *cadena = ( char* ) calloc ( 30, sizeof ( char ) ); printf ( "%s", "Introduce una cadena MAX. 30 : " ); scanf ( "%s", cadena ); getchar (); int tam = strlen ( cadena ); int a; if ( tam % 3 == 0 ) a = tam + tam / 3 - 1; else a = tam + tam / 3; realloc ( cadena, a * sizeof ( char ) ); char *cadena1 = ( char* ) calloc ( a, sizeof ( char ) ); for ( int i = tam, j = 0, k = a; i >= 0; i--, j++, k-- ){ if ( j % 3 == 0 && j != 0 ){ cadena1[k] = cadena[i]; k--; cadena1[k] = '.'; } else{ cadena1[k] = cadena[i]; } } memcpy ( cadena, cadena1, a ); free ( cadena1 ); printf ( "%s", cadena ); getchar(); return 0; }
Utilizo algunas funciones de la librería esta estándar... se pueden hacer manualmente facilmente, si no entiendes algo te intento explicar...
Un saludo!
neider02:
Muchas gracias, me ha sido de gran ayuda. Lo he modificado un poco quitandole lo de reservar memoria y tal.
Envio siempre una cadena de caracteres de tamaño 20. Dejo el codigo que he dejado al final.
En C++ Builder
--- Código: C++ ---void _dineropunto(char* cadena){int i;int j;int k; int tam = strlen ( cadena ); int a; if ( tam % 3 == 0 ) a = tam + tam / 3 - 1; else a = tam + tam / 3; char cadena1[20]=""; for ( i = tam, j = 0, k = a; i >= 0; i--, j++, k-- ){ if ( j % 3 == 0 && j != 0 ){ cadena1[k] = cadena[i]; k--; cadena1[k] = '.'; } else{ cadena1[k] = cadena[i]; } } strcpy ( cadena, cadena1); ShowMessage(cadena); }
Gracias Checho360
Navegación
Ir a la versión completa