Programmino array

di il
15 risposte

Programmino array

Ragazzi non so proprio cosa fare, il codice mi sembra giusto.
vorrei creare un programma che confronti i valori di un array e mi dica se sono uguali.
Ecco il codice:
# include<stdio.h>
# define DIM 3

int main(){
	
	int array[3],i=0,j=1;
	
	for(i=0;i<=DIM;i++){
		scanf("%d",& array[i]);
	}
	
	for(i=0;i<DIM;i++){
		if (array[i]=!array[i++]) j=0;
	}
	if (j=1) printf("valori uguali");
	 else printf("valori non uguali");
	}
Il problema è che anche se metto valori diversi mi dice che i valori sono uguali.

15 Risposte

  • Re: Programmino array

    Questo

    =!

    che vuol dire ?

    P.S. Usa titoli adeguati per i thread altrimenti violi il regolamento ...
  • Re: Programmino array

    Ok era !=, (non è uguale).

    L'ho corretto ma è comunque sbagliato
  • Re: Programmino array

    Anche questo

    i<=DIM

    è sbagliato ... deve essere

    i<DIM

    nella prima for ...

    E nella seconda for non

    i<DIM

    ma

    i<DIM-1

    E nella if devi usare == e non =

    Insomma ... controlla un momento con attenzione quello che scrivi ...
  • Re: Programmino array

    gold16 ha scritto:


    ragazzi non so proprio cosa fare, il codice mi sembra giusto.
    vorrei creare un programma che confronti i valori di un array e mi dica se sono uguali.
    Ecco il codice:

    # include<stdio.h>
    # define DIM 3

    int main(){

    int array[3],i=0,j=1;

    for(i=0;i<=DIM;i++){
    scanf("%d",& array);
    }

    for(i=0;i<DIM;i++){
    if (array=!array[i++]) j=0;
    }
    if (j=1) printf("valori uguali");
    else printf("valori non uguali");
    }

    Il problema è che anche se metto valori diversi mi dice che i valori sono uguali.



    guarda che il tuo programma mette in confronto solo i primi 2 blocchi in questo if:if (array=!array[i++]) e poi dice se questi sono uguali, in pratica gli basta vedere se i primi 2 sono uguali o diversi per decidere...
  • Re: Programmino array

    E attenzione che scrivere array[i++] equivale a
    ...array[i]...;
    i = i + 1;
    Forse intendevi
    array[i+1]
    E se fai così, devi stare attento al numero di iterazioni, come ti ha detto oregon.
  • Re: Programmino array

    Ragazzi grazie per le risposte;
    Tuttavia non riesco a farlo funzionare, sono alle prime armi......

    Questo è il codice corretto secondo i vostri consigli:
    # include<stdio.h>
    # define DIM 3
    
    int main(){
    	
    	int array[3],i=0,j=1;
    	
    	for(i=0;i<DIM;i++){
    		scanf("%d",& array[i]);
    	}
    	
    	for(i=0;i<DIM-1;i++){
    		if (array[i]!=array[i+1]) j==0;
    	}
    	if (j==1) printf("valori uguali");
    	 else printf("valori non uguali");
    	}
    ma il risultato è lo stesso di prima. D:
  • Re: Programmino array

    gold16 ha scritto:


    Ragazzi grazie per le risposte;
    Tuttavia non riesco a farlo funzionare, sono alle prime armi......

    Questo è il codice corretto secondo i vostri consigli:

    # include<stdio.h>
    # define DIM 3

    int main(){

    int array[3],i=0,j=1;

    for(i=0;i<DIM;i++){
    scanf("%d",& array);
    }

    for(i=0;i<DIM-1;i++){
    if (array!=array[i+1]) j==0;
    }
    if (j==1) printf("valori uguali");
    else printf("valori non uguali");
    }

    ma il risultato è lo stesso di prima. D:


    Non mettere il " ; " alla fine dell if o else , piuttosto vai a capo:
    If(j==1)
    Printf( bla, bla)

    Poi non capisco, vuoi mettere un return 0 alla fine del programma?

    Poi si mette =! e non !=

    E non capisco perche hai messo i<dim-1 , se fai partire il contatore da 0 basta che fai i<Dim...
  • Re: Programmino array

    Hai presente quel pulsantino con su scritto code?
    ti sei chiesto a cosa possa servire? in caso contrario leggi qui

    cosa significa che devi confrontare un vettore e ti deve dire se sono uguali?
    Devi vedere se c'è almeno una coppia di valori che coincidono?
    io a mente farei:
    il primo == secondo?
    il primo == terzo?
    ...
    il secondo == terzo?
    n == n +1 ?
    
    #define N 5
    int main()
    {
        int v[N]={1,5,4,2,4};
        int i,k;
        for ( i = 0; i < N - 1; ++i)
            for ( k = i + 1; k < N; ++k)
                if ( v[i] == v[k] ) 
                    {puts("numeri uguali"); return 0;}
        puts("tutti diversi");
        return 0;
    }
    
  • Re: Programmino array

    AHHHHHHHHHHHH!!!!!!
    E' tutto sbagliato....
  • Re: Programmino array

    
    #include <stdio.h>
    #define dim 10
    int main()
    {
    	int n[dim],i,somma=0;
    	printf("Inserire i dati\n");
    	for (i=0;i<dim;i++)
    	{
    		scanf("%d",&n[i]);
    	}
    	
    for(i=0;i<dim;i++)
    {
    	somma=somma+n[i];
    }
    	if (somma/10==n[0])
    	printf("\nVettore uguale\n");
    	else
    	printf("\nVettore contiene dati diversi\n");
    }
    	
    
    
    Qui una soluzione alternativa.
  • Re: Programmino array

    È tutto sbagliato?
    cosa? quando? come e perché?

    @impoooh non penso che volesse vedere se il vettore fosse tutto uguale, penso anche che quella che hai postato sia una delle peggiori possibili implementazioni che si potesse fare.
    Se volevi postare qualcosa di alternativo potevi fare:
    
    if ( !(v[0] ^ v[1] ^ v[2] ^ v[0] ) )
        puts("equal");
    
  • Re: Programmino array

    @vbextreme Credo proprio che sia giusto il fatto di voler vedere se tutto il vettore ha dati uguali, se no non ha senso...
  • Re: Programmino array

    È fin troppo semplice vedere se tutto un vettore è uguale:
    
    for ( i = 1; i <N; ++i )
       if ( v[0] != v[i] ) return DIVERSO;
    return UGUALE;
    
    Bo!??!
  • Re: Programmino array

    Vi ringrazio per le risposte, ma come vi ho detto sono alle prime armi, e il mio prof. universitario ha detto di non imparare cose nuove, perchè se le usiamo all'esame ci boccia.

    Detto questo ringrazio impoooh e vbextreme per le ultime soluzioni postate, non ci avevo proprio pensato.
Devi accedere o registrarti per scrivere nel forum
15 risposte