Laboratorio di Informatica I: Programmazione. AA 2002/03.
Esercitazione n. 4

Scopo di questa esercitazione è di familiarizzarsi con arrays, puntatori e stringhe.

Al solito, si suggerisce di creare una directory apposita per i files relativi a questa esercitazione.


     
  1. Dato il seguente programma
       #include <stdio.h>
       int main(){
           float a[4]= { 1.30, 2.30, 3.30, 4.60}, *ip, *iq;
           ip = &a[0];
           iq = ip;
           printf("valore di a[0]: %f,
                   indirizzo di a[0]: %u \n", a[0], &a[0]);
           return 0;
         }
    Aggiungere anche la scrittura di
     *ip, &ip, ip, a 
    e interpretare i risultati. Aggiungere quindi anche la stampa di
     *ip + 3 e  *(ip+3)
    ed interpretare anche questi risultati.

  2. Riscrivere il programma per la soluzione delle equazioni di secondo grado in modo da utilizzare una function che accetti in input i tre coeficienti  (reali) e fornisca, attraverso due argomenti puntatori a float, i valori delle due radici. Ricordiamo che se una function ha un argomento puntatore, nell' invocazione della function a quell' argomento deve corrispondere un indirizzo (che poi e' il valore del puntatore). Es:
    void  funz( int a, int *b );

    int main(){
    int z;
    ...
    funz( 2, &z );
    ...

  3. Scrivere un programma che dichiari un array reale di 10 elementi e poi legga i valori e ne calcoli la somma dei quadrati (e la scriva).

  4. Usare gli arrays per scrivere un programma che legga N valori interi in input e li memorizzi in un array e li ordini in ordine crescente. Un algoritmo possibile per l' ordinamento itera per un numero sufficiente di volte l' esame di tutte le coppie  consecutive di elementi  ordinandole  se necessario. Un modo per "scambiare di posto" due elementi consecutivi dell' array e' il seguente:
    tmp    = a[i];
    a[i] = a[i+1];
    a[i+1] = tmp;




  5. Scrivere un programma che legga interi (con segno) e scriva quante volte e' stato immesso ogni intero tra 1 e 5 (ogni intero puo' essere immesso un numero arbitrario di volte).

  6. Scrivere un programma che dichiari ed inizializzi due  array a due indici (matrici) di dimensione 2x2 e poi calcoli la matrice prodotto i cui elementi sono dati da

    cij = Somma_su_k_da_1_a_2     aik bkj

    per 1 <= i<= 2 e 1 <= j<= 2

    Tener conto dei diversi limiti degli indici degli arrays C.


  7. Cosa scriverà il seguente programma ?
    #include <stdio.h>
    
    int main(){
        int i;
        char s1[] = "Immetti un numero";
        for(i=0;i< sizeof(s1); i++)
                printf("%c \n",s1[i]);
        printf("%s \n",s1);
        return 0;
    }
    
    

    Modificarlo in modo da introdurre una seconda stringa di lunghezza 40 e copiarvi sopra la stringa s1.