Ordinamento vettori

di il
2 risposte

Ordinamento vettori

Buona sera ragazzi, sono uno studente fresco fresco di ingegneria civile, dico fresco fresco perchè la pazzia di iscrivermi mi è balenata l'anno scorso.
senza girarci troppo intorno mi sono imbattuto nel classico blocco da programmazione ossia:

- so cosa vorrei fare,
- provo a farlo,
- il computer mi sputa addosso...

reitero il ciclo in loop infinito...

Sono un filo a digiuno con la programmazione e sto seguendo le video lezioni del docente del politecnico, il problema che lui mi sottopone è abbastanza banale (per i più, non per me):

dato un vettore di N numeri inseriti da tastiera, stampare un vettore con i numeri inseriti in ordine decrescente.

allora prima precisazione, lui il vettore nell'esercizio lo dichiarava direttamente tramite istruzione #define N, oltretutto per esigenza di tempo introduceva manualmente i valori nel vettore.
Io da buon smanettone ho provato la sua strada, una volta capita la meccanica di base parallelamente mi sono chiesto, se io la grandezza del vettore non la volessi impostare in maniera fissa, ma di volta in volta, e sopratutto il vettore lo volessi riempire io?

così ho provato a buttar giù uno stralcio di codice che come già scritto mi sputa addosso ad ogni compilazione
#include <stdio.h>
#include <stdlib.h>
//#define N 5
int main(void)
{
int i,k,j,posm,max,temp,n /*v1[N]={5,8,9,2,7}*/;

printf("inserisci la lunghezza del vettore= ");
scanf("%d", &n);

int v[n];

for(j=0;j<n;j++)
    {
        printf("valore del vettore= ");
        scanf("%d", &v[n]);
    }

for(i=0;i<n-1;i++){
    max=v[i];
    for(k=i;k<n;k++)
        {
            if(v[k]>=max)
            {
                max=v[k];
                posm=k;
            }
        }
temp=v[i];
v[i]=v[posm];
v[posm]=temp;
}
for (k=0;k<n;k++){
    printf("v= %d\n", v[k]);
}
return 0;
}
da quanto ho capito conviene in questo caso capire la meccanica del massimo valore inserito all'interno del vettore e ciclarlo con i valori rimanenti, man mano che ci si sposta....
ho lasciato l'istruzione define ed il vettore commentati al posto delle n minuscole nell'esercizio proposto vi erano le N.

Continuo a non capire però perchè alla stampa di v[k] il programma mi restituisce valori random...
qualche consiglio e dritta?

2 Risposte

  • Re: Ordinamento vettori

    Cosa non va in questa secondo te

    scanf("%d", &v[n]);

    ?
  • Re: Ordinamento vettori

    Stavo rileggendo il programma quando mi sono accorto della tua risposta, ho provveduto a cambiare ed inserire giustamente al posto di
    scanf("%d", &v[n]);
    scanf("%d", &v[j]);
    a volte sono errori davvero stupidi, stavo impazzendo sulle logiche del for e dell'if

    grazie mille
Devi accedere o registrarti per scrivere nel forum
2 risposte