Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [C] problema array

  1. #1

    [C] problema array

    Salve a tutti eccomi di nuovo qui .questo il mio codice
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    double prodottoScalare(double A[],double B[],double N){
    double prodotto=0.0;
    for(int i=0;i<N;i++){
        prodotto+=(A[i] * B[i]);
    }
    return prodotto;
    }
    
    int main(){
        const int n= 4;
        double a[]={1,2,3,4};
        double b[]={5,6,7,8};
        printf("il loro prodotto scalare č:%lf",prodottoScalare(a,b,n));
        return 0;
    }
    La mia domanda č 1);perchč se quando dichiaro l'array double a[ ]={1,2,3,4}; oppure double a[4]={1,2,3,4}; tutto funziona alla perfezione e se dichiaro l'array double a[n]={1,2,3,4}; escono fuori un casino di errori????2)ma per un array double a[] gli elementi dopo la graffa non dovrebbero essere double,perchč con elementi int vā lo stesso??? grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da maseeeeeee Visualizza il messaggio
    La mia domanda č 1);perchč se quando dichiaro l'array double a[ ]={1,2,3,4}; oppure double a[4]={1,2,3,4}; tutto funziona alla perfezione e se dichiaro l'array double a[n]={1,2,3,4}; escono fuori un casino di errori????2)ma per un array double a[] gli elementi dopo la graffa non dovrebbero essere double,perchč con elementi int vā lo stesso??? grazie in anticipo

    Veramente con double a[n] ... funziona lo stesso ...

    I valori 1, 2, 3, 4 sono intesi come 1.0, 2.0, 3.0, 4.0 e quindi validi come double ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Veramente con double a[n] ... funziona lo stesso ...I valori 1, 2, 3, 4 sono intesi come 1.0, 2.0, 3.0, 4.0 e quindi validi come double ...
    grazie Oregon sempre te risolvi i miei casini!!!avevo immaginato che li considerava come numeri con la virgola.Ma per quanto riguarda l'array con[n] giuro che non vā.ecco gli errore:
    codice:
    ex5-es3.c: In function ‘main’:
    ex5-es3.c:14:2: error: variable-sized object may not be initialized
    ex5-es3.c:14:2: warning: excess elements in array initializer [enabled by default]
    ex5-es3.c:14:2: warning: (near initialization for ‘a’) [enabled by default]
    ex5-es3.c:14:2: warning: excess elements in array initializer [enabled by default]
    ex5-es3.c:14:2: warning: (near initialization for ‘a’) [enabled by default]
    ex5-es3.c:14:2: warning: excess elements in array initializer [enabled by default]
    ex5-es3.c:14:2: warning: (near initialization for ‘a’) [enabled by default]
    ex5-es3.c:14:2: warning: excess elements in array initializer [enabled by default]
    ex5-es3.c:14:2: warning: (near initialization for ‘a’) [enabled by default]
    ex5-es3.c:15:2: error: variable-sized object may not be initialized
    ex5-es3.c:15:2: warning: excess elements in array initializer [enabled by default]
    ex5-es3.c:15:2: warning: (near initialization for ‘b’) [enabled by default]
    ex5-es3.c:15:2: warning: excess elements in array initializer [enabled by default]
    ex5-es3.c:15:2: warning: (near initialization for ‘b’) [enabled by default]
    ex5-es3.c:15:2: warning: excess elements in array initializer [enabled by default]
    ex5-es3.c:15:2: warning: (near initialization for ‘b’) [enabled by default]
    ex5-es3.c:15:2: warning: excess elements in array initializer [enabled by default]
    ex5-es3.c:15:2: warning: (near initialization for ‘b’) [enabled by default]
    Ultima modifica di MItaly; 21-08-2014 a 23:51 Motivo: Spostati e formattati messaggi di errore dall'altro post

  4. #4
    scusate ho commesso un errore e non mi fā modificare il messaggio!!!

  5. #5
    Quote Originariamente inviata da maseeeeeee Visualizza il messaggio
    scusate ho commesso un errore e non mi fā modificare il messaggio!!!
    Ho sistemato io.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da maseeeeeee Visualizza il messaggio
    Ma per quanto riguarda l'array con[n] giuro che non vā
    Ma tu hai scritto
    const int n=4;

    come hai scritto nel primo post o solamente

    int n=4;

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    ho provato in tutti i due modi ma non vā|||

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da maseeeeeee Visualizza il messaggio
    ho provato in tutti i due modi ma non vā|||
    Con cosa stai compilando? Usi const o no? Non l'hai detto ...

    Se compili in C (e non usi C++) usa

    #define n 4

    all'inizio ed elimina la

    const int n=4;
    Ultima modifica di oregon; 22-08-2014 a 12:49
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Confermo quanto dice il nostro ottimo Oregon, quello stile di dichiarazione non č compatibile con il linguaggio C, anche se previsto dal C'99 e supportato da alcuni compilatori (in particolare da GCC, che in effetti ha per primo introdotto codesti VLA, poi contemplati dallo standard del 1999). Meglio usare una #define con un nome espressivo (ad esempio, ASIZE) per simulare una costante manifesta, anche se trattasi di prassi non felicissima.

    Inoltre la dimensione dei vettori, da passare alla funzioncina di calcolo, deve essere un size_t (unsigned int) o al limite un int, ma non certo un valore floating point! Occorre un intero senza segno, come dovunque siano coinvolti indici di array.
    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

  10. #10
    intanto grazie Oregon e M.A.W 1968 .allora per Oregon io ho provato sia con const int n che con int n!!!ma l'errore era uguale adesso con define vā!!!!per compilare ho provato sia gcc che c99 !!!!ma non andava purtroppo le dispense del mio prof sono piene di errori!!!!lui mette const int!!!!ma č un cartaceo!!!!per M.A.W 1968 grazie per la spiegazione tecnica!!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.