Counting sort
// 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
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.