Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    residenza
    Parma
    Messaggi
    7

    [C++] intersezione fra due array inseriti dall'utente

    ciao ragazzi,
    date due sequenze di numeri A e B con numero di elementi definiti dall utente, devo stampare una sequenza C di numeri presenti sia in A che in B.. riesco perfettamente a realizzare la prima parte del programma, in cui l'utente inserisce i dati..e poi non riesco a continuare..
    codice:
    #include <iostream>
    #include <cmath>
    #include <stdlib.h>
    using namespace std;
    main ()
      int n=0; // NMERO DI ELEMENTI DI A
      int i; // i rappresenta i numeri contenuti nell'array A
      int A[n];//ARRAY A
      int m=0; //NUMERI DI ELEMENTI DI B
      int j; // j rappresenta i numeri contenuti nell'array B
      int B[m]; // ARRAY B
    
    
     
        cout<<"Questo è un programma che legge due sequenze A e B rispettivamente di interi n ed                  m dati di input e ne determina e stampa l'intersezione insiemistica"<<endl<<endl;
        
            cout<<"Dammi il numero di elementi della prima sequenza: "<<endl;
        
            cin>>n;
        
            for(i=0; i<n; i++)
            {
               cout<<"Dammi un numero: ";
               cin>>A[n];
            }
    
    
        cout<<"Dammi il numero di elementi della seconda sequenza: "<<endl;
     
        cin>>m;
    
        for(j=0; j<m; j++)
            {
                  cout<<"Dammi un numero: ";
              cin>>B[m];
            }        
            
    // FINO A QUI HO INSERITO LE SQUENZE DI NUMERI DI A E DI B
    
    //lo scopo dell'esercizio,  quello di far funzionare il programma, scrivendolo nel modo piu semplice //possibile.. come faccio?
    //ho provato a mettere un ciclo while (che cercasse il primo elemento di A in B) dentro a un ciclo for che ripetesse il ciclo while per ogni elemento di A..ma non riesco!! cosa sbaglio nella sintassi dei cicli?
    
             for (i=0; i<n; i++) 
                   {
                       j = 0;
                
                           while(j<m && A[i]!=B[j])
                             {
                                 j++;
                              }
        
    //FINCHE L'ELEMENTO DI A PROCESSATO E DIVERSO DAL PRIMO ELEMENTO DI B, ALLORA CONFRONTA TUTTI GLI ELEMENTI DI B CON L'ELEMENTO DI A PROCESSATO
                  if(j<m && A[i]==B[j])
                      {
                         cout<<j<<endl;            
                       }
    //SE TROVO CHE HANNO UN ELEMENTO IN COMUNE LO SCRIVO    
            }
        
    return 0;
    }
    Ultima modifica di MItaly; 15-01-2015 a 09:48 Motivo: Aggiunti tag CODE

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao, il codice va postato nei tag CODE.

    Inoltre direi che c'è subito un errore all'inizio del codice: inizializzi sia n che m a 0 e poi allochi gli array. Solo in seguito chiedi all'utente quanto devono valere n e m, ma ormai gli array sono allocati con dimensione zero. Vedi bene che qualcosa non va.
    Poi è sbagliata la lettura, che è il motivo per cui sembra che ti funzioni (anche se ovviamente non è così):

    codice:
    for(i=0; i<n; i++)
    {
         cout<<"Dammi un numero: ";
         cin>>A[n];
    }

    Con quel cin>>A[n] stai inserendo il valore sempre nella cella n, mentre dovrebbe essere cin >> A[i]. Ovviamente dopo aver corretto quello che ti dicevo sopra.

    Insomma... codice da rivedere!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.