Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [C] Acquisizione vettore e stampa dei tre valori massimi

    Il problema che riscontro è nell'output: non riesco a capire perché nei tre valori massimi mi stampa anche lo 0 (consiglio un'esecuzione tramite compilatore per capire meglio il problema)
    codice:
    #include <stdio.h>
    #define max 100
    /*PROTOTIPI*/
    void input(int v[], int *dim);
    void sort(int v[], int dim);
    void swap(int *x, int *y);
    void output(int v[], int dim);
    /*FUNZIONE PRINCIPALE*/
    main() {
    int v[max];
    int dim;
    input(v, &dim);
    sort(v, dim);
    output(v, dim);
    return 0;
    }
    /*INPUT*/
    void input(int v[], int *dim) {
    int num;
    *dim=0;
    do {
     printf("Immetti numero: ");
     scanf("%d", &num);
     v[(*dim)++]=num;
     }
    while((num!=0) && (*dim<max));
    if(num==0) (*dim)--;
    }
    /*SORT*/
    void sort(int v[], int dim) {
    int i, j;
    for(i=0;i<dim-1;i++) {
     for(j=i+1;j<dim;j++) {
      if(v[i]>v[j]) swap(&v[i], &v[j]);
      }
     }
    }
    /*SWAP*/
    void swap(int *x, int *y) {
    int temp;
    temp=*x;
    *x=*y;
    *y=temp;
    }
    /*OUTPUT*/
    void output(int v[], int dim) {
    int i;
    for(i=0;i<dim;i++) {
     printf("%d ", v[i]);
     }
    printf("\nI valori massimi sono: %d %d %d", v[i-2], v[i-1], v[i]);
    }
    Vi ringrazio

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Deve essere

    codice:
    printf("\nI valori massimi sono: %d %d %d", v[i-3], v[i-2], v[i-1]);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ci avevo già pensato ma non capisco perché si fa così.. eppure io nell'input ho già detto di decrementare la dimensione nel caso in cui ci sia lo zero, perché lo stampa lo stesso?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da robe92
    ci avevo già pensato ma non capisco perché si fa così..
    Pensaci bene ... rifletti sul valore che ha la variabile i alla fine del ciclo for.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    se il ciclo for è descritto così for(i=0;i<dim;i++) arriva fino a dim-1 no? tant'è che mi stampa a video il vettore escludendo l'elemento zero

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma quando termina, nelle righe seguenti, la variabile i vale dim
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    quindi si incrementa ancora un'ultima volta?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ovviamente sì ... altrimenti come fa a vedere che non è più <dim ?

    (a parte che questo è il funzionamento standard di ogni costrutto for ... di ogni linguaggio)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    e allora quando scrivo for(i=0;i<=dim;i++)?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Dai ... mi sembra ovvio
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.