PDA

View Full Version : [C] Ordinare gli Array


stgww
30-05-2007, 13:50
Ciao volevo sapere come si fà ad ordinare una array in C
Ho provato :for(k=0;k<(dim-1);k++){
for(j=(k+1);k<=(dim-1);j++){
if(f[k]>f[j]){
app=f[k];
f[k]=f[j];
f[k]=app;
}}}
ma poi cosa gli devo dire affinche me li scriva ordinati? (sto parlando di numeri)
P.S. dim indica il numero di elementi nell'array f

andbin
30-05-2007, 13:57
for(k=0;k<(dim-1);k++){
for(j=(k+1);k<=(dim-1);j++){
if(f[k]>f[j]){
app=f[k];
f[k]=f[j];
f[k]=app;
}}}Questo è il classico "bubble-sort". Tra l'altro non è corretto: nel for interno hai messo k<=(dim-1) ma dovrebbe essere j<=(dim-1). Poi l'ultima assegnazione dovrebbe essere f[j]=app;

ma poi cosa gli devo dire affinche me li scriva ordinati? (sto parlando di numeri)In che senso? Una volta eseguito il bubble-sort l'array è ordinato.

stgww
30-05-2007, 16:12
Dopo che li ho ordinati come li stampo a video?
P.S. Che differenza c'è tra una funzione e una procedura?
THX A LOT

andbin
30-05-2007, 16:17
Dopo che li ho ordinati come li stampo a video?Fai un ciclo for e stampi con printf.

P.S. Che differenza c'è tra una funzione e una procedura?Stai parlando in generale o in modo specifico per un certo linguaggio/ambiente?
Comunque se n'era parlato in <questo> (http://www.hwupgrade.it/forum/showthread.php?t=1475241) thread.

stgww
30-05-2007, 16:24
Fai un ciclo for e stampi con printf.

Stai parlando in generale o in modo specifico per un certo linguaggio/ambiente?
Comunque se n'era parlato in <questo> (http://www.hwupgrade.it/forum/showthread.php?t=1475241) thread.

ok per procedure e funzioni( domani mi interroga e se mi chiede la differenza tra una procedura e una funzione sò che dirgli ;) )

Per la stampa: va bene per il for e printf, ma il mio dubbio era a quale variabile dovevo fare riferimento
#include <stdio.h>
#include <stdlib.h>
#define dim 3
int main(int argc, char *argv[])
{
float f[dim];
int i, j, k, app;
for(i=o;i<dim;i++){
printf("Inserisci un Valore\n");
scanf("%f", &f[i]);
}
for(k=0;k<(dim-1);k++){
for(j=(k+1);j<=(dim-1);j++){
if(f[k]>f[j]){
app=f[k];
f[k]=f[j];
f[j]=app;
} } }





system("PAUSE");
return 0;
}
f[i], f[k], o f[j]??
Thx

andbin
30-05-2007, 16:32
Per la stampa: va bene per il for e printf, ma il mio dubbio era a quale variabile dovevo fare riferimentoFai un ciclo for come hai fatto per l'input, solo che userai printf invece di scanf. L'array si chiama 'f' e per l'indice usa la variabile che vuoi. Hai usato 'i' nel primo for, riusa pure 'i' per la stampa.

stgww
30-05-2007, 17:00
Fai un ciclo for come hai fatto per l'input, solo che userai printf invece di scanf. L'array si chiama 'f' e per l'indice usa la variabile che vuoi. Hai usato 'i' nel primo for, riusa pure 'i' per la stampa.

Buono, ora sò utilizzare gli Array, faccio domanda alla M$:D
Ora mi ripasso i sottoprogarmmi, ma non mi sembra che ci siano difficoltà esagerate:
In pratica (correggimi se sbaglio) bisogna dichiarare il sottoprogramma con void/tipo base _ in base a se restituisce valori o no
nome sotto programma _ come ci pare
(xxx x) _ parentesi vuote se non restituisce niente, tipobase-nome variabile se vogliamo che restituisce qualcosa.

Per richiamarlo basta scrivere il nome del sotto programma.

alla fine se restituisce qualcosa bisogna scrivere
return nome variabile
altrimenti non si scrive niente e si finisce così

se vogliamo cambiare il nome della variabile d'uscita basta che quando lo richiamiamo scriviamo
niome sottoprogramma (nome nuova variabile)

Giusto? Manca qualcosa di teoria?

andbin
30-05-2007, 17:11
Ora mi ripasso i sottoprogarmmiChiamale "funzioni" .... perché è il termine tipico usato in C.

Giusto? Manca qualcosa di teoria?Se proprio vogliamo fare i fini, il return può essere usato anche in una funzione che ha tipo di ritorno 'void', chiaramente senza specificare un valore dopo il return.

Es.
void func (int x)
{
if (x < 0)
return; /* esce subito */

blabla......
}

stgww
30-05-2007, 17:18
Grazie di tutto, adesso sono rponte per affrontare le miglie insidie del proff:D