HELP!! esercizio di ordinamento

di il
5 risposte

HELP!! esercizio di ordinamento

Scusate se posto continuamente argomenti nuovi ma ne ho bisogno e siete gli unici in grado di aiutarmi su queste cose ahahah

Devo creare un programma che svolga il seguente esercizio:
Scrivere un programma (no ricorsivo) che accetti in input due array ordinati di interi
e restituisca in output l’unione ordinata dei due array.


Ho già scritto il codice e l'ho compilato e fin li tutto ok solo che il programma mi restituisci un array ordinato ma che ha come ultimo posto uno zero...
Il codice scritto da me è il seguente:
#include <stdio.h>
int main(){
	int n;
	int m;
	int *a;
	int *b;
	int *c;
	printf ("inserire posti primo array = ");
	scanf ("%d",&n);
	a=(int*)malloc(n*sizeof(int));
	printf ("inserire posti secondo array = ");
	scanf ("%d",&m);
	printf ("\n\n----------------------\n\n");
	b=(int*)malloc(m*sizeof(int));
	int p=n+m;
	c=(int*)malloc(p*sizeof(int));
	int i;
	printf ("            CARICA PRIMO ARRAY\n\n");
	for (i=0; i<n; i++) {
		printf ("inserisci elemento al posto %d = ",i+1);
		scanf ("%d",&a[i]);
		if ((a[i]<a[i-1]) && (i!=0)) {
			printf ("ERRORE:ARRAY NON ORDINATO!!!!\n");
			i--;
		}
	}
	printf ("\n\n----------------------\n\n");
	printf ("            CARICA SECONDO ARRAY\n\n");
	for (i=0; i<m; i++) {
		printf ("inserisci elemento al posto %d = ",i+1);
		scanf ("%d",&b[i]);
		if ((b[i]<b[i-1]) && (i!=0)) {
			printf ("ERRORE:ARRAY NON ORDINATO!!!!\n");
			i--;
		}
	}
	int j=0;
	int y=0;
	int x=0;
	while ((y<n) || (j<m)) {
		if (a[y]<=b[j]) {
			c[x]=a[y];
			y++;
		}
		else if (a[y]>b[j]){
			c[x]=b[j];
			j++;
		}
	x++;
	}
	if (y=n) {
		for (i=j; i<m; i++) {
			c[x]=b[i];
			x++;
		}
	}
	else if (j=m) {
		for (i=y; i<n; i++) {
			c[x]=b[i];
			x++;
		}
	}
	printf ("\n\n----------------------\n\n");
	printf ("        VISUALIZZA ARRAY INCROCIO\n\n");
	for (i=0; i<p; i++) {
		printf ("array di incrocio al posto %d = %d\n",i+1,c[i]);
	}
	printf ("\n\n-------------------------------------------\n\n");
return 0;
}
Qualcuno mi sa dire il perchè? grazie della pazienza ahahah

5 Risposte

Devi accedere o registrarti per scrivere nel forum
5 risposte