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
- Anonimo1 mese faRisposta 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.
- Giulio MLv 71 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.