[RISOLTO] While o for?

di il
9 risposte

[RISOLTO] While o for?

Ciao a tutti, volevo chiedervi una cosa che non riesco a fare in C++.

In pratica ho due array A e B. Vorrei scorrere il primo array in modo diverso dal secondo (diciamo più lentamente). Mi spiego meglio:

A = [2,11,6,5,9];
B = [2,3,4,11,7,5];

I passaggi vorrei che fossero così ,li scrivo a parole per farvi capire meglio:

1- Parto dall'elemento 2 dell'array A e controllo se ce ne sta uno uguale nell'array B. Quindi controllo il 2 (A) col 2 (B) lo trovo, incremento il contatore che punta alla posizione di A (quindi ora è al numero 11).

2- Faccio ritornare il contatore che punta all'elemento di B a 0 (primo elemento). Quindi con l'11 controllo: 11 è = 2? no! incrementa la posizione di B. 11 è = 3 ? no! incrementa la posizione B. 11 è = 4? no! incrementa la posizione di B. 11 è = 11? si. Incrementa la posizione di A. (vai al 3 elemento posizione 2 ossia al numero 6).

3- Ripeto i passaggi con tutti gli altri elementi.

In pratica prendo il primo elemento di A e lo confronto con tutti finchè non ne trovo uno uguale.Se ne trovo uno uguale li sottraggo quindi diventa 0 e lo metto nell'array A.
Ad esempio il 2(A) è = 2(B) si! A[k] = A[k] - B ==> A = {0,11,6,5,9}, lo faccio finche l'array A non diventa:

A = {0,0,6,0,9};

Ho scritto il codice ma è sbagliato mi restituisce solo il 2 e l'11. Nel codice provo a stampare solo gli elementi in comune.


Codice:


#include <iostream>

using namespace std;

int main()
{
        int a[5] = {2,11,6,5,9};
        int b[6] = {2,3,4,11,7,5};

        int k = 0;
        int i = 0;

        while(k < 4)
        {

                while(i < 5)
                {
                        

                        if(a[k] == b[i])
                        {
                                cout << a[k] <<"\n";

                          
                                k++;
                                i = 0;

                       
                        }

                                else
                                {
                               
                                        i++;
                                }

                                    

                }
        }

return 0;
}

9 Risposte

  • Re: [RISOLTO] While o for?

    While e for fanno la stessa cosa, bisogna solo prestare attenzione all'inizializzazione dell'indice nel ciclo while. Il codice può essere fatto così usando il while
    
    i=0;
             while(i<=4){j=i;
                              while(j<=5) {if(A[i]==B[j]) {printf("   %d",A[i]);
                                                                      aux=B[i];
                                                                       B[i]=B[j];
                                                                       B[j]=aux;}j++;}i++;}  
    ho fatto lo scambio in B così nei futuri controlli non ripete il confronto con termini di B già confrontati
  • Re: [RISOLTO] While o for?

    L'unica cosa è che non è in C ma in C++. Non so bene i termini che usi (%d,aux) in C ..se capisco la logica lo riscrivo in C++.
  • Re: [RISOLTO] While o for?

    Al posto di printf puoi tranquillamente usare cout
    non stampo aux stampo A
  • Re: [RISOLTO] While o for?

    Ma %d che vuol dire?
  • Re: [RISOLTO] While o for?

    Scusa se t'ho fatto bloccare su questo, %d è il simbolo per tipo int che si mette nel comando printf che trovi nella libreria stdio.h. al posto di tutto il printf metti cout<<" "<<A non so se l'ho scritto bene non uso mai iostream
    i=0;
             while(i<=4){j=i;
                              while(j<=5) {if(A[i]==B[j]) {cout<<"   "<<A[i];
                                                                      aux=B[i];
                                                                       B[i]=B[j];
                                                                       B[j]=aux;}j++;}i++;} 
  • Re: [RISOLTO] While o for?

    Raga ma è così dificile usare l'identazione?
    
    i=0;
    
    while(i<=4)
    {
    	j=i;
    	while(j<=5) 
    	{
    		if(A[i]==B[j]) 
    		{
    			cout<<"   "<<A[i];
    			aux=B[i];
    			B[i]=B[j];
    			B[j]=aux;
    		}
    		j++;
    	}
    	i++;
    }
    
    Non vi sembra che il codice sia scritto meglio e si capisce immediatamente cosa stai cercando di far trasmettere? Ricordo anche che gli spazi sono gratis.
  • Re: [RISOLTO] While o for?

    Io ancora non ho capito sto "aux" non l'ho mai usato..che funzione ha?
  • Re: [RISOLTO] While o for?

    Aux non ha una funzione è un nome di variabile per lo scambio. la puoi chiamare in qualunque altro modo. Comunque ho fatto una cavolata a mettere j=i perché a seconda di come sono messi i termini dell'array non viene e quindi non serve nemmeno aux. Scusami.

    alla fine è
    
    i=0;
    
    while(i<=4)
    {
       j=0;
       while(j<=5) 
       {
          if(A[i]==B[j]) 
          {
             cout<<"   "<<A[i];
             
          }
          j++;
       }
       i++;
    }
    
  • Re: [RISOLTO] While o for?

    Ora funziona ma con j = 0 non con j = 1 !
    Grazie ! Se ho problemi posto qui !
Devi accedere o registrarti per scrivere nel forum
9 risposte