Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C++]: ordinamento array

    ciao a tutti,
    ho questo piccolo programma che "dovrebbe" ordinare gli elementi di un vettore. Il programma viene compilato correttamente ma si blocca durante l'esecuzione al momento della chiamata alla funzione "ordinavet":

    codice:
    #include <iostream>
    #include <cstdlib>
    void leggi (int vet[], int &p);
    void ordinavet (int vet[], const int &p);
    void stampa (int vet[], int &p);
    
    int main(int argc, char *argv[])
    {
      int vet[50], n;
      n=0;
      cout<<"Inserire la dimensione del vettore (MAX 50)\n";
      cin>> n;
      cout<<"Inserire gli elementi del vettore\n";
      leggi(vet, n);
      cout<<"VETTORE ORDINATO\n";
      ordinavet(vet, n);
      stampa(vet, n);
      system("Pause");
      return 0;
    }
    
    void leggi (int vet[], int &p)
    {
      int i;
      for(i=0; i<p;i++)
        {
          cout<<"vet["<<i<<"]:";
          cin>>vet[i];
        }  
    }
    
    void stampa (int vet[], int &p)
    {
      int i;
      for(i=0; i<p;i++)
        {
          cout<<"vet["<<i<<"]:";
          cout<<vet[i]<<"\n";
        }  
    }
    
    
    void ordinavet (int vet[], const int &p)
    {
      int i; 
      int temp;
      int j;
      j=0;
       temp=0;
      for (i=0; i<p-1; i++)
        
      for (j=i+1; i<p; j++)
        
          if (vet[i]<vet[i+1]) 
            {
              temp=vet[i+1];
              vet[i+1]=vet[i];
              vet[i]=temp;
            }
    }
    dove sbaglio?

    ciao!
    "Ogni artista è un cannibale, ogni poeta è un ladro
    tutti uccidono la loro ispirazione poi cantano del loro dolore "

  2. #2
    forse sbaglio ma secondo me è perche non incrementi la i nel ciclo interno quindi la condizione di uscita dal for non si verifica mai
    ciao
    http://www.perungiorno.it

  3. #3
    codice:
    void ordinavet (int vet[], const int &p){
        
        int i, j, temp; 
        
        for(i=0; i<p-1; i++)
    	
            for(j=i+1; j<p; j++)
            
                if(vet[j] < vet[i]){
                    temp = vet[i];
    	        vet[i] = vet[j];
    	        vet[j] = temp;
                }
    }
    ...Terrible warlords, good warlords, and an english song

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.