Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    7

    [C++] Array: Somma di elementi (di un...)

    Salve, mi sono appena iscritto al forum ma vi seguo (in particolare nella sezione tutorial) da tantissimo tempo

    Tagliamo corto e passiamo al problema.
    Ciò che devo costruire è un programma in grado di ricevere da tastiera due sequenze di numeri reali (sia positivi sia negativi), la prima composta da n numeri (x1, x2, x3, ... , xn), la seconda da m numeri (y1, y2, y3, ..., ym).
    Sia k il minimo tra i valori di n ed m, il programma dovrà scrivere a video la sequenza di numeri data dalla somma del primo elemento delle due sequenze inserite e così via, fino al k-esimo elemento delle due sequenze inserite.
    In altre parole, a video dovrà esserci la seguente sequenza: x1 + y1, x2 + y2, ..., xk + yk.

    Provando a risolvere il problema con l'utilizzo degli array (è l'argomento del capitolo al quale è legato l'esercizio), ho scritto questo codice:

    codice:
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    
    int main () {
        
        int n, m, k;
        double A[n], B[m];
        
        cout << "Di quanti elementi deve essere composto il PRIMO array?\n";
        cin >> n;
        cout << "Bene. Di quanti elementi vuoi che sia composto il SECONDO array?\n";
        cin >> m;
        
        for ( int i = 0; i < n; i++) {
            cout << "Inserisci un elemento del PRIMO array: ";
            cin >> A[i];
        }
        
        for ( int i = 0; i < m; i++) {
            cout << "Inserisci un elemento del SECONDO array: ";
            cin >> B[i];
        }
        // cerca il minimo tra il numero degli elementi degli array A[n] e B[m], e memorizza il valore nella variabile k
        if ( n <= m ) k = n;
        else k = m;
        
        for ( int i = 0; i < k; i++ ) cout << A[i] + B[i] << " ";
        
        cout << endl;
        return 0;
    }
    Il problema è che mi da in output cose del genere e non riesco a capirne il motivo.

    codice:
    Di quanti elementi deve essere composto il PRIMO array?
    7
    Bene. Di quanti elementi vuoi che sia composto il SECONDO array?
    6
    Inserisci un elemento del PRIMO array: 1
    Inserisci un elemento del PRIMO array: 2
    Inserisci un elemento del PRIMO array: 3
    Inserisci un elemento del PRIMO array: 4
    Inserisci un elemento del PRIMO array: 5
    Inserisci un elemento del PRIMO array: 6
    Inserisci un elemento del PRIMO array: 7
    Inserisci un elemento del SECONDO array: 1
    Inserisci un elemento del SECONDO array: 2
    Inserisci un elemento del SECONDO array: 3
    Inserisci un elemento del SECONDO array: 4
    Inserisci un elemento del SECONDO array: 5
    Inserisci un elemento del SECONDO array: 6
    2 4 6 1.39065e-309 4.244e-314 1.39065e-309 
    Sapete indicarmi dov'è che sbaglio?

    Thanks.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    E' sbagliato (e non ha senso) scrivere

    codice:
        int n, m, k;
        double A[n], B[m];
    Le linee di un programma vengono eseguite in sequenza.

    Quando viene eseguita la seconda, le variabili n e m non hanno un valore definito.

    Inoltre, molto probabilmente stai usando DevC++ (e il relativo compilatore) che permette questo tipo di utilizzo dell'array (C99), ma sarebbe meglio utilizzare l'allocazione dinamica della memoria e, se non la sai ancora usare, usare delle costanti per n e m.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    7
    E' sbagliato (e non ha senso) scrivere

    codice:
        int n, m, k;
        double A[n], B[m];
    Le linee di un programma vengono eseguite in sequenza.

    Quando viene eseguita la seconda, le variabili n e m non hanno un valore definito.
    OK. Se ho capito il problema, chiedendo all'utente il valore di n ed m PRIMA della dichiarazione dell'array, risolverei il problema, giusto?

    Inoltre, molto probabilmente stai usando DevC++ (e il relativo compilatore) che permette questo tipo di utilizzo dell'array (C99), ma sarebbe meglio utilizzare l'allocazione dinamica della memoria e, se non la sai ancora usare, usare delle costanti per n e m.
    Non uso DevC++ e, purtroppo, ancora non ho studiato l'allocazione dinamica della memoria. Invece di utilizzare delle costanti, potrei rendere il codice + generico utilizzando la soluzione espressa sopra, sbaglio?

    Grazie per le risposte.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da jok1ng
    OK. Se ho capito il problema, chiedendo all'utente il valore di n ed m PRIMA della dichiarazione dell'array, risolverei il problema, giusto?
    Se il compilatore che usi adotta lo standard C99 puoi farlo. Altrimenti avrai un errore anche in questo caso.

    Non uso DevC++ e, purtroppo, ancora non ho studiato l'allocazione dinamica della memoria. Invece di utilizzare delle costanti, potrei rendere il codice + generico utilizzando la soluzione espressa sopra ...
    Le costanti indicano la dimensione *massima* dei vettori, non quella scelta dall'utente (che può essere scelta dall'utente a patto che sia entro quella massima)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.