PDA

View Full Version : Ho bisogno di una mano(programma in c)


lucas87
18-10-2006, 15:38
Salve a tutti, avrei bisogno di un aiuto, sono da giorni alla ricerca della risoluzione del seguente esercizio:
Inseriti tre interi da tastiera, ordinarli dal piu grande al piu piccolo.
Continuo a bsatterci la testa ma non troivo la soluzione. C'è una qualche anima buona che potrebbe postarmelo??

Ringrazio tutti in anticipo.

AngeL)
18-10-2006, 15:51
io non posterei direttamente, il codice, preferirei aiutarti a scriverlo.
quoto -fidel- :
ci sono diversi modi per risolvere un problema, tu pensa a quello che faresti mentalmente (o con carta e penna) e vedi che troverai la tua strada. Ah, cerca di pensare come un bimbo delle elementari (:D), suddividi il problema in piccole parti molto semplici. Il computer è una macchina stupida, quindi devi riuscire a scomporre il problema in piccoli passi elementari: è una cosa che anche il tuo cervello fa sempre (per quanto a 20 anni, per problemi così semplici, il tuo cervello lo fa in automatico: è proprio questo il difficile, diventare consci delle azioni che la tua mente ormai fa in automatico per questo tipo di problemi semplici).
posta i tuoi dubbi e il codice che hai scritto finora e verrai aiutato ;)

lucas87
18-10-2006, 17:34
Il problema è che non ho scritto niente, e lo devo consegnare domani, se avevo più tempo ce lavrei speso, il punto è che sono in forte ritardo. Mi aiutate??? please

mamo139
18-10-2006, 17:40
scanf("%d %d %d",&a,&b,&c);

if (a > b) {
if (a > c) printf("%d",a);
else printf("%d",c);
}
else {
if(b > c) printf("%d",b);
else printf("%d",c);
}

lucas87
18-10-2006, 17:49
ti ringrazio per averci provato, ma stampa solo il numero maggiore dei 3, invece deve stamparli tutti e tre dal piu grande al piu piccolo.

AngeL)
18-10-2006, 17:51
ti ringrazio per averci provato, ma stampa solo il numero maggiore dei 3, invece deve stamparli tutti e tre dal piu grande al piu piccolo.
basta modificarlo un po'... capisco che lo devi consegnare domani ma penso che almeno 2 minuti oggi li hai, no?

lucas87
18-10-2006, 17:56
Hai ragione, ma sono incapace...

AngeL)
18-10-2006, 18:22
lho scritto al volo nn so se funziona

if (a > b)
{
if (a > c)
{
printf("%d\n",a);
if(b>c) printf("%d\n%d\n",b,c);
else printf("%d\n%d\n",c,b);
}
else printf("%d\n%d\n%d\n",c,a,b);
}
else
{//b>a
if(b > c)
{
printf("%d",b);
if(c>a) printf("%d\n%d\n",c,a);
else printf("%d\n%d\n",a,c);
}
else printf("%d\n%d\n%d\n",c,b,a);
}

-fidel-
18-10-2006, 18:28
Ecco come ragionerebbe un bimbo delle elementari


#include <stdio.h>

int main(void)
{
int x, y, z;
int ordinati[3];
printf("Inserisci 3 numeri interi positivi separati da spazio (es: 4 7 3): ");
scanf("%d %d %d", &x, &y, &z);

if (x < y)
{
if (x < z)
{
ordinati[0] = x;
if (y < z)
{
ordinati[1] = y;
ordinati[2] = z;
}
else
{
ordinati[1] = z;
ordinati[2] = y;
}
}
else
{
ordinati[0] = z;
ordinati[1] = x;
ordinati[2] = y;
}
}
else
{
if (x < z)
{
ordinati[0] = y;
ordinati[1] = x;
ordinati[2] = z;
}
else
{
if (y < z)
{
ordinati[0] = y;
ordinati[1] = z;
ordinati[2] = x;
}
else
{
ordinati[0] = z;
ordinati[1] = y;
ordinati[2] = x;
}
}
}
printf("Numeri ordinati: %d %d %d\n", ordinati[0], ordinati[1], ordinati[2]);
return 0;
}


Funziona sempre, anche con due o più numeri uguali tra loro...
Spero il concetto sia chiaro, magari riesci a snellire il codice postato, oppure puoi trovare un modo più intelligente e meno meccanico.

mamo139
18-10-2006, 18:53
ti ringrazio per averci provato, ma stampa solo il numero maggiore dei 3, invece deve stamparli tutti e tre dal piu grande al piu piccolo.
era solo per darti un esempio :Prrr:

repne scasb
18-10-2006, 19:13
#include <stdio.h>

void main(void)

{
int a,b,c;

printf("Inserire 3 numeri interi: ");
scanf("%d %d %d",&a,&b,&c);

if(a>b)
{
a=a-b;
b=b+a;
a=b-a;
}
if(b>c)
{
b=b-c;
c=c+b;
b=c-b;
}
if(a>b)
{
a=a-b;
b=b+a;
a=b-a;
}

printf("Numeri ordinati: %d %d %d\n",a,b,c);
}

AngeL)
18-10-2006, 20:39
#include <stdio.h>

void main(void)

{
int a,b,c;

printf("Inserire 3 numeri interi: ");
scanf("%d %d %d",&a,&b,&c);

if(a>b)
{
a=a-b;
b=b+a;
a=b-a;
}
if(b>c)
{
b=b-c;
c=c+b;
b=c-b;
}
if(a>b)
{
a=a-b;
b=b+a;
a=b-a;
}

printf("Numeri ordinati: %d %d %d\n",a,b,c);
}

non ho capito come funziona :mbe:

repne scasb
18-10-2006, 21:52
non ho capito come funziona

Non mi pare una cosa grave.

-fidel-
18-10-2006, 22:06
non ho capito come funziona :mbe:

Sono i primi 3 passi dell'algoritmo di ordinamento "bubble sort" (o meglio, è l'algoritmo bubble sort applicato a 3 elementi, quindi implementato senza alcun ciclo).


Non mi pare una cosa grave.
:asd:

wingman87
18-10-2006, 23:19
Forse non ha capito lo scambio di valori tra due variabili senza usarne una di appoggio..

Goten_ssj
19-10-2006, 00:40
Salve a tutti, avrei bisogno di un aiuto, sono da giorni alla ricerca della risoluzione del seguente esercizio:
Inseriti tre interi da tastiera, ordinarli dal piu grande al piu piccolo.
Continuo a bsatterci la testa ma non troivo la soluzione. C'è una qualche anima buona che potrebbe postarmelo??

Ringrazio tutti in anticipo.

diciamo ke 6 il classico scansafatiche..
cmq se nn riesci a fare sto programma da solo diciamo che puoi darcela su cn la programmazione.. =_=