Counting sort

gloria19881
// main.c

#include <stdio.h>
#include <stdlib.h>
#include "counting.h"

int Find_Max(int *A,int size)
{
  int i;
  int max = A[0];
  for(i=0; i< size; i++)
  {
//  printf("A[%d] = %d\n",i,A[i]);
    if(A[i]>max) 
      max = A[i];
  }
  return max;
}

int main(int argc, char* argv[])
{
  int *A, *B;
  int i,max;

  srand(time(0));

  if(atoi(argv[1]) == 0)
  {
   printf("\nInserire un numero intero non negativo MAX 15\n");
   exit(1);
  }
  else 
    if(atoi(argv[1]) > 15 )
    {
       printf("\nInserire un numero intero non negativo MAX 15\n");
       exit(1);
     }

  A = (int*)malloc(sizeof(int)*atoi(argv[1]));

  printf("\nVettore A: |");

  for(i=0;i<atoi(argv[1]);i++)
  {
    A[i] = rand() %atoi(argv[1]);
    printf(" %2d |",A[i]);
  }

  printf("\n");

  max = Find_Max(A,atoi(argv[1]));

//  printf("MAX %d \n",max);

  B = (int *)malloc(sizeof(int)*atoi(argv[1]));

  Counting_Sort(A,atoi(argv[1]),B,max);

  free(A); free(B);
  return 0;

}

Sto studiando questo codice che realizza il Counting sort. Volevo chiedere la variabile ATOI da dove arriva dato che non è stata dichiarata da nessuna parte!
Grazie mille.

Risposte
apatriarca
atoi è una funzione dichiarata in stdlib e non una variabile. Riceve infatti sempre come argomento argv[1]. Peraltro è un pessimo codice: atoi(argv[1]) viene calcolato in continuazione nonostante sia evidentemente costante (argv[1] rimane costante per tutto il codice). Sarebbe stato senza dubbio meglio memorizzarlo in una variabile e poi usare questa nel resto del codice.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.