Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - galapok11

#1
Saludos a todos
Llevo un rato buscando un tutorial, libro, manual o lo que sea respecto a multihilos en C, y solo encuentro para la libreria pthread.h por lo que no me sirve.
Necesitaria para la libreria de Windows, windows.h. Por favor, si conocen de alguna, mandemen un Link o lo que sea
Muchas gracias
#2
Este funcion deberia borrar un elemento de una lista STRUCT pero no llega a funcionar

void drop_user()
{
    struct dsd_list_user *dsl_current_user;
struct dsd_list_user *dsl_temp_user;

dsl_temp_user=head;
   
    //Variable to indicate the number of user
    //int i = 0;
    int number_user = 0;

    //Assign that pointer to the first user
    dsl_current_user = dss_first;

    //Check if there are users in the list
    if (dsl_current_user==NULL)
    {
        //If there are not users, show the user is the first
        printf("\nThere are no users to drop\n\n");
        return;
    }

    //If there are just one user
    if (dsl_current_user->adsc_next == NULL)
    {
        printf("Only one user to drop it.\n");
printf("Indicate the First Name of the user which you want drop it:");
//gets(dsl_current_user->chrc_firstname);
free(dsl_current_user);
//dsl_current_user = NULL;
return;
//dsl_current_user = dsl_current_user->adsc_next;
    }
while (dsl_current_user != NULL)
{
printf("Indicate the First Name of the user which you want drop it:");
gets(dsl_current_user->chrc_firstname);
free(dsl_current_user);
dsl_current_user = dsl_current_user->adsc_next;
}
}

#3
Saludos, estoy buscando la manera de crear mis propias funciones que correspondan a las sigueintes: strcpy, strlen, strcmp, strcat
He conseguido realizar strcpy, y strcmp.
Pero deberia hacerlo sin las funciones for, while y do: si asi es...
Gracias por leerme, y mas un si me ayudas :)
#4
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                                                             |*/
/*+-------------------------------------------------------------------
#5
Saludos, este es mi primer tema.
Dispongo de un archivo.txt con mas de 5.000 nombres separados por comas y entre comillas.
Me gustaria saber como guardar todos ellos en un array.
Gracias por leerme y mas un por vuestra futura respuesto.