[C] Scrivere programma in C usando i cicli

ludole
Potreste darmi una mano con questo programma?

Scrivere un programma in C che legge N numeri interi ed un numero intero k e stampa l'elemento degli N numeri letti più vicini a k.
Per esempio N=4 k=3 Numeri letti: 4, 1, 10, 5 Stampa 4


Io avrei cominciato ad impostarlo così:

#include
#define N 4
main ()
{
int k;
printf ("Dammi il valore k \n");
scanf ("%d", &k);

e poi non so come continuare!

Risposte
Quinzio
Dimentica per un attimo calcolatori, C, e l'informatica !
Immagina di essere tu a fare la parte del calcolatore e davanti hai l'utente che ti dice i numeri.
Come fai a risolvere l'esercizio ? Scrivi quello che fai nel modo piu' dettagliato possibile.
Questa è la base, poi solo quando hai chiaro i passi elementari, apri l'editor di C.

vict85
Al di la del problema, sai quali sono i cicli nel C e cosa fanno?

ludole
So cosa sono i cicli e come utilizzarli, il problema è che non riesco a trovare l'algoritmo!
Non capisco come posso definire quale numero sia più vicino al numero dato!

Cronovirus
Potresti fare la sottrazione e considerarne il valore assoluto. Lo fai per tutti i numeri e ne prendi il minimo!

vict85
Dato che li hai capiti, perché non hai scritto il codice per leggere tutti gli N numeri? Non hai inserito neanche la variabile array che li dovrebbe contenere. Insomma comincia a scrivere quel codice e ad aggiungere l'array e la variabile che conterrà il risultato. Dopo di che Cronovirus ti ha già detto come fare la seconda parte.

ludole
Non ho inserito la variabile perché non sapevo in che senso mi sarebbe servita! Ora provo con la differenza! Grazie mille!

vict85
Ok, comunque se k fosse inserito prima degli elementi sarebbe bastato un solo ciclo e nessun array. Essendo però inserito dopo, devi prima caricare tutti gli elementi in un array e poi cercare il più vicino. Comunque non dimenticarti il valore assoluto (o il quadrato se non ti preoccupa l'eventuale overflow).

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.