|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
Aiuto!!!
Ciao,
sto seguendo il tutorial di TurboPascal a quest'indirizzo: http://www.leadergl.e1000.it/index.p...Turbo%20Pascal e sono alla Lezione 3. Ho avuto difficoltà negli esercizi finali ai punti 3,6 e 7. Il punto 3 tutto, il punto 6 tutto ed il punto 7 la seconda metà. Il punto 3 Credo di non aver capito appieno l'algoritmo per risolvere le equazioni di secondo grado. A me sembra che con quello proposto non sorga nessun problema se "b=0" dato che non c'è nessuna divisione che implica "b". Il punto 6 Del 6 ho fatto solo la prima (di tre) parti, ma è sbagliata, o meglio non è sbagliata, ma in un punto fa uso della divisione mentre e la consegna dice solo addizione e sottrazione. Quote:
Prendiamo come esempio 2*3 che equivale è uguale a 2+2+2, ora prendiamo (nella moltiplicazione) il 3 come y, il "numero di due" (scusate il litigio tra i termini Ora, come posso fare a definire quella divisione con un addizione (o sottrazione)? Il fatto che non sia riuscito a risolvere gli altri quesiti del punto 6 è una diretta conseguenza del primo, perchè non riesco a trovare un metodo di rendere la divisione con la somma algebrica, come invece sono riuscito a fare per la moltiplicazione. Il punto 7 Sono riuscito con tranquillità per quanto riguarda il primo punto (bastava basarsi sull'algoritmo per il calcolo della moltiplicazione con la somma, la differenza è che qua usare moltiplicazione e divisione è lecito). Però mi sono incasinato per quanto riguarda il secondo punto. Mi sono scervellato Dateli uno sguardo, è importante (almeno, per me...). Potrei passare oltre, ma non è questo che voglio, voglio programmare come si deve! P.S. I programmi non sono in TurboPascal, ma in linguaggio "algoritmico".
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 |
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
Nessuno?
Non credo che per voi che già programmate sia così difficile...
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
|
Quote:
Un titolo che non chiarisce di cosa si parli, in un post fatto a mezzanotte e con pretese di risposta dopo 1 ora e un quarto, cioè all'una di notte PS: non ho voglia di andarmi a leggere gli esercizi, ho già dato ai miei tempi Se riporti il testo dell'esercizio almeno nella parte che dà problemi, magari un'occhiata ci si può dare |
|
|
|
|
|
|
#4 | ||
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
Algoritmo:
Codice:
leggi a, b, c
discriminante <-- b^2 + 4*a*c
SE discriminante < 0
ALLORA
scrivi "nessuna soluzione reale"
ALTRIMENTI
SE discriminante = 0
ALLORA
x <-- (-b) / (2*a)
scrivi "Due soluzioni coincidenti"
ALTRIMENTI
x1 <-- (-b - sqr(discriminante))
x1 <-- (-b + sqr(discriminante))
scrivi "Due soluzioni: ", x1, x2
FINE SE
FINE SE
Quote:
Codice:
x <-- (-b) / (2*a) Quote:
Codice:
FOR Indice:=2 to Y DO Risultato:=x+x; END FOR Codice:
quoziente:=0; WHILE (x>=y) DO x:=x-y; // ci da il resto della divisione quoziente:=quoziente+1; //il quoziente END WHILE Codice:
FOR indice:=2 to Y DO risultato:=x*x; END FOR Codice:
FOR Indice:=2 to Y DO Risultato:=x+x; END FOR
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
||
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
Grazie leadergl
Quote:
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 Ultima modifica di metallic : 01-03-2006 alle 13:39. |
|
|
|
|
|
|
#6 | ||||
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
Non ho ancora capito alcune cose...
Quote:
Non dovrebbe essere: risultato:=x FOR Indice:=2 TO y DO Risultato:=Risultato+x END FOR Di modo che ad ogni riesecuzione del ciclo "risultato" venga incrementato di un "x" e di modo che anche se "y" vale 1 (x*1) alla richiesta di stampa di "x" venga stampato la "x" di input originale (x*1) (dato che il ciclo while non è stato eseguito). Quote:
Quote:
FOR Indice:=2 TO Y DO risultato:=risultato*x END FOR Idem come la moltiplicazione con la somma? Qua Quote:
Grazie della pazienza
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 Ultima modifica di metallic : 01-03-2006 alle 15:40. |
||||
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
leadergl?
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
:P si scusa hai ragione
Codice:
Risultato:=X
FOR Indice:=2 to Y
Risultato:=Risultato+X; {Risultato:=Risultato*X}
END FOR
Quote:
Risultato:=Risultato+X (nel FOR) equivale a fare Risultato:=X+X+...+X Risultato:=Risultato*X (nel FOR) equivale a fare Risultato:=X*X*...*X
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
|
#9 | |
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
Quote:
Si potrebbe definire l'elevamento a potenza con l'addizione per una determinata base ed una determinata potenza, ad esempio con 3 elevato 2: FOR 2 TO y (che è 2) DO Risultato:=Risultato+x+x END FOR Ma gia' nel caso di 3 elevato 3 diventerebbe: FOR 2 TO y (che è 3) DO Risultato:=Risultato+x+x+x+x END FOR E nel caso di 3 elevato 4 non c'è una formula con l'addizione ed il FOR! Come si potrebbe fare? Grazie! P.S. Mi spieghi da dove hai ricavato l'algoritmo per la divisione? Probabilmente era una regola matematica che non conoscevo... Risulta meno intuitivo di quello della moltiplicazione...
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 Ultima modifica di metallic : 01-03-2006 alle 21:20. |
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
Probabilmente non sara' importantissimo, pero' se c'è come esercizio...
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
Riguardo l'elevamento a potenza siccome l'abbiamo definito come la moltiplicazione di X per se stesso tante volte quante Y ed abbiamo inoltre definito la moltiplicazione come la somma di X tante volte (quante necessarie) a se stesso e presto detto:
X*Y = x+x+..+x (tante volte volte quante y-1) X^Z = x*x*..*x (tante volte quanto Z-2) basta fare le opportune sostituzioni oppure creare una procedura per la moltiplicazione di due numeri che usa le addizioni ed una che eleva a potenza usando la procedura che abbiamo creato per le moltiplicazioni se serve altro non hai che da chiedere
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#12 | ||
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
Quote:
Quote:
Sennò passo oltre Tanto non credo sia una cosa cruciale per imparare il Turbo Pascal... Sembra più opportuna per verificare le conoscenze matematiche...
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 |
||
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
...scusa è come "simulare" la moltiplicazione tramite una procedura aggiuntiva creata da te che andrebbe a sostituire il *:
Codice:
Function Moltiplicazione(X,Y: Integer): Integer;
VAR Risultato: Integer;
iIndice: Integer;
Begin
Risultato:=X;
FOR iIndice:=2 to Y DO
Risultato:=Risultato+X;
Moltiplicazione:=Risultato;
End;
Function ElevazionePotenza(Base, Esponente: Integer):Integer;
VAR Risultato, iIndice: Integer;
Begin
IF Esponente=0 THEN
Risultato:=1
ELSE IF (Esponente=1) THEN
Risultato:=Base
ELSE BEGIN
Risultato:=Base;
FOR iIndice:=2 to Esponente DO
Risultato:=Moltiplicazione(Risultato, Base);
END;
ElevazionePotenza:=Risultato;
End;
in ogni caso sono sempre qui
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC Ultima modifica di leadergl : 02-03-2006 alle 20:53. |
|
|
|
|
|
#14 | |
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
Quote:
Ora ho un problemino (credo che ti pentirai di avermi linkato il tutorial, a furia di farti domande... Scrivere un algoritmo, basato sulle tre strutture di controllo fondamentali, che riceva in ingresso una sequenza di numeri interi e riporti in uscita il più grande e il più piccolo tra i numeri letti. Si supponga che l'inserimento del numero zero indichi la fine della sequenza. Mi sono immedesimato un pò di più della logica degli algoritmi (infatti tutti gli altri gli ho fatti) ma questo proprio non l'ho capito. A differenza degli altri, dove tutti i numeri inseriti andavano a convergere in un'unica variabile (per somma o per moltiplicazione) qui sembra quasi ci voglia una variabile apposta per ogni numero inserito, ma non si sa quanti saranno (la sequenza termina con l'inserimento del numero zero)... Infatti bisogna avere i numeri com'erano all'inizio per fare i confronti, e bisogna anche trovare un modo per fare i confronti tra tutti i numeri (non solo due). E non vedo come si possa fare solo con le tre strutture di controllo fondamentali... Idea? Grazie!
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
ti faccio alcune domande che magari ti aprono la mente per il solo fatto di farti pensare:
1) quali sono le tre strutture fondamentali? 2) dove sta scritto che devi leggere prima tutti i numeri e poi trovare il min. e max.? 3) dove dovrebbe essere, in ogni caso, la difficoltà a fare dei confronti "incrociati" tra più valori? Esempio: Quote:
P.S. Programmare è ben più difficile che riuscire a scrivere delle righe di codice in un qualche linguaggio, un programmatore deve trovare la strada per risolvere un determinato problema ed implementare la sua idea al PC tramite un algoritmo. Tu pensa a COME risolvere senza il PC questo problema e poi lo implementiamo
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
|
#16 | |
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
1.a) Sequenza (permette di eseguire le istruzioni così come sono scritte)
1.b) Selezione (permette di scegliere in base al valore di una condizione l'esecuzione di un blocco di istruzioni tra due possibili 1.c) Iterazione (permette di eseguire un certo numero di volte un blocco di istruzioni) Vabbé ho dato una sbirciatina al manuale 2) Infatti oggi mentre ci pensavo (pensa un pò durante le lezioni Dimmi cosa ne pensi: Quote:
Forse sto entrando sempre più nella logica corretta?
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 |
|
|
|
|
|
|
#17 | ||
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
Quote:
Quote:
Codice:
ESEGUI...FINO A QUANDO Codice:
SE x<>0 Fai in modo che semplicemente se X=0 non fa nulla, altrimenti entra dentro
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
||
|
|
|
|
|
#18 | |||
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
Quote:
Non posso mettere un semplice SE, perchè altrimenti la lettura di x si effettuerebbe una sola volta, devo per forza inserire tutto in un ciclo a ripetizione (e di conseguenza verificare due volte il valore di x). Ho pensato anche di metterlo in un ciclo a verifica iniziale (e non finale come questo), ma non andrebbe bene: Quote:
-inserisco 2 -il ciclo viene eseguito e rieseguito rieseguito perchè al punto della verifica x è 2, e non 0 -quando richiesto inserisco 0 -se 0 è minore di xmin/xmax, xmin/xmax verrà sovrascritto -solo al punto della riverifica il ciclo termina. L'unico modo è con un ciclo a ripetizione combinato ad un SE. Era un test? P.S. Quote:
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 |
|||
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: May 2003
Messaggi: 1113
|
Codice:
Leggi X;
Min=X;
Max=X;
Leggi X;
While X<>0
If X<Min
Min=X
else If X>Max
Max=x
end if
Leggi X;
do
__________________
| Athlon XP Barton 3000+ | CoolerMaster HAC-V81 | ASUS A7N8X DELUXE v2.0 | 2*256 PC3200 + 1*512 PC3200 = 1GB DDR400| ATI Radeon 9250 | HD 80Gb Maxtor SATA | Ali Q-TEC 550W Dual Fan GOLD PFC |
|
|
|
|
|
#20 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 155
|
Beh non è una cattiva idea mettere "leggi x" alla fine
__________________
cAsE -> Viper Midi Tower aLiMeNtAtOrE -> RaptoxX 350W 1.3V mAiNbOaRd -> GigaByte K8NS (nForce 3 250) pRoCeSsOrE -> AMD Sempron 64 2800+ rAm -> Apacer 512MB PC3200 chipset Samsug (DDR-400MhZ) sChEdA vIdEo -> Asus Radeon A9250 256DDR dIsCo RiGiDo -> IBM Deskstar 40GB 7200rpm mAsTeRiZzAtOrE -> Plextor PXW161040A (16x10x40x) -> Powerd by... Slackware Linux 10.2 ->] registered Linux user number 401837 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:01.



















