Manugal
14-11-2005, 18:03
Ciao
Molto spesso quando mi capita di fare programmi in C non stampa niente. Da quali fattori può dipendere?
Ad esempio ora ho scritto questo programma che permette di fondere due array ordinati in un altro array mantenendo sempre l'ordine (una sorta di mergesort).
#include <stdio.h>
#include <stdlib.h>
int *fusione(int [], int [], int, int);
void stamparray(int []);
int main(void){
int len1,len2,i=0,j=0;
printf("Inserisci lunghezza del primo vettore: ");
scanf("%d", &len1);
int *t=(int *) malloc(sizeof(int)*len1);
for( ; i<len1; ++i)
scanf("%d", &t[i]);
printf("Inserisci lunghezza del secondo vettore: ");
scanf("%d", &len2);
int *s=(int *) malloc(sizeof(int)*len2);
for( ; j<len2; ++j)
scanf("%d", &s[j]);
printf("%s", fusione(t,s,len1,len2));
return 0;
}
int *fusione(int t[], int s[], int l1, int l2){
int *result=(int*) malloc(sizeof(int)*(l1+l2));
int i=0,j=0,k=0;
while(i<l1 && j<l2)
if(t[i]<=s[j])
result[k++]=t[i++];
else
result[k++]=s[j++];
while(i<l1)
result[k++]=t[i++];
while(j<l2)
result[k++]=s[j++];
return result;
}
Non capisco perché non stampa niente.. :cry: Da che dipende? Grazie
Molto spesso quando mi capita di fare programmi in C non stampa niente. Da quali fattori può dipendere?
Ad esempio ora ho scritto questo programma che permette di fondere due array ordinati in un altro array mantenendo sempre l'ordine (una sorta di mergesort).
#include <stdio.h>
#include <stdlib.h>
int *fusione(int [], int [], int, int);
void stamparray(int []);
int main(void){
int len1,len2,i=0,j=0;
printf("Inserisci lunghezza del primo vettore: ");
scanf("%d", &len1);
int *t=(int *) malloc(sizeof(int)*len1);
for( ; i<len1; ++i)
scanf("%d", &t[i]);
printf("Inserisci lunghezza del secondo vettore: ");
scanf("%d", &len2);
int *s=(int *) malloc(sizeof(int)*len2);
for( ; j<len2; ++j)
scanf("%d", &s[j]);
printf("%s", fusione(t,s,len1,len2));
return 0;
}
int *fusione(int t[], int s[], int l1, int l2){
int *result=(int*) malloc(sizeof(int)*(l1+l2));
int i=0,j=0,k=0;
while(i<l1 && j<l2)
if(t[i]<=s[j])
result[k++]=t[i++];
else
result[k++]=s[j++];
while(i<l1)
result[k++]=t[i++];
while(j<l2)
result[k++]=s[j++];
return result;
}
Non capisco perché non stampa niente.. :cry: Da che dipende? Grazie