Funzioni e Array

di il
1 risposte

Funzioni e Array

Salve ragazzi ho un problema con un due esercizi che mi hanno assegnato a scuola, riguardanti Array e Funzioni. Riuscite a risolverli? vi pregooo!! ci perdo l'anno!

1)[FUNZIONI] Scrivere la definizione di una funzione "IsPositive" che dato come parametro un numero intero, restistiusce 1 se il numero è positivo, 0 se è negativo. Scrivere quindi un main in cui la funzione è richiamata più volte per indicare se ognuno dei numeri da 1 a 20 è pari o dispari.

2)[ARRAY] In un vettore "minime" di 8 numeri interi vengono memorizzate le temperature minime rilevate giornalmente nelle provincie sarde. Dichiarare il vettore quindi scrivere le funzioni per:
Caricare il vettore.
Trovare la temperatura minima più alta.
Dire quante temperature superano i 10 gradi.

Grazie in anticipo.

1 Risposte

  • Re: Funzioni e Array

    Ciao, questa e' la soluzione al primo esercizio:
    
    /**
     * @file main.c
     * @date 15/07/2010
     * @note Scrivere la definizione di una funzione "IsPositive" che dato come
     *+     parametro un numero intero, restistiusce 1 se il numero è pari,
     *+     0 se è dispari.
     *       Scrivere quindi un main in cui la funzione è richiamata più volte
     *+      per indicare se ognuno dei numeri da 1 a 20 è pari o dispari.
     */
    #include <stdio.h>
    
    #define MAX_VAL (20)
    
    
    /* Prototipi funzione */
    unsigned short isPositive(int);
    
    
    
    int main(void) {
      unsigned short i;
    
      for (i = 0; i < MAX_VAL; ++i) {
        if (isPositive(i + 1)) printf("%2d e' pari.\n", i + 1);
        else printf("%2d e' dispari.\n", i + 1);
      }
    
      return 0;
    }
    
    
    unsigned short isPositive(int n) {
      return (n % 2) ? 0 : 1;
    }
    
    Fai attenzione pero', tu nella richiesta scrivi prima "positivo" o "negativo" e poi (nella parte finale), "pari" o "dispari"; dato che nell main dici di fare una prova da 1 al numero 20 immagino tu intendessi "pari" o "dispari". Se cosi' fosse pero', il nome della funzione ("isPositive") andrebbe cambiato.


    Ed ecco la soluzione del secondo esercizio, scusa per i nomi brutti che ho dato alle funzioni ma l'ho fatto di fretta.
    
    /**
     * @file main.c
     * @date 15/07/2010
     * @note In un vettore "minime" di 8 numeri interi vengono memorizzate le
     *+      temperature minime rilevate giornalmente nelle provincie sarde.
     *       Dichiarare il vettore quindi scrivere le funzioni per:
     *          1. Caricare il vettore.
     *          2. Trovare la temperatura minima più alta.
     *          3. Dire quante temperature superano i 10 gradi.
     */
    #include <stdio.h>
    
    #define MAX_N          (8)
    #define TEMP_TO_SEARCH (10)
    
    
    /* Prototipi funzione */
    void carica_vettore    (int*);
    int  minima_vettore    (const int*);
    int  nminDieci_vettore (const int*);
    
    
    
    int main(void) {
      int minime[MAX_N];
      int minima;
      int nmin;
    
      carica_vettore(minime);
      minima = minima_vettore(minime);
      nmin   = nminDieci_vettore(minime);
    
      printf("\nLa temperatura minima e' => %d\n", minima);
      printf("N.ro temperature che superano i %d gradi => %d\n", TEMP_TO_SEARCH, nmin);
      return 0;
    }
    
    
    void carica_vettore(int* v) {
      int i;
    
      for (i = 0; i < MAX_N; ++i) {
        printf("# Inserisci temperatura n.ro %d: ", i + 1);
        scanf("%d%*c", (v + i));
      }
    }
    
    int minima_vettore(const int* v) {
      int i;
      int min = *v;
    
      for (i = 1; i < MAX_N; ++i)
        if (*(v + i) < min) min = *(v + i);
      return min;
    }
    
    int nminDieci_vettore(const int* v) {
      int i;
      int n = 0;
    
      for (i = 0; i < MAX_N; ++i)
        if (*(v + i) > TEMP_TO_SEARCH) ++n;
      return n;
    }
    
    
    Spero di esserti stato di aiuto.
    Saluti, netburst.
Devi accedere o registrarti per scrivere nel forum
1 risposte