|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
faccio programmazione da 2 settimane, è normale che non riesco a fare sti esercizi?
è proprio il ragionamento che mi frega, cioè risolverli piu matematicamente che altro non ci riesco proprio a fare questi quelli del libro invece si, il libro è deitel & deitel, non so se lo conoscete, ma quelli per 2 settimane di programmazione sono piu abbordabili, anche dal punto di vista del ragionamento |
|
|
|
|
|
#22 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
pensa ai passi che faresti mentalmente per risolvere un problema. Ad esempio quello del Massimo comun divisore (esercizio 4): dati due numeri, cosa fai? Io farei questo: 1) Scelgo il più piccolo tra i due (perchè il numero più grande non può essere divisore di quello più piccolo, trattando con degli interi... Non avrebbe senso ad esempio fare 5 diviso 8). 2) Provo a dividere i due numeri con tutti i valori compresi tra il numero più piccolo e 1. Quindi: 2.a) Assegno al divisore il valore più piccolo tra i due numeri 2.b) Divido entrambi i numeri per il divisore. 2.c) Se il resto di tutte e due le divisioni è 0, allora ho trovato il massimo comun divisore! (ed vado al passo 3)). 2.d) Se almeno uno dei due resti non è 0 (anche tutti e due...) allora decremento il valore del divisore. 2.e) se il valore del divisore è uguale a 1, mi fermo, altrimenti torno al passo 2.b) 3) Stampo il valore del divisore. In codice: Codice:
#include <stdio.h>
int main(void)
{
int x, y, divisore;
printf("Inserisci due numeri interi positivi separati da uno spazio (es: 6, 14): ");
scanf("%d %d", &x, &y);
if (x < y)
divisore = x;
else
divisore = y;
/* NOTA: si puo' fare anche con do-while, ma e' piu' comodo con while-do. */
while (divisore > 1)
{
if (((x % divisore) == 0) && ((y % divisore) == 0))
break;
divisore--;
}
printf("Il Massimo Comun Divisore tra %d e %d e': %d\n", x, y, divisore);
return 0;
}
Non è difficile quando ci fai l'abitudine
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson Ultima modifica di -fidel- : 17-10-2006 alle 17:34. |
|
|
|
|
|
|
#23 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
Vasec, come vedi 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 (
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
|
|
|
|
|
#24 | |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
Quote:
... chissà perchè ce lho messo )p.s. sono ancora 3 righe |
|
|
|
|
|
|
#25 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
vi ringrazio per i vostri consigli, cercherò di seguirli
|
|
|
|
|
|
#26 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
non ci riesco proprio a farre il quinto, mi aiutate?
mi manca solo quello sto ricominciando a fare quelli del libro, questi per ora sono un po complicatucci |
|
|
|
|
|
#27 | |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
Quote:
0a)prendi in input il numero da tastiera e lo inserisci in un int (o meglio un unsigned int, perchè puo' contenere valori più alti), (x) 0b)crei un int (ncifre) che conterra' il numero delle cifre e lo inizializzi a 1 (perche' il numero deve avere per forza almeno una cifra) 1)controlli se x è maggiore di 9 (quindi ha piu' di una cifra): se lo è dividi x per 10, aumenta ncifre di uno e ripeti questo passo, altrimenti vai avanti 2)ora ncifre contiene il numero di cifre che conteneva x all'inizio (conteneva perchè durante il passaggio 2 è stato diviso per 10, anche piu' di una volta) tradotto in codice: Codice:
#include <stdio.h>
int main(void)
{
unsigned int x;
short ncifre=1;//short int perche' non dovra' contenere valori elevati
printf("Inserire il numero: ");
scanf("%d",&x);
while(x>9)
{
x/=10;
ncifre++;
}
printf("%d è composto da %d cifre\n",x,ncifre);
}
Codice:
int lenght(int x)
{
int i;
for(i=1;x>9;i++,x/=10){}
return i;
}
//lenght(5)==1;lenght(20)==2;lenght(12478)==5...
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:18.











... chissà perchè ce lho messo
)








