Anonimo
Anonimo ha chiesto in Computer e InternetProgrammazione e Design · 1 mese fa

Aiuto programma in c?

questo è il testo realizzare un programma che letti da tastiera 2 un array di n numeri interi deve dire se sono uguali.

non capisco cosa non vada

#include <stdio.h>

int main ()

{

int m=0;

int r=0;

int a[m],i, n,b[r];

printf("Quanti elementi? \n");

scanf("%d",&m);

printf("Quanti elementi? \n");

scanf("%d",&r);

if(a[m]==b[r])

printf("Gli array sono uguali ");

else

printf("Gli array non sono uguali ");

}

2 risposte

Classificazione
  • Anonimo
    1 mese fa
    Risposta preferita

    In "C" gli array e le loro dimensioni, devono essere dichiarati prima. Se le dimensioni sono diverse, è evidente che non sono uguali. Bisognerebbe prevedere una funzione di ordinamento, perché gli elementi potrebbero essere inseriti in ordine diverso, ad esempio, potresti inserire 1, 2, 3, 4 nel primo array e 3, 2, 4, 1 nel secondo e il programma risponderebbe che "non sono uguali". 

    #include <stdio.h>

    main ()

    {

     int a[50],b[50];

        int m,i,n,r;

    printf("Quanti elementi? \n");

    scanf("%d",&m);

    printf("Quanti elementi? \n");

    scanf("%d",&r);

    if(m != r)

    {

      printf("Gli array hanno dimensione diversa.\n ");

      return;

    }

    else

      for(i=0;i<m;i++)

      {

        printf("Elemento primo array: ");

        scanf("%d",&a[i]);

        printf("Elemento secondo array: ");

        scanf("%d",&b[i]);

        if(a[i] != b[i])

        {

         printf("Sono diversi\n");

         return;

        };

      }

    printf("Sono uguali\n");

    system("pause");

    }

    che risulta alquanto banale.

  • 1 mese fa

    Diciamo che hai sbagliato alcune cose:

    1) il main è di tipo int quindi DEVE avere un return, in particolare dopo l'ultimo printf scrivi:

    system ("pause"); //altrimenti la console si chiude in un millisecondo e non riesci a leggere il risultato

    return 0;

    2) scritto così cioè a[m]==b[r] significa che l'ultimo elemento dell'array "a" è uguale all'ultimo elemento dell'array "b". Ben diverso da dire che i due array sono uguali (cioè tutti gli elementi coincidono).

    3) hai dichiarato "n" che non ti serve, inoltre m=0 e r=0 è sbagl, metti solo la dichiarazione delle variabili (il valore lo inserisci tu con scanf).

    Procediamo alla correzione, dopo lo scanf scrivi questo codice:

    etichetta:

    if (m!=r){

    printf ("gli array non sono uguali\n")

    }else {

    for(i=0;i<m;i++){

    if (a [i]!=b [i]){m+=1;break;}

    }

    }

    if (m!=r){goto etichetta;}else {printf("array uguali\n");}

    È un procedimento particolare nel senso che ho creato un salto nel codice, ma di base soddisfa la richiesta.

Altre domande? Fai una domanda e ottieni le risposte che cerchi.