PDA

View Full Version : [C] Algoritmo non corretto


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..

Rsk
14-06-2010, 19:32
...

Anche se è possibile ottimizzarlo è comunque corretto..
Per sicurezza l'ho provato e l'output è quello giusto.

Teo@Unix
14-06-2010, 19:40
Ecco i due errori..

Se fai un debug non ne esci scusa?

Claudio19488
14-06-2010, 19:50
The Debugger has exited with status 48.The Debugger has exited with status 48.

Lo status 48 corrisponde appunto a quell' incremento della variabile "i2" che mi crea disastri ma non saprei come correggerla :(

rеpne scasb
14-06-2010, 20:18

Claudio19488
14-06-2010, 20:29
Ok grazie ;)

Ho notato che le modifiche apportate sono :

int v1[11] , v2[11]

v1[10]=2147483647;
v2[10]=2147483647;


Scusa se ti disturbo, ma a cosa servono queste ultime due ? ?
Portesti darmi una delucidazione in merito ??

Grazie ancora

rеpne scasb
14-06-2010, 20:34

Claudio19488
15-06-2010, 12:08
Grazie, sei stato gentilissimA.




claudio

banryu79
15-06-2010, 13:58
Grazie, sei stato gentilissimo.

GentilissimA, chi ti ha aiutato è una signora programmatrice :O (che saluto :))