• Viernes 8 de Noviembre de 2024, 22:59

Autor Tema:  Funcion para poner puntos de miles y millones en una cadena de caracteres.  (Leído 1988 veces)

neider02

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
0
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

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
Re:Funcion para poner puntos de miles y millones en una cadena de caracteres.
« Respuesta #1 en: Sábado 13 de Agosto de 2011, 02:35 »
0
Se me ocurrio esto, igual lo hice muy dificil y se puede hacer más fácil jaja

Código: C++
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main (){
  5.    
  6.     char *cadena = ( char* ) calloc ( 30, sizeof ( char ) );
  7.    
  8.     printf ( "%s", "Introduce una cadena MAX. 30 : " );
  9.     scanf ( "%s", cadena );
  10.     getchar ();
  11.    
  12.     int tam = strlen ( cadena );
  13.     int a;
  14.    
  15.     if ( tam % 3 == 0 )
  16.         a = tam + tam / 3 - 1;
  17.     else
  18.         a = tam + tam / 3;
  19.    
  20.     realloc ( cadena, a * sizeof ( char ) );
  21.     char *cadena1 = ( char* ) calloc ( a, sizeof ( char ) );
  22.    
  23.     for ( int i = tam, j = 0, k = a; i >= 0; i--, j++, k-- ){
  24.        
  25.         if ( j % 3 == 0 && j != 0 ){
  26.            
  27.            cadena1[k] = cadena[i];
  28.            k--;
  29.            cadena1[k] = '.';
  30.            
  31.         }
  32.        
  33.         else{
  34.              
  35.              cadena1[k] = cadena[i];
  36.              
  37.         }
  38.        
  39.     }
  40.    
  41.     memcpy ( cadena, cadena1, a );
  42.     free ( cadena1 );
  43.    
  44.     printf ( "%s", cadena );
  45.        
  46.     getchar();
  47.     return 0;
  48.    
  49. }
  50.  

Utilizo algunas funciones de la librería esta estándar... se pueden hacer manualmente facilmente, si no entiendes algo te intento explicar...

Un saludo!
« última modificación: Sábado 13 de Agosto de 2011, 02:40 por Checho360 »

neider02

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re:Funcion para poner puntos de miles y millones en una cadena de caracteres.
« Respuesta #2 en: Sábado 13 de Agosto de 2011, 12:28 »
0
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++
  1. void _dineropunto(char* cadena){
  2. int i;
  3. int j;
  4. int k;
  5.  
  6. int tam = strlen ( cadena );
  7.     int a;
  8.  
  9.     if ( tam % 3 == 0 )
  10.         a = tam + tam / 3 - 1;
  11.     else
  12.         a = tam + tam / 3;
  13.  
  14.     char cadena1[20]="";
  15.  
  16.     for ( i = tam, j = 0, k = a; i >= 0; i--, j++, k-- ){
  17.  
  18.         if ( j % 3 == 0 && j != 0 ){
  19.  
  20.            cadena1[k] = cadena[i];
  21.            k--;
  22.            cadena1[k] = '.';
  23.  
  24.         }
  25.  
  26.         else{
  27.  
  28.              cadena1[k] = cadena[i];
  29.  
  30.         }
  31.  
  32.     }
  33.  
  34.     strcpy ( cadena, cadena1);
  35.  
  36. ShowMessage(cadena);
  37.  
  38. }
  39.  


Gracias Checho360