Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C]Ordinare 3 Numeri

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    11

    [C]Ordinare 3 Numeri

    Ciao! Sto fondendo con questo programmino, poichè penso che la soluzione non sia complessa ma il mio cervello oramai è entrato in loop, volevo domandarvi quale sia il problema, visto che dovrei ordinare tre numeri messi dall'utente ma non riesco!
    Grazie
    codice:
    # include <stdio.h>
    
    int num1,num2,num3;
    
    void main() {
    
    	printf("Inserisci un numero intero\n");
    	scanf("%d",&num1);	
    
    	printf("Inserisci un numero intero\n");
    	scanf("%d",&num2);	
    
    	printf("Inserisci un numero intero\n");
    	scanf("%d",&num3);
    
    	if((num1!=num2)&&(num1!=num3)&&(num2!=num3))
    	{
    
    		if(num1>num2)
    		{
    				if(num2>num3)
    					printf("I numeri ordinati sono:\n%d\n%d\n%d\n",num1,num2,num3);
    				else
    					printf("I numeri ordinati sono:\n%d\n%d\n%d\n",num1,num3,num2);
    
    
    		}
    
    		if(num2>num1)
    
    					{
    						if(num1>num3)
    							printf("I numeri ordinati sono:\n%d\n%d\n%d\n",num2,num1,num3);
    						else
    							printf("I numeri ordinati sono:\n%d\n%d\n%d\n",num2,num3,num1);
    				
    
    					}
    
    		if(num3>num1)
    							{
    								printf("%d%d%d\n",num1,num2,num3);
    								if(num1>num2)
    									printf("I numeri ordinati sono:\n%d\n%d\n%d\n",num3,num2,num1);
    								else
    									printf("I numeri ordinati sono:\n%d\n%d\n%d\n",num3,num1,num2);
    							}
    
    		}
    	else
    		{
    			if((num1==num2)&&(num1!=num3))
    			{
    				if(num1>num3)
    					printf("I numeri ordinati sono:\n%d e %d\n%d\n",num1,num2,num3);
    				else
    					printf("I numeri ordinati sono:\n%d\n%d e %d\n",num3,num2,num1);
    
    			}
    			
    			if((num1==3)&&(num1!=num2))
    			{
    				if(num1>num2)
    					printf("I numeri ordinati sono:\n%d e %d\n%d\n",num1,num3,num2);
    				else
    					printf("I numeri ordinati sono:\n%d\n%d e %d\n",num2,num2,num3);
    
    			}
    			
    			if((num2==num3)&&(num2!=num1))
    			{
    				if(num2>num3)
    					printf("I numeri ordinati sono:\n%d e %d\n%d\n",num2,num3,num1);
    				else
    					printf("I numeri ordinati sono:\n%d\n%d e %d\n",num1,num2,num3);
    
    			}
    			if((num1==num2)&&(num1==num3)&&(num2==num3))
    			printf("I numeri sono uguali\n");
    
    		}
    	
    	system("PAUSE");
    }

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    tutto quel codice per ordinare 3 numeri?????

    forse è meglio che prima te lo fai su carta e penna e poi lo scrivi in codice..

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    11
    Originariamente inviato da Stoicenko
    tutto quel codice per ordinare 3 numeri?????

    forse è meglio che prima te lo fai su carta e penna e poi lo scrivi in codice..
    Cosa proponi?

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    metti i numeri in un array e ti fai una funzione di ordinamento.. (4 righe a farla grande con 3 numeri), poi stampi..

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    11
    Originariamente inviato da Stoicenko
    metti i numeri in un array e ti fai una funzione di ordinamento.. (4 righe a farla grande con 3 numeri), poi stampi..
    Ah, in questo senso, dicevi che le righe erano troppe No, ma è un esercizio che ci ha dato la prof. di esercitazioni, nel quale dovevamo utilizzare solo if
    Grazie comunque

  6. #6
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    verrebbe un colpo a qualunque programmatore vedere 50 righe per 3 numeri, se fossi in te editerei per non far sentir male nessuno

    codice:
    #include<stdio.h>
    #define MAX(a,b) ((a>b) ? (a) : (b))
    #define MIN(a,b) ((a<b) ? (a) : (b))
    int main(){
        int a,b,c,temp;
        printf("inserisci i tre num");
        scanf("%d%d%d", &a,&b,&c);
        if(a!=b&&a!=c&&b!=c)printf("i numeri ordinati sono:\n%d\n%d\n%d\n", MIN(a, MIN(b,c)),MAX(a, MIN(b,c)),MAX(a, MAX(b, c)));
                                      else printf("ci sono numeri uguali\n");
        getchar();getchar();
        
        }

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    11
    Originariamente inviato da ant_alt
    verrebbe un colpo a qualunque programmatore vedere 50 righe per 3 numeri, se fossi in te editerei per non far sentir male nessuno

    codice:
    #include<stdio.h>
    #define MAX(a,b) ((a>b) ? (a) : (b))
    #define MIN(a,b) ((a<b) ? (a) : (b))
    int main(){
        int a,b,c,temp;
        printf("inserisci i tre num");
        scanf("%d%d%d", &a,&b,&c);
        if(a!=b&&a!=c&&b!=c)printf("i numeri ordinati sono:\n%d\n%d\n%d\n", MIN(a, MIN(b,c)),MAX(a, MIN(b,c)),MAX(a, MAX(b, c)));
                                      else printf("ci sono numeri uguali\n");
        getchar();getchar();
        
        }
    Grazie, ma #define in quel modo non l'ho ancora visto. Mi hanno suggerito come soluzione in un altro forum, particamente confronto prima i primi due e poi infilo il terzo in base al fatto che questo sia minore o maggiore degli altri due ed è venuto

    Grazie a tuti comunque

  8. #8
    Originariamente inviato da stgww
    Grazie, ma #define in quel modo non l'ho ancora visto.
    Sono delle semplici macro... puoi sostituirle con delle funzioni che facciano la stessa cosa:
    codice:
    int max(int a, int b)
    {
        return a>b?a:b;
    }
    
    int min(int a, int b)
    {
        return a<b?a:b;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

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.