PDA

Visualizza la versione completa : [C]Ordinare 3 Numeri


stgww
05-10-2009, 18:27
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

# 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");
}

Stoicenko
05-10-2009, 18:29
tutto quel codice per ordinare 3 numeri????? :dh: :dh: :dh: :dh: :dh:

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

stgww
05-10-2009, 18:34
Originariamente inviato da Stoicenko
tutto quel codice per ordinare 3 numeri????? :dh: :dh: :dh: :dh: :dh:

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

Cosa proponi?

Stoicenko
05-10-2009, 19:01
metti i numeri in un array e ti fai una funzione di ordinamento.. (4 righe a farla grande con 3 numeri), poi stampi..

stgww
05-10-2009, 19:46
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 ;)

ant_alt
05-10-2009, 20:01
verrebbe un colpo a qualunque programmatore vedere 50 righe per 3 numeri, se fossi in te editerei per non far sentir male nessuno :stordita:


#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();

}

stgww
05-10-2009, 20:34
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 :stordita:


#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;)

MItaly
05-10-2009, 20:59
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:


int max(int a, int b)
{
return a>b?a:b;
}

int min(int a, int b)
{
return a<b?a:b;
}

Loading