Aiuto: C: dati 2 array ordinati fonderli in uno solo ordinat
come ho scitto nel titolo ho 2 array di numeri interi ordinati e voglio crearne uno nuovo ordinato che contenga l'unione dei 2 array di partenza. Ho provato a scrivere questo codice nel caso particolare di un array di 5 elementi:
#include
#include
int main(){
int a[5], b[5], i, j, k, c[10];
a[0]=1; a[1]=4; a[2]=11; a[3]=27; a[4]=88; b[0]=3; b[1]=5; b[2]=13; b[3]=24; b[4]=44;
i=0;
j=0;
while (i<5 && j<5){
if (a>b){
c[i+j]=b[j];
j++;
}
else{
c[i+j]=a;
i++;
}
}
for (k=i; k<5; k++) c[5+k]=a[k];
for (k=j; k<5; k++) c[5+k]=b[k];
for (i=0; i<10; i++) printf("%d ", c);
scanf("%d", &k);
return 0;}
però non mi fa quello che voglio. E' un problema del codice? o magari è un problema del programma? (io uso DEV C++ e mi hanno detto che non è molto buono...)
#include
#include
int main(){
int a[5], b[5], i, j, k, c[10];
a[0]=1; a[1]=4; a[2]=11; a[3]=27; a[4]=88; b[0]=3; b[1]=5; b[2]=13; b[3]=24; b[4]=44;
i=0;
j=0;
while (i<5 && j<5){
if (a>b){
c[i+j]=b[j];
j++;
}
else{
c[i+j]=a;
i++;
}
}
for (k=i; k<5; k++) c[5+k]=a[k];
for (k=j; k<5; k++) c[5+k]=b[k];
for (i=0; i<10; i++) printf("%d ", c);
scanf("%d", &k);
return 0;}
però non mi fa quello che voglio. E' un problema del codice? o magari è un problema del programma? (io uso DEV C++ e mi hanno detto che non è molto buono...)
Risposte
"fransis2":
#include
#include
int main(){
int a[5], b[5], i, j, k, c[10];
a[0]=1; a[1]=4; a[2]=11; a[3]=27; a[4]=88; b[0]=3; b[1]=5; b[2]=13; b[3]=24; b[4]=44;
i=0;
j=0;
while (i<5 && j<5){
if (a>b){
c[i+j]=b[j];
j++;
}
else{
c[i+j]=a;
i++;
}
}
for (k=i; k<5; k++) c[5+k]=a[k];
for (k=j; k<5; k++) c[5+k]=b[k];
for (i=0; i<10; i++) printf("%d ", c);
scanf("%d", &k);
return 0;}
La condizione in grassetto non mi torna. Prova a sostituirla con
if(a[i] > b[j])
Non capisco poi a cosa serva l'ultima scanf...
PS: per rendere più comprensibile il codice ti conviene scriverlo fra i tag


ciao,
che gran casino, scusa fai cosi:
metti i due array a e b dentro c, e dopo ordini tutto assieme...no ?
e poi ordini c in tutta tranquillita,
tu invece, prima ordini a, poi b e poi metti tutto su c,
e' comunque, scusa, ma non sta a mettere i dati in a e b gia ordinati,
non per altro ma dovresti considerare due array generici..no?
se no dopo cosa ti serviva ordinarli separatamente se erano gia ordinati
che gran casino, scusa fai cosi:
metti i due array a e b dentro c, e dopo ordini tutto assieme...no ?
#include <stdio.h> #include <math.h> int main(){ int a[5], b[5],, c[10]; a[0]=1; a[1]=4; a[2]=11; a[3]=27; a[4]=88; b[0]=3; b[1]=5; b[2]=13; b[3]=24; b[4]=44; for (i=0; i<5; i++) c[i]=a[i]; for (i=0; i<5; i++) c[5+i]=b[i];
e poi ordini c in tutta tranquillita,
tu invece, prima ordini a, poi b e poi metti tutto su c,
e' comunque, scusa, ma non sta a mettere i dati in a e b gia ordinati,
non per altro ma dovresti considerare due array generici..no?
se no dopo cosa ti serviva ordinarli separatamente se erano gia ordinati