Programma di ordinamento a 3 numeri C++
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Pag 1 di 2 12 UltimoUltimo
Visualizzazione risultati da 1 a 15 di 26

Discussione: Programma di ordinamento a 3 numeri C++

Cambio titolo
  1. #1
    Web Knowledger L'avatar di exel88
    Registrato il
    10-02
    Località
    Deep Internet
    Messaggi
    2.330

    Programma di ordinamento a 3 numeri C++

    Scusate raga ma ho un piccolissimo problema con un programma in C++ che servirebbe a ordinare 3 numeri di input dal maggiore al minore o viceversa a seconda della scelta dell'utente.
    Il blocco dove viene effettuata la scelta funziona perchè l'avevo già testato ma, al di là delle spropositate righe di codice che ho messo (mi voglio nfare del male :P) il compilatore mi da una serie di errori su parentesi e else mancanti che non riesco a trovare.
    Potreste darmi un aiutino piccolo piccolo piccolo?


    Il codice è questo:
    Codice:
      #include <iostream.h>
     #include <conio.h>
     #include "cancella.h"
     
     
     
     void main()
     {
     	 // Assegnazione variabili per l'inserimento dei numeri
     	 short N1, N2, N3;
     	 short A, B, C;
     
     	 char Scelta;
     
     
     
     	 //
     	 // Scelta tra ordine crescente e decrescente
     	 //
     	 do {
     		 cout<< endl <<"Vuoi ordinare i numeri in ordine crescente (C) o decrescente (D)?"<< endl;
     		 cout<<"Digita (C) o (D) per eseguire il programma: "; cin>>Scelta;
     		}
     
     	 while ((Scelta != 'C') && (Scelta != 'D') && (Scelta != 'c') && (Scelta != 'd'));
     
     	 clrscr();
     	 cout<<"I numeri verranno ordinati in ordine ";
     
     	 if ((Scelta == 'C') || (Scelta == 'c'))
     		{ cout<<"crescente!";
     		}
     	 else
     		{ cout<<"decrescente!";
     		}
     
     	 cout<< endl << endl << endl << "Premere un tasto per continuare...";
     
     	 getch();
     	 clrscr();
     
     
     	 //
     	 // Richiesta dei tre numeri
     	 //
     	 cout<<"Inserisci il primo numero da ordinare: "; cin>> N1;
     	 cout<< endl;
     	 cout<<"Inserisci il secondo numero da ordinare: "; cin>> N2;
     	 cout<< endl;
     	 cout<<"Inserisci il terzo numero da ordinare: "; cin>> N3;
     
     
     	 //
     	 // Restituisco valori
     	 //
     
     	 clrscr();
     
     	 cout<<"I numeri che hai inserito sono: " << N1 << ", " << N2 << ", " << N3 << ".";
     	 cout<< endl << endl << endl;
     	 cout<<"Premere un tasto per continuare...";
     
     	 getch();
     	 clrscr();
     
     
     	 //
     	 // Inizio calcoli secondo crescente
     	 //
     
     	 if (N1 < N2)			   // N1 minore di N2
     		{ A = N1;
     
     		if (N2 < N3)				    // N2 minore di N3
     		   { B = N2;
     			 C = N3;
     		   }
     
     	    else						    // N2 maggiore di N3
     		   { B = N3;
     			 C = N2;
     		   }
     
     	 else					   // N1 maggiore di N2
     		{ if (N2 < N3)				  // N2 minore di N3
     			 { A = N2;
     
     			  if ( N1 < N3)				  // N1 minore di N3
     				 { B = N1;
     				   C = N3;
     				 }
     
     			  else						   // N1 maggiore di N3
     				 { B = N3;
     				   C = N1;
     				 }
     
     		  else						  // N2 maggiore di N3
     			 { A = N3;
     			   B = N2;
     			   C = N1;
     			 }
     		}
     
     
     		//
     		// Restituisco i valori ordinati all'utente secondo il metodo scelto
     		//
     
     		clrscr();
     		cout<<"I numeri, ordinati in ordine ";
     
     		if ((Scelta == 'C') || (Scelta == 'c'))
     		   { cout<<"crescente,";
     		   }
     		else
     		   { cout<<"decrescente,";
     		   }
     
     		cout<<" sono: ";
     
     		if ((Scelta == 'C') || (Scelta == 'c'))
     		   { cout<< A << ", " << B << ", " << C << ".";
     		   }
     		else
     		   { cout<< C << ", " << B << ", " << A << ".";
     		   }
     
     		getch();
     
     }
    Who we are is but a stepping stone to what we can become.

  2. #2
    Web Knowledger L'avatar di exel88
    Registrato il
    10-02
    Località
    Deep Internet
    Messaggi
    2.330
    mi si è incasinata un po' la tabulazione qui nel forum asd

    cmq una cosa, l'errore non è dovuto alla libreria cancella.h visto che è presente nella stessa cartella del codice
    Who we are is but a stepping stone to what we can become.

  3. #3
    bravo
    BAIOCCO, l'addio

  4. #4
    Utente L'avatar di pentothal
    Registrato il
    10-02
    Località
    Firenze
    Messaggi
    4.692
    Innanzitutto per farlo partire ti manca la libreria stdio.h senno non puoi eseguire le funzioni clrscr();

    L'errore delle parentisi stava che chiudevi gli else interni ma non aprivi bene quelli esterni:

    Codice:
    if(<condizione>){
       if(<condizione>){
          <istruzioni>
       }else{
          <istruzioni>
       }
    }else{
       if(<condizione>){
          <istruzioni>
       }else{
          <istruzioni>
       }
    }
    Poi l'ordinamento non torna. Appena ho visto come hai fatto non ho cercato nemmeno di correggere dato che la soluzione che hai adottato è troppo casinista, perciò prova a trarre aiuto da questo equivalente:

    Codice:
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    
    const unsigned int MAX = 10;
    
    void stampa(int[],int,int);
    
    void main(){
       int v[MAX],n, tipo_ord, app, i, j;
    
       ///////////////////
       // Acquisizione //
       ///////////////////
    
       do{
          clrscr();
          cout<<"Quanti numeri vuoi ordinare? [max 10]: ";
          cin>>n;
       }while(n>=MAX);
       cout<<"Acquisizione di "<<n<<" numeri."<<endl;
       for(i=0; i<n; i++){
          cout<<"#"<<i+1<<": ";
          cin>>v[i];
       }
       do{
          clrscr();
          cout<<"Tipo ordinamento [1=cre; 2=dec]:";
          cin>>tipo_ord;
       }while(tipo_ord != 1 && tipo_ord != 2);
    
       ////////////////////
       // Ordinamento //
       ///////////////////
    
       for(i=0; i<n-1; i++){
          for(j=i+1; j<n; j++){
             // caso crescente
             if(tipo_ord == 1){
                if(v[i] > v[j]){
                   // scambio i due elementi
                	  app = v[i];
                	  v[i] = v[j];
                	  v[j] = app;
                }
             }
             if(tipo_ord == 2){
                // caso decrescente
                if(v[i] < v[j]){
                  // scambio i due elementi
                	  app = v[i];
                	  v[i] = v[j];
                	  v[j] = app;
                }
             }
          }
       }
       stampa(v,n,tipo_ord);
       getch();
    }
    
    void stampa(int v[], int n, int t){
       if(t == 1)
          cout<<"Ordinamneto crescente"<<endl;
       if(t == 2)
          cout<<"Ordinamneto decrescente"<<endl;
       for(int i=0; i<n; i++ )
          cout<<v[i]<<" ";
       cout<<endl;
    }
    Ultima modifica di pentothal; 3-12-2004 alle 17:57:01

  5. #5
    Web Knowledger L'avatar di exel88
    Registrato il
    10-02
    Località
    Deep Internet
    Messaggi
    2.330
    che professoressa ignoranti che ho XD
    ha detto che la libreria per il clrscr non esiste e dovevamo utilizzare la cancella.h di sua creazione

    cmq sapevo che è un suicidio il mio metodo :P

    grazie dell'aiuto
    Who we are is but a stepping stone to what we can become.

  6. #6
    Utente L'avatar di pentothal
    Registrato il
    10-02
    Località
    Firenze
    Messaggi
    4.692
    Citazione exel88
    che professoressa ignoranti che ho XD
    ha detto che la libreria per il clrscr non esiste e dovevamo utilizzare la cancella.h di sua creazione

    cmq sapevo che è un suicidio il mio metodo :P

    grazie dell'aiuto
    Magari è la stdio.h rinominata da lei per fare la grossa....

  7. #7
    Web Knowledger L'avatar di exel88
    Registrato il
    10-02
    Località
    Deep Internet
    Messaggi
    2.330
    cmq ci sono due errori :P

    uno viene segnato in i+1 come operatore ambiguo... è i++1 e l'altro è un punto e virgola mancante che non trovo
    Who we are is but a stepping stone to what we can become.

  8. #8
    Web Knowledger L'avatar di exel88
    Registrato il
    10-02
    Località
    Deep Internet
    Messaggi
    2.330
    probabile pentothal :-)
    so solo che è ignorante quella prof... o meglio assistente di laboratorio... è da due mesi che in visual basic siamo fermi a due cazzate e in c++ fortunatamente andiamo avanti con l'altro prof
    Who we are is but a stepping stone to what we can become.

  9. #9
    Utente L'avatar di pentothal
    Registrato il
    10-02
    Località
    Firenze
    Messaggi
    4.692
    al posto di "i++1" va messo "i++;" ho sbaglaito a scrivere
    e l'operatore ambiguo non è un errore.

    Mi sa che hai copiato-incollato male fato che se faccio copia incolla in un mio compilatore parte senza dare errori...

  10. #10
    Web Knowledger L'avatar di exel88
    Registrato il
    10-02
    Località
    Deep Internet
    Messaggi
    2.330
    lol borland lo segnava come errore operatore ambiguo
    cmq pardon son ancora niubbo
    Who we are is but a stepping stone to what we can become.

  11. #11
    Web Knowledger L'avatar di exel88
    Registrato il
    10-02
    Località
    Deep Internet
    Messaggi
    2.330
    Citazione pentothal
    al posto di "i++1" va messo "i++;" ho sbaglaito a scrivere
    e l'operatore ambiguo non è un errore.

    Mi sa che hai copiato-incollato male fato che se faccio copia incolla in un mio compilatore parte senza dare errori...
    che compilatore usi?
    Who we are is but a stepping stone to what we can become.

  12. #12
    Utente L'avatar di pentothal
    Registrato il
    10-02
    Località
    Firenze
    Messaggi
    4.692
    Citazione exel88
    che compilatore usi?
    borland 4.5 e 5.01

  13. #13
    Web Knowledger L'avatar di exel88
    Registrato il
    10-02
    Località
    Deep Internet
    Messaggi
    2.330
    io borland 5.02 e visual studio 6 ma mi danno errore... vabbè grazie cmq ho corretto... peccato che non posso usare il tuo prog a scuola :P troppe cose che non ci hanno ancora spiegato ^^''
    Who we are is but a stepping stone to what we can become.

  14. #14
    Utente L'avatar di pentothal
    Registrato il
    10-02
    Località
    Firenze
    Messaggi
    4.692
    Citazione exel88
    io borland 5.02 e visual studio 6 ma mi danno errore... vabbè grazie cmq ho corretto... peccato che non posso usare il tuo prog a scuola :P troppe cose che non ci hanno ancora spiegato ^^''
    ...poco importa, magari usalo per cominciare le cose un anticipo...

  15. #15
    Citazione exel88
    io borland 5.02 e visual studio 6 ma mi danno errore... vabbè grazie cmq ho corretto... peccato che non posso usare il tuo prog a scuola :P troppe cose che non ci hanno ancora spiegato ^^''
    ...è sempre colpa degli altri...
    BAIOCCO, l'addio

Pag 1 di 2 12 UltimoUltimo

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •