Newsgroup: it.comp.lang.c
Titolo: Matrici

La stessa matrice può contenere stringhe e interi?
Quando viene dichiarata una matrice la si fa con char o con int, come è
possibile dunque che nella stessa matrice ci siano stringhe e caratteri?
Grazie,
Giuseppe


Potresti memorizzare gli interi come stringhe. Oppure gli elementi della
matrice potrebbero essere unioni contenenti una stringa e un intero.
Oppure strutture contenenti una stringa e un intero. Oppure, ancora,
puntatori generici (void *) che poi punterebbero al tipo richiesto
(stringa o intero).
EMG

 
Non posso utilizzare i puntatori perché ancora non ho affrontato questo
argomento. 
Perdonami, ma non riesco a seguirti. Se devo immettere i valori in
questa matrice, ad esempio... i nomi di alcune città e il numero degli
abitanti, lo posso fare con for,  scanf, utilizzando %s e %d. Facendo
alcune prove mi vengono errori con caratteri indecifrabili.
Inoltre mi capita questo.
In un esercizio sulle matrici in cui dichiaro una matrice con float,
quando effettuo 'Run', il compilatore non mi restituisce alcun errore
però alla fine mi appare questo messaggio: 
"scanf : floating point formats not linked
Abnormal program termination"
Cosa è che non funziona?
Grazie, Giuseppe

 Cosa è che non funziona?
Dalle FAQ:
14.13:  I'm having trouble with a Turbo C program which crashes and says
        something like "floating point formats not linked."
A:      Some compilers for small machines, including Borland's
        (and Ritchie's original PDP-11 compiler), leave out certain
        floating point support if it looks like it will not be needed.
        In particular, the non-floating-point versions of printf()
        and scanf() save space by not including code to handle %e, %f,
        and %g.  It happens that Borland's heuristics for determining
        whether the program uses floating point are insufficient,
        and the programmer must sometimes insert a dummy call to a
        floating-point library function (such as sqrt(); any will
        do) to force loading of floating-point support.  (See the
        comp.os.msdos.programmer FAQ list for more information.)
EMG

 matrice potrebbero essere unioni contenenti una stringa e un intero.


 
Intanto non capisco perché questo programma, che dovrebbe caricare i
giorni della settimana in un array, mi fornisce una serie di messaggi
ripetuti con caratteri strani:
"error
Abnormal program termination
Null pointer assignment"
#include <stdio.h>
main()
{
char giorni[7];
int i;
printf("\n");
/* Caricamento dell'array */
for(i=0; i<7; i++)
  printf("Giorno: ");
   scanf("%s", &giorni[i]);
   }
/* Visualizzazione dell'array */
for(i=0; i<7; i++) {
 printf("%s", giorni[i]);
 }
}
 
L'esempio sulla matrice potrebbe partire da quello precedente:
dare la possibilità all'utente d'inserire il totale delle spese
quotidiane nei rispettivi giorni della settimana. 
Grazie, Giuseppe


prova a confrontare il programma da te generato con il seguente
(l'ho guardato molto in fretta, spero che non contenga errori):
#include <stdio.h>
#define MAX_LEN_GIORNO 12
int main(void) {
    char giorni[7][MAX_LEN_GIORNO]; /*7 array di char, non un array di 7 char*/
    int i;
    printf("\n");
    /* imposto a 0 tutti i caratteri di ciascuno dei 7 array */
    for(i = 0; i < 7; i++) memset(&giorni[i][0],0,sizeof(giorni[i]));
/* Caricamento dell'array */
    for(i=0; i<7; i++) {
        printf("Giorno: ");
        scanf("%s", &giorni[i][0]); /* nota la differenza con la tua versione */
    }
/* Visualizzazione dell'array */
    for(i=0; i<7; i++) {
        printf("%s\n", giorni[i]); /* quando giorni era un array di 7 char
                                      cercavi di stampare come una
                                      stringa l'iesimo char dell'array */
     }
}
Ciao,
Marco Guidi