Claudio19488
14-06-2010, 19:17
Ciao a tutti
ecco il mio problema (tutto il giorno che ci provo ma.. :( )
Chiedo perdono per la mia scrittura che a voi programmatori esperti sembrerà uno "stupro" del compiler da parte mia.
Il problema è spiegato nel programma, è un tema d'esame che sto svolgendo in preparazione all'appello che farò venerdi 18/06.
Chiedo qualche consiglio in quanto l'algoritmo pare corretto, ma come potete vedere le ultime due cifre non sono quelle esatte :(
PS: ringrazio che risponderà
PPS: sono alle prime armi, conosco poco il C e la sua libreria :doh:
#include <stdio.h>
int main () {
/*
8. Si sviluppi un programma in linguaggio C che riceva in ingresso due vettori di interi,
ciascuno di 10 elementi. Supponendo che i due vettori siano già ordinati in modo crescente,
il programma deve creare e stampare un terzo vettore che rappresenti la “fusione” dei due
vettori acquisiti, ovvero che contenga tutti i 20 elementi ordinati tra loro in modo crescente.
Ad esempio, se il primo vettore contiene gli elementi
2 5 9 14 15 20 25 27 30 32
e il secondo vettore contiene gli elementi
3 5 10 11 12 22 23 24 26 27
Il programma crea e stampa un vettore contenente i seguenti elementi:
2 3 5 5 9 10 11 12 14 15 20 22 23 24 25 26 27 27 30 32
 
*/
	
int v1[10] , v2[10], v3[20] , i , i1, i2, i3;
	
printf("Inserisci una sequenza di 10 interi, in ordine crescente.\n");
	
for (i = 0 ; i < 10 ; i++ ) {
scanf("%d", &v1[i]);
}
	
printf("Inserisci ora un' altra sequenza di 10 interi, in ordine crescente.\n");
	
for (i = 0 ; i < 10 ; i++ ) {
scanf("%d", &v2[i]);
}
	
	
	
i1= 0;
i2= 0;
i3= 0;
while ( i3 < 20 ) {
		
if (v1[i1] > v2[i2] )
{
v3[i3] = v2[i2] ;
printf("%d ",v3[i3]);
i3++;
i2++;
			
}
else
{
v3[i3] = v1[i1];
printf("%d ",v3[i3]);
i3++;
i1++;
}
			
		
}
	
return 0 ;
}
Qui la finestra--
Inserisci una sequenza di 10 interi, in ordine crescente.
1
2
3
4
5
6
12
15
22
31
Inserisci ora un' altra sequenza di 10 interi, in ordine crescente.
1
2
3
9
12
14
22
29
40
42
1 1 2 2 3 3 4 5 6 9 12 12 14 15 22 22 29 31 10 11 logout
[Processo completato]
Ecco i due errori..
ecco il mio problema (tutto il giorno che ci provo ma.. :( )
Chiedo perdono per la mia scrittura che a voi programmatori esperti sembrerà uno "stupro" del compiler da parte mia.
Il problema è spiegato nel programma, è un tema d'esame che sto svolgendo in preparazione all'appello che farò venerdi 18/06.
Chiedo qualche consiglio in quanto l'algoritmo pare corretto, ma come potete vedere le ultime due cifre non sono quelle esatte :(
PS: ringrazio che risponderà
PPS: sono alle prime armi, conosco poco il C e la sua libreria :doh:
#include <stdio.h>
int main () {
/*
8. Si sviluppi un programma in linguaggio C che riceva in ingresso due vettori di interi,
ciascuno di 10 elementi. Supponendo che i due vettori siano già ordinati in modo crescente,
il programma deve creare e stampare un terzo vettore che rappresenti la “fusione” dei due
vettori acquisiti, ovvero che contenga tutti i 20 elementi ordinati tra loro in modo crescente.
Ad esempio, se il primo vettore contiene gli elementi
2 5 9 14 15 20 25 27 30 32
e il secondo vettore contiene gli elementi
3 5 10 11 12 22 23 24 26 27
Il programma crea e stampa un vettore contenente i seguenti elementi:
2 3 5 5 9 10 11 12 14 15 20 22 23 24 25 26 27 27 30 32
*/
int v1[10] , v2[10], v3[20] , i , i1, i2, i3;
printf("Inserisci una sequenza di 10 interi, in ordine crescente.\n");
for (i = 0 ; i < 10 ; i++ ) {
scanf("%d", &v1[i]);
}
printf("Inserisci ora un' altra sequenza di 10 interi, in ordine crescente.\n");
for (i = 0 ; i < 10 ; i++ ) {
scanf("%d", &v2[i]);
}
i1= 0;
i2= 0;
i3= 0;
while ( i3 < 20 ) {
if (v1[i1] > v2[i2] )
{
v3[i3] = v2[i2] ;
printf("%d ",v3[i3]);
i3++;
i2++;
}
else
{
v3[i3] = v1[i1];
printf("%d ",v3[i3]);
i3++;
i1++;
}
}
return 0 ;
}
Qui la finestra--
Inserisci una sequenza di 10 interi, in ordine crescente.
1
2
3
4
5
6
12
15
22
31
Inserisci ora un' altra sequenza di 10 interi, in ordine crescente.
1
2
3
9
12
14
22
29
40
42
1 1 2 2 3 3 4 5 6 9 12 12 14 15 22 22 29 31 10 11 logout
[Processo completato]
Ecco i due errori..