[C] Problema ciclo for

di il
5 risposte

[C] Problema ciclo for

Ciao a tutti , dovrei svolgere il seguente esercizio

Esercizio 2. Si scriva un programma C che:
a. legga 2 vettori di N elementi interi (con N costante predefinita)
b. stabilisca se i due vettori contengono gli stessi elementi, anche disposti in ordine differente
Esempio: siano dati i due vettori seguenti:
v1 ? 15 3 12 13 29
v2 ? 15 29 13 3 12
questi contengono gli stessi valori, anche se in posizioni differenti.
Invece, i due vettori seguenti:
v1 ? 11 3 12 18 29
v2 ? 12 29 13 4 12
non contengono gli stessi valori.

Questa è la mi soluzione
#define N 5
int main()
{
   int vett1[N],vett2[N],i,k,trovato;

   printf("Inserisci il primo vettore di 5 elementi: \n");
   for(i=0;i<N;i++)
    {
     scanf("%d",&vett1[i]);
    }

    printf("Inserisci secondo vettore di 5 elementi: \n");
    for(i=0;i<N;i++)
    {
        scanf("%d",&vett2[i]);
    }


    trovato=1;
    for(i=0;i<N;i++ && trovato==1)
    {
     trovato=0;
      for(k=0;k<N;k++ && trovato==0)
     {
      if(vett1[i]==vett2[k])
      {
       trovato=1;
      }
     }
    }

    if(trovato==1)
    {
        printf("I due vettori sono uguali");
    }
    else
        {
         printf("I due vettori sono diversi");
        }
    return 0;
C'è un problema : nel for con trovato dove c'è la condizione trovato==1 capita che entra anche se trovato è =0 e non capisco proprio il perché ( l'ho testato con il debug)
Come risolvo?
Grazie!!

5 Risposte

  • Re: [C] Problema ciclo for

    Non si capisce il metodo che vorresti usare per risolvere il problema e soprattutto l'uso che fai di

    i++ && trovato==1

    i++ && trovato==0

    che non ha senso nella for in quella posizione.
  • Re: [C] Problema ciclo for

    oregon ha scritto:


    Non si capisce il metodo che vorresti usare per risolvere il problema e soprattutto l'uso che fai di

    i++ && trovato==1

    i++ && trovato==0

    che non ha senso nella for in quella posizione.
    Intendo che per entrare in quel for oltre al fatto che i<N deve essere soddisfatta la condizione trovato==1. Nel caso in cui trovato sia diverso da uno non voglio che entri in quel for..
  • Re: [C] Problema ciclo for

    Forse confondi la for con la while ... non c'entra nulla quello che dici.
  • Re: [C] Problema ciclo for

    oregon ha scritto:


    Forse confondi la for con la while ... non c'entra nulla quello che dici.
    Può essere...quindi in un for non posso mettere la condizone trovato==1?
  • Re: [C] Problema ciclo for

    piccoloinformatico ha scritto:


    oregon ha scritto:


    Forse confondi la for con la while ... non c'entra nulla quello che dici.
    Può essere...quindi in un for non posso mettere la condizone trovato==1?
    Nel ciclo for i parametri sono (inizializzazione della variabile contatore; condizione; step)
    Nel primo parametro in genere la variabile contatore viene resa nulla. Nella condizione invece viene inserita una condizione booleana che serve a far eseguire l'iterazione fin quando la condizione sarà vera. Nello step invece viene decisa una possibile incrementazione/decrementazione della variabile contatore.
    Potresti mettere trovato==1 nella condizione del ciclo che è quella al centro anche se si potrebbe fare in un altro modo.
Devi accedere o registrarti per scrivere nel forum
5 risposte