Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    4

    [C++] Variabile booleana non memorizza valore.

    Salve ragazzi,
    premetto che sono nuovo nel forum e che mi sono iscritto per chiedere un consiglio su un problema che mi affligge da stamattina.
    Sto svolgendo degli esercizi in C++ per prepararmi all'esame che dovr� dare in questo mese e precisamente devo scrivere un programma che legge un array di interi e, se contiene numeri compresi nel range -50/50 li deve dare in output nello stesso ordine in cui appaiono nell'array.
    Nel caso in cui nell'array non ci fossero i numeri interessati, dovrebbe stampare "VUOTO".
    Mi sono organizzato cos�: ho dichiarato due array, uno che memorizza la sequenza completa da input, e uno che memorizza solo i valori interessati. In pi� ho dichiarato una variabile booleana inizializzata inizialmente a false, che diventer� true quando si incontra un numero interessato. Il programma termina con un if/else, e se la bool � true stamper� i numeri, altrimenti "VUOTO".
    Il problema � che la variabile sembra non volersi muovere dal valore iniziale false e di conseguenza stamper� sempre "VUOTO".
    Non so perché ma ho la convinzione che l'errore che ho fatto è banalissimo
    Vi prego di aiutarmi e di spiegarmi l'errore. Grazie in anticipo.

    codice:
    #include <iostream>
    using namespace std;
    
    
    const int dim = 10;
    int* array = new int[dim];
    int* array1 = new int[dim];
    bool X = false;
    
    
    void leggiArray(int array[], const int dim)
    {
     for(int i=0; i<dim; i++)
        {
          cin >> array[i];
        }
    }
    
    
    void copiaElementi(int array[], int array1[], const int dim, bool X)
    {
     for(int j=0; j<dim; j++)
        {
          if(array[j] < -50 || array[j] > 50)
             {            
            X = true;
            array1[j] = array[j];
             }
          else
                continue;
        }
     delete [] array;
    }
    
    
    void stampaArray(int array1[])
    {
     for(int z=0; z<dim; z++)
        {
         if(array1[z] != 0)
            cout << array1[z];
         else
            continue;
        }
    }
    
    
    int main()
    {
     leggiArray(array,dim);
     copiaElementi(array,array1,dim,X);
     if(X == true)
        stampaArray(array1);
     else
        cout << "VUOTO";
    
    
     return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Viene modificata la X dello stack di copiaElementi, non la X globale.
    Ricorda che locale batte sempre globale. Quindi o togli la X globale e passi il parametro per reference oppure togli la X di copiaElementi
    Ultima modifica di shodan; 04-07-2016 a 21:18
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    4
    Grazie Shodan!!

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.