Saludos programadores.
He terminado un programa y me gustaria saber como incluir los separadores de miles a la hora de mostrar dicho resultado en pantalla. He estado investigando en Internet pero lo poco que he visto/entendido no he conseguido aplicarlo.
Gracias por leerme, y mas aun al que me responda
Este es el programa, siento que este en ingles...
/*+-------------------------------------------------------------------+*/
/*| System and library header files. |*/
/*+-------------------------------------------------------------------+*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
/*+-------------------------------------------------------------------+*/
/*| Defines |*/
/*+-------------------------------------------------------------------+*/
//Maximum characters of the file cypher.txt
#define LIMIT_NAMES 6000
/*+-------------------------------------------------------------------+*/
/*| Structs & Definitions |*/
/*+-------------------------------------------------------------------+*/
/*+-------------------------------------------------------------------+*/
/*| Global Variables |*/
/*+-------------------------------------------------------------------+*/
/*+-------------------------------------------------------------------+*/
/*| Static Variables |*/
/*+-------------------------------------------------------------------+*/
static char array_list_names[LIMIT_NAMES][50];
int ins_total_score = 0;
////Static variables for the time
static int ins_time_start; //Start time of NameLists
static int ins_time_stop; //Finish time of NameLists
/*+-------------------------------------------------------------------+*/
/*| Internal function prototypes. |*/
/*+-------------------------------------------------------------------+*/
/*+-------------------------------------------------------------------+*/
/*| Explanation |*/
/*+-------------------------------------------------------------------+*/
//A 46K text file containing over five-thousand first names, begin by sorting it into alphabetical order.
//
//Then working out the alphabetical value for each name, multiply this value by its alphabetical position in the list to obtain a name score.
//For example, when the list is sorted into alphabetical order, COLIN, which is worth 3 + 15 + 12 + 9 + 14 = 53, is the 938th name in the list. So, COLIN would obtain a score of 938 × 53 = 49714.
//What is the total of all the name scores in the file?
//
//In order to sort the names, you will need to use qsort (http://www.cplusplus.com/reference/cstdlib/qsort/).
//It might be a bit tricky and difficult,
//i'll let you try alone if you want, but due to the pointer redirection you will need to apply in order to use the function, i'll gladly help you out - so don't hesitate to stop by and ask me.
/*+-------------------------------------------------------------------+*/
/*| Main control procedure. |*/
/*+-------------------------------------------------------------------+*/
//Function compare by default
int m_compare (const void * vpp_a, const void * vpp_b)
{
return strcmp((char *) vpp_a, (char *) vpp_b);
//return ( *(int*)a - *(int*)b );
}
//////////////////////////////////////////////
int main ()
{
//Indicate time
clock_t t_start, t_end;
double secs;
t_start = clock();
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
//Procedure to count the words of the file names.txt and keep the array with all names
//Open file to read it
FILE *file_names;
file_names = fopen("names.txt", "r+");
//If the file is incorrect, indicate it and close the program
if (file_names==NULL)
{
printf("File's content is incorrect.");
system("pause");
return -1;
}
// //Function to count the total names of the file
// int ins_number_names = 0+1;
// while(!feof(file_names))
// {
// if(fgetc(file_names) == ',')
// {
// ins_number_names++;
// }
// }
//////Show the total number of names
//printf("\nThe Number of names of the file names.txt is %d\n", ins_number_names);
//system("PAUSE");
//Variable to keep the total number of names
int ins_number_names = 0;
//Start a while to know the number of names, and keep all names in one array
while(!feof(file_names) && ins_number_names < LIMIT_NAMES)
{
//Initial lenght for every name
int lenght_names = 0;
//Other characters of the file, in this case, the commas ','
char other_char;
//Limit of characters of the names
char limit_char_names[50];
//Exclude the commas ',' and double quotation marks ' " " ' to can counting the names
while((other_char = fgetc(file_names)) != ',' && !feof(file_names))
{
if(other_char == '\"'){
continue;
}
else{
limit_char_names[lenght_names] = other_char;
lenght_names++;
}
}
limit_char_names[lenght_names] = '\0';
//Keep with strcpy the names in the array array_list_names
strcpy(array_list_names[ins_number_names],limit_char_names);
ins_number_names++;
}
//Close the file names.txt
fclose(file_names);
/////////////////////////////////////////////////////////////////////////////////////
//Show the array with all names to check it
/* for(int i = 0; i < ins_number_names; i++)
{
printf("%s ",array_list_names);
}*/
printf("\nThe total number of names is: %i\n",ins_number_names);
system("PAUSE");
//Start the function to sort all names in alphabetical order
qsort (array_list_names, ins_number_names, 50, m_compare);
//Show the array sorted to check the function sort
/*for(int i=0; i<ins_number_names;i++)
{
printf ("%s ",array_list_names);
}*/
//Start with the operations to calculate the name score and total score
//Assign to every word of every name a value which will be the position of the letter
for(int i1=0; i1<ins_number_names;i1++)
{
//Variable to indicate the sum
int ins_sum=0;
//Variable ins_number_char_names to know the lenght of the name
int ins_lenght_names = strlen(array_list_names[i1]);
for(int i2=0; i2<ins_lenght_names; i2++)
{
//Calculate the score of every character
ins_sum += array_list_names[i1][i2] - 'A' + 1;
}
//Calculate the values
int ins_value = ins_sum * (i1+1);
//Calculate the total score
ins_total_score += ins_value;
}
//Show the total score os the file names.txt
printf("The total score of all names is: %i\n", ins_total_score);
system("pause");
////////////////////////////////////////////////////////////////////////////////////
//Show time
t_end = clock();
secs = (double)(t_end - t_start) / CLOCKS_PER_SEC;
printf("Time used to process the names list and calculate the total score names: %.16g miliseconds", secs * 1000.0);
printf("\n\n");
/////////////////////////////////////////////////////
system("pause");
return 0;
}
/*+-------------------------------------------------------------------+*/
/*| FINAL |*/
/*+-------------------------------------------------------------------