Untitled

 avatar
unknown
c_cpp
a month ago
1.3 kB
3
Indexable
/*
Scrivere un sottoprogramma che riceve in ingresso un array di numeri interi positivi e qualsiasi altro parametro
ritenuto strettamente necessario. Il sottoprogramma rimuove dall'array tutti i numeri non primi e restituisce al
chiamate il numero di elementi alla fine presenti nell'array.
Esempio
Se la funzione riceve in ingresso l'array contenente i valori: 17 4 6 5 7 8,
il sottoprogramma lo modificherà in modo tale che contenga la sequenza: 17 5 7
e restituirà al chiamante il valore 3

[17] [4] [6] [5] [7] [8]

[17] [5] [7] [4] [6] [8]

*/

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

int is_primo(int num)
{
    if(num < 2){
        return 0;
    }

    for(int i=2; i<num; i++)
    {
        if(num % i == 0)
        {
            return 0;
        }
    }

    return 1;
}

int rimuovi_non_primi(int *array, int size)
{
    //[17] [5] [7] [5] [7] [8]
    int j=0;

    for(int i=0; i<size; i++) //i=5
    {
        if(is_primo(array[i]) == 1)
        {
            array[j] = array[i];
            j++; // 3
        }
    }

    return j;

}

int main(int argc, char *argv[])
{
   
   int array[] = { 17, 4, 6, 5, 7, 8};
   int size = 6;

   int nuova_dim = rimuovi_non_primi(array, size);

   for(int i=0; i<nuova_dim; i++)
   {
    printf("%d ", array[i]);
   }
  

    return 0;

}
Leave a Comment