Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383

    [c] algoritmo di ordinamento

    Ciao, mi trovo a dover scrivere un programma che rappresenta un punto spinoso per me.

    Ho già scritto qualche programma che fa uso delle varie versioni di bubblesort e uno perfino di ricerca binaria e un altro di ricerca completa.

    Ma questo non so proprio come impostarlo. In pratica si tratta di scrivere un programma che, richiesti i valori di un vettore ordinato in modo crescente, li inverta ottenendo un vettore decrescente. Il problema va risolto utilizzando un solo ciclo.
    È proprio quest'ultima richiesta che mi manda in tilt

    Non so proprio come tirare fuori l'algoritmo soluzione. Mi auguro che qualcuno di voi mi possa dare qualche idea o degli indizi

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Scusa ... ma non mi sembra difficile ... prendi i valori e scambiali a due a due (primo e ultimo, secondo e penultimo ...)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3

    Re: [c] algoritmo di ordinamento

    Originariamente inviato da cristianc
    un solo ciclo.
    mezzo ciclo
    ;-)

  4. #4
    Infatti; l'errore tipico nei problemi di questo genere è ritrovarsi con il vettore allo stato iniziale perché, facendo il ciclo completo, ogni elemento è stato scambiato due volte.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    Ciao, quindi devo ottenere un vettore ordinato in senso crescente quando immetto i valori che poi verrà invertito

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da cristianc
    Ciao, quindi devo ottenere un vettore ordinato in senso crescente quando immetto i valori che poi verrà invertito
    E' una domanda o hai risolto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    Originariamente inviato da oregon
    E' una domanda o hai risolto?
    No, ancora devo scriverlo.

    Potrebbe essere questo?

    for(i = 0; i < n; i++)
    do {
    printf("vet %d° elemento: ",i+1);
    res = scanf("%f",&vet[i]);
    while(getc(stdin)!= '\n');
    } while(res==0 && ( i>0 ? vet[i] > vet[i-1] : 1) );

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma di cosa parliamo?

    Si dava per scontato che i valori in ingresso dovessero essere già ordinati senza bisogno di controllare.

    Sembrava che il problema fosse dopo l'input.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    383
    Un esempio di programma potrebbe esser questo:

    codice:
    main()
    {
     int i,n,res;
     int vet[MAXDIM],aux;
     
     printf("numero di elementi(max 100): ");
     scanf("%d",&n);
    
     // immissione valori
     for(i = 0; i < n; i++)
       do {
         printf("vet %d° elemento: ",i+1);
         res = scanf("%d",&vet[i]);
         while(getc(stdin)!= '\n');
       } while(res==0 && ( i>0 ? vet[i] >= vet[i-1] : 1) );
    
     // ordinamento in senso decrescente
     for(i = 1; i < n/2; i++) {
      aux = vet[i-1];
      vet[i-1] = vet[n-i];
      vet[n-i] = aux;
     }
    }
    ho qualche dubbio sull'ordinamento ma mi sembra giusto

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.