Ciao,
Ok per gli elementi pre-ordinati, credo che l'esercizio servisse semplicemente a farti leggere e scrivere su un file applicando un algoritmo di ordinamento.
Quindi penso che avresti dovuto aprire il blocco note, salvare un file di testo con dentro i vari valori e caricarli nel tuo array.
È abbastanza semplice da fare questa prima parte, basta che utilizzi un qualcosa per separare i vari valori. Generalmente si sfrutta il fatto di andare a capo, quindi normalmente avresti un file così:
Quindi, avresti una cosetta del genere:
Codice: Seleziona tutto
#include <iostream>
#include <fstream>
int main(int argc, char * argv[])
{
std::fstream alpa("C:\\Alpha.txt", std::ios_base::in);
int valoriLetti[10];
int numero, i = 0;
while (alpha >> numero)
{
cout << "Ho letto: " << numero << endl;
valoriLetti[i] = numero;
i++;
}
getchar();
return 0;
}
Questo programma apre il file presente in C:\Alpha.txt e legge riga per riga i numeri, inserendoli nel vettore e facendoti vedere il valore che ha letto dal file.
Partendo da qui, va poi ampliato chiedendo all'utente quale valore desidera inserire e quindi devi andare a generare il file Beta.txt riordinando il vettore.
E con questo diciamo che ho risposto alla tua prima domanda, quindi se dovessimo attenerci al testo dell'esercizio, dando per scontato che doveva essere volto a far leggere e scrivere un file, sì, è sbagliato pre-impostare i valori a programma, perché se volessi cambiarli e metterci "1, 2, 3..." ecc. ti toccherebbe ricompilare il programma.
E il concetto è sbagliato. Se cambia il dato, il programma deve rimanere invariato, perché la logica che c'è dietro non cambia.
Per la tua seconda domanda, invece, non è sbagliato logicamente, ma non è una buona pratica. Ti rigiro la domanda, per provare a farti capire: cosa succede se al posto di un numero, in fase di inserimento, ci inserisci una lettera, una frase o comunque qualcosa di inaspettato?
Ecco che si verifica un'eccezione e potenzialmente potresti andare a perdere i dati che avevi memorizzato finora.
Tendezialmente è sempre bene tenere i dati "puliti" separati dall'input dell'utente, che può essere "sporco" come nell'esempio che ti ho appena fatto.
Con una variabile separata, dovresti riuscire a gestire meglio eventuali eccezioni.
Al di là di questa premessa, non ho capito cosa volevi fare. L'esercizio alla fine si scompone in:
- Lettura file con elenco di valori ordinati;
- Richiesta input all'utente;
- Salvataggio valori ordinati con l'input dell'utente su file;
Se dopo aver recuperato i valori ordinati, hai richiesto l'input all'utente e lo hai salvato direttamente in fondo al vettore, può andar bene, ma sia per le premesse che ti ho fatto, sia perché se ti venisse richiesto di leggere più righe dal file e quindi di ampliare il vettore, ecco che ogni volta dovresti ricordarti di farlo più grande di almeno 1 elemento, in più anche a occhio non è subito chiaro ciò che stai facendo.
Considera ad esempio di dover leggere il codice di un tuo compagno di classe: preferiresti riuscire a capirlo al volo, magari anche tramite l'ausilio di variabili con dei nomi che facilitino la lettura, oppure preferiresti dover stare lì a fare il debug del codice per capire cosa voleva fare il tuo compagno di classe?
Quindi sostanzialmente, se non hai fatto le cose che ti ho elencato prima, l'esercizio non può considerarsi completato, sempre che io abbia capito bene ciò che stai scrivendo