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

[0] Índice de Mensajes

Ir a la versión completa