Ordinamento lista in loop

di il
2 risposte

Ordinamento lista in loop

Aiuto !!!

#include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <conio.h>
    #include <math.h>
   
   
   struct NODO
   {
   	int inf;
   	NODO* pun;
   } *primo= NULL, *ult= NULL;
   
   
   
   
   void push(){
   	
   	int k, vol;
   	printf("\n\n Quanti elementi vuoi inserire?" ); scanf("%d", &vol);
   	for(int i=0; i<vol; i++){
   		printf("\n\n Inserisci numero intero: "); scanf("%d", &k);
   		NODO*p= new NODO;
   		p->inf= k;
   		p->pun= NULL;
   		if (primo==NULL) primo=p;
   		else ult->pun=p;
   		ult=p;
   		
   		
	   }
   	
   }
   
  void visualizza() {
  	
   printf("\n\n Vedi quello che hai inserito:");

   NODO*p= primo;
   while(p != NULL)
   {
      printf("%d", p->inf);	
      printf(" ");
      p = p->pun;
   }

   
}
  	
  	void ordina(){
  		int i=0;
  		NODO*p= primo;
  		NODO*sc;
  		NODO*ps;
  	
  		
      
      while(ps != NULL || p!=NULL){
     
   	  if(p->inf > ps->inf){
   	  sc->inf=p->inf;
   	  p->inf=ps->inf;
   	  ps->inf=sc->inf;
   	   	
		 }
      p=p->pun;	
	  ps=p->pun;   	
   	
   	
    
  }
       
 	
  		
  		
	  }
  
   
   void elimina(){
   	NODO*prec;
   	int k;
   	printf("\n\n Inserisci numero: "); scanf("%d", &k);
   	NODO*pscor= primo;
   	bool trov=false;
   	while(pscor!=NULL && !trov){
   		
   		if(pscor->inf==k) trov=true;
   		else {
   			prec=pscor;
   			pscor= pscor->pun;
   			
		   }
   		
	   }
   	
   	if (pscor==primo  && trov) {
   		primo= primo->pun;
		   
		   
   }
   	else{ 
   	
	 prec->pun= pscor->pun;
   	 free (pscor);
   	
   }
}
   
   

   
     void menu () {
        	system ("CLS");
         	  
         	  char selezione;
         	  
 	          do{
			   
                	printf("Registro \n\n 1) Inserisci  \n\n 2) Visualizza \n\n 3) Elimina \n\n 4) Ordina \n\n 5) Exit");
 	                     	printf(" \n\n Digita un numero da 1 a 4 per effettuare una scelta: "); scanf("%s", &selezione);
 		
 	                  	switch (selezione) {
   	                     
							   case '1':
   	     		                	push();
   	    		
  	    		                 break;
 	                          
							     case '2':
   	    		                 visualizza();
   	    		                 system("pause");
 	    		                 break;
 	    		                 
 	    		                 case '3':
 	    		                 elimina();
 	    		                 system("pause");
 	    		                 break;
							     
							     case '4':
   	  		                     ordina();
   	  		                     printf("\n\n Fatto!");
							     break;
							     
							     case '5':
							     system("CLS");
							     printf(" \n\n Programma realizzato da . ");
							     exit(0);
							     break;
					}
				 
								 system("CLS");			     	
	    }while(selezione!='1' && selezione!='2' && selezione!='3' && selezione!='4' && selezione!='5' && selezione!='6' && selezione!='7');
	    
	   }
   
   
   
   
    int main() {
 	
 	bool scegli= false;
 	 while (scegli==false){
     
 	 menu();
 	 
 }
 	
 }

2 Risposte

  • Re: Ordinamento lista in loop

    Quando presenti del codice sorgente, devi usare gli appositi tag [ CODE ] per evitare che ne risulti un guazzabuglio illeggibile e aumentare la probabilità che qualcuno si prenda la briga di leggere il tuo codice e fornire un aiuto.

    Inoltre non puoi assolutamente limitarti a scrivere laconicamente "aiuto". Devi fornire una descrizione accurata del problema, eventuali errori e warning, specificare il SO e compilatore, e fornire ogni altro elemento che possa essere utile: incluso anche il testo del problema o la specifica del programma.
  • Re: Ordinamento lista in loop

    La funzione ordina va in loop credo ... non restituisce nulla.
    mentre sia inserimento che visualizza funziona


    
    #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
        #include <iostream>
        #include <conio.h>
        #include <math.h>
       
       
       struct NODO
       {
       	int inf;
       	NODO* pun;
       } *primo= NULL, *ult= NULL;
       
       
       
       
       void push(){
       	
       	int k, vol;
       	printf("\n\n Quandi numri vuoi inzeriro?" ); scanf("%d", &vol);
       	for(int i=0; i<vol; i++){
       		printf("\n\n Inserisci numro: "); scanf("%d", &k);
       		NODO*p= new NODO;
       		p->inf= k;
       		p->pun= NULL;
       		if (primo==NULL) primo=p;
       		else ult->pun=p;
       		ult=p;
       		
       		
    	   }
       	
       }
       
      void visualizza() {
      	
       printf("\n\n Veti quello che hai skritto!");
    
       NODO*p= primo;
       while(p != NULL)
       {
          printf("%d", p->inf);	
          printf(" ");
          p = p->pun;
       }
    
       
    }
      	
      	void ordina(){
      		int i=0;
      		NODO*p= primo;
      		NODO*sc;
      		NODO*ps;
      	
      		
          
          while(ps != NULL || p!=NULL){
          p=p->pun;	
    	  ps=p->pun;
       	  if(p->inf > ps->inf){
       	  sc->inf=p->inf;
       	  p->inf=ps->inf;
       	  ps->inf=sc->inf;
       	   	
    		 }
       	
       	
       	
        
      }
           
     	
      		
      		
    	  }
      
       
       void elimina(){
       	NODO*prec;
       	int k;
       	printf("\n\n Inserisci numro: "); scanf("%d", &k);
       	NODO*pscor= primo;
       	bool trov=false;
       	while(pscor!=NULL && !trov){
       		
       		if(pscor->inf==k) trov=true;
       		else {
       			prec=pscor;
       			pscor= pscor->pun;
       			
    		   }
       		
    	   }
       	
       	if (pscor==primo  && trov) {
       		primo= primo->pun;
    		   
    		   
       }
       	else{ 
       	
    	 prec->pun= pscor->pun;
       	 free (pscor);
       	
       }
    }
       
       
    
       
         void menu () {
            	system ("CLS");
             	  
             	  char selezione;
             	  
     	          do{
    			   
                    	printf("Registro \n\n 1) Inserisci  \n\n 2) Visualizza \n\n 3) Elimina \n\n 4) Ordina \n\n 5) Exit");
     	                     	printf(" \n\n Digita un numero da 1 a 4 per effettuare una scelta: "); scanf("%s", &selezione);
     		
     	                  	switch (selezione) {
       	                     
    							   case '1':
       	     		                	push();
       	    		
      	    		                 break;
     	                          
    							     case '2':
       	    		                 visualizza();
       	    		                 system("pause");
     	    		                 break;
     	    		                 
     	    		                 case '3':
     	    		                 elimina();
     	    		                 system("pause");
     	    		                 break;
    							     
    							     case '4':
       	  		                     ordina();
       	  		                     printf("\n\n Fatto!");
    							     break;
    							     
    							     case '5':
    							     system("CLS");
    							     printf(" \n\n Programma r 3°B inf. ");
    							     exit(0);
    							     break;
    					}
    				 
    								 system("CLS");			     	
    	    }while(selezione!='1' && selezione!='2' && selezione!='3' && selezione!='4' && selezione!='5' && selezione!='6' && selezione!='7');
    	    
    	   }
       
       
       
       
        int main() {
     	
     	bool scegli= false;
     	 while (scegli==false){
         
     	 menu();
     	 
     }
     	
     }
Devi accedere o registrarti per scrivere nel forum
2 risposte