View Full Version : Ho bisogno di una mano(programma in c)
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.
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 ;)
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
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);
}
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.
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?
Hai ragione, ma sono incapace...
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);
}
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.
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);
}
#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.
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.. =_=
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.