• T4CH
  • NEWS
  • VIDEO
Forum > Software

algoritmo while

Discussione inserita in 'Software' da Zatoichi, 17 Novembre 2008.

  1. Zatoichi techNewbie

    algoritmo while

    salve a tutti,

    forse per voi non centra niente ma fa sempre parte del campo dell'informatica e non sapevo dove postare^^

    siccome ho una seguenza di numeri da 1 a 2500 e devo costruire l'algoritmo,devo avanzare a multipli dello stesso numero quindi 1,4,9,16,25 ecc fino a 25000 ma non ci riesco proprio...qualcuno che ne sa qualkosa può aiutarmi? :(
    Zatoichi, 17 Novembre 2008
    #1
  2. Dyd666 techUser

    Scusami , potresti rispiegare il tuo problema?

    Sinceramente non è che ci abbia capito molto....

    Grazie
    Dyd666, 17 Novembre 2008
    #2
  3. Zatoichi techNewbie

    no no scusami te^^

    allora...dovrei stampare dei risultati partendo da 1 e andando avanti con il 4 poi con il 9 poi con il 16 e così via...in poche parole devo trovare il loro quadrato

    ad esempio:

    il generatore è 1 che arrivato alla condizione 1 è <= 50? mi fa andare avanti trovando il numero 2 (1<---1+1=2) e poi l'istruzione 2<--2*2=4 risalendo fino alla condizione...ma riesco a farlo fino qui...kome faccio a trovare il numero 3 e moltiplicarlo per se stesso e via dicendo?
    Zatoichi, 17 Novembre 2008
    #3
  4. Dyd666 techUser

    In parole povere , tu devi costruire un ciclo ( qual'è la condizione di questo ? ) che ad ogni numero associ il suo quadrato?

    Esempio: 1 ----> 1 ( edit: scusa il lapsus)

    2 ----> 4

    3-----> 9

    4 -----> 16

    ecc...ecc...
    Dyd666, 17 Novembre 2008
    #4
  5. Zatoichi techNewbie

    si esattamente come dici tu

    la condizione è che deve essere <=50
    Zatoichi, 17 Novembre 2008
    #5
  6. Dyd666 techUser

    Quindi quando arrivi al numero 7 ti dovresti fermare ( dato che il quadrato di 7 è 49...) ?

    Perdona le insistenti domande , ma almeno si arrivi diretti al punto :)
    Dyd666, 17 Novembre 2008
    #6
  7. Zatoichi techNewbie

    cioè la condizione sarebbe arrivare a 50 si ma è la radice di 25000^^quindi dovrei arrivare a 50 invece di 7...ma il punto è che mi blocco al multiplo di 2 çç
    Zatoichi, 17 Novembre 2008
    #7
  8. Dyd666 techUser

    [quote name='Zatoichi']cioè la condizione sarebbe arrivare a 50 si ma è la radice di 25000^^quindi dovrei arrivare a 50 invece di 7...ma il punto è che mi blocco al multiplo di 2 çç[/quote]



    Perfetto.

    Ricapitoliamo : dobbiamo scrivere un algoritmo che , presi in ingresso 50 numeri , da 1 a 50 , me ne stampi a video il rispettivo quadrato.

    (da cui in poi il codice verrà espresso tramite un linguaggio informale).

    Innanzitutto hai bisogno di un ciclo , il famigerato while e di un contatore , ovvero di una variabile che si incrementi ad ogni "ciclo" per l'appunto , posta come controllo ( esempio i <= 50), affinche si elaborino solo i numeri richiesti.

    Quindi avremo:

    Code:
    
    /*Inizializzazione della Variabile contatore e definizione ciclo */
    
    
    
    
    
    i=1                 
    
    While (i<=50)
    
    
    
    A questo punto calcoliamo il nostro quadrato
    
    
    
    While (i<=50)
    
    
    
    /* Ad una variabile quadrato assegniamo il quadrato del nostro contatore , che sta ad indicare anche il numero su cui operare */
    
    
    
    quadrato = i^2   
    
    
    
    
    
    Procediamo ora con la stampa a video
    
    
    
    While (i<=50)
    
    quadrato = i^2 
    
    Stampa_a_Video ( Il numero i elevato alla seconda è quadrato ) 
    
    
    
    /* con questa funzione di stampa a video ( generica ) verrà visualizzato il numero( i ) in questione più il valore della variabile quadrato */
    
    
    
    Inseriamo l'incremento del nostro contatore ( in modo da passare così al numero successivo da elaborare)
    
    
    
    While (i<=50)
    
     quadrato = i^2 
    
    Stampa_a_Video ( Il numero i elevato alla seconda è quadrato ) 
    
    i = i + 1
    
    
    
    A questo punto terminiamo il nostro ciclo
    
    
    
    While (i<=50)
    
      quadrato = i^2 
    
     Stampa_a_Video ( Il numero i elevato alla seconda è quadrato ) 
    
    i = i + 1
    
    Fine While
    
    
    Spero di essere stato almeno "abbastanza" chiaro :D

    Devi per caso farlo in qualche linguaggio specifico?
    Dyd666, 17 Novembre 2008
    #8
  9. Zatoichi techNewbie

    si in c++ ma ok mi sei stato molto di aiuto ti amoooo XD

    grazie mille
    Zatoichi, 17 Novembre 2008
    #9
  10. Dyd666 techUser

    [quote name='Zatoichi']si in c++ ma ok mi sei stato molto di aiuto ti amoooo XD

    grazie mille[/quote]



    Adesso non esageriamo... :lol::lol::lol:
    Dyd666, 17 Novembre 2008
    #10
  11. Zatoichi techNewbie

    mi sorge un dubbio....

    allora mettiamo in algoritmo:

    i=1

    i^2

    i<=50

    stampa i

    i=i+1

    fin qui ok anche tornando all'inizio con il risultato che verrebbe:

    i=2

    i^2

    i<=50

    stampa i

    i=i+1 (che sarebbe i elevato adesso alla seconda e quindi è 4+1)

    ma il nuovo ciclo incomincia con il numero 5.....o mi sbaglio?
    Zatoichi, 17 Novembre 2008
    #11
  12. Dyd666 techUser

    [quote name='Zatoichi']mi sorge un dubbio....

    allora mettiamo in algoritmo:

    i=1

    i^2

    i<=50

    stampa i

    i=i+1

    fin qui ok anche tornando all'inizio con il risultato che verrebbe:

    i=2

    i^2

    i<=50

    stampa i

    i=i+1 (che sarebbe i elevato adesso alla seconda e quindi è 4+1)

    ma il nuovo ciclo incomincia con il numero 5.....o mi sbaglio?[/quote]



    Appunto per questo io ho utilizzato una variabile ( quadrato ) adibita esclusivamente alla visualizzazione e al salvataggio , volta per volta , del quadrato ( scusa il gioco di parole) di ogni numero.

    La variabile i serve solo come contatore e a rappresentare il numero da elaborare ( 1 ,2 ,3 ,4 ,5 , 6.....).

    Se ti crea confusione puoi creare una variabile che faccia esclusivamente da contatore , quindi da controllo del ciclo , ed una invece che ti contenga solamente i valori da elaborare ( vedi sopra).



    Spero di esser stato chiaro :)
    Dyd666, 17 Novembre 2008
    #12
  13. Zatoichi techNewbie

    di lussooo adesso ho kapito...io ero konvinto ke dove c'era la condizione i<=50 dovevo mettere al posto della i il valore moltiplicato al quadrato XDXD ke stupido

    grazie dyd.....
    Zatoichi, 17 Novembre 2008
    #13
  14. Dyd666 techUser

    Di nuovo di nulla , il forum è qui apposta :)
    Dyd666, 18 Novembre 2008
    #14
  15. Falko techBoss

    Una domanda (se non ricordo male...) : al posto di usare i=i+1 in tipica sintassi basic, in C non si può usare l'operatore ++ (avendo di conseguenza i++ ) come incrementatore?
    Falko, 18 Novembre 2008
    #15
  16. Dyd666 techUser

    [quote name='Falko']Una domanda (se non ricordo male...) : al posto di usare i=i+1 in tipica sintassi basic, in C non si può usare l'operatore ++ (avendo di conseguenza i++ ) come incrementatore?[/quote]



    Si :)

    Dopo 2 - 3 anni di Visual Basic alle superiori , sono ancora abituato allo standard "Ad una variabile assegno qualcos'altro" :D
    Dyd666, 18 Novembre 2008
    #16
  17. Falko techBoss

    [quote name='Dyd666']Si :)

    Dopo 2 - 3 anni di Visual Basic alle superiori , sono ancora abituato allo standard "Ad una variabile assegno qualcos'altro" :D[/QUOTE]

    Capisco bene, ho lo stesso vizio pure io quando scripto in bash :p
    Falko, 18 Novembre 2008
    #17
  18. Davide Amministratore

    [quote name='Falko']Una domanda (se non ricordo male...) : al posto di usare i=i+1 in tipica sintassi basic, in C non si può usare l'operatore ++ (avendo di conseguenza i++ ) come incrementatore?[/quote]

    Confermo che funziona :)
    Davide, 18 Novembre 2008
    #18
  19. Falko techBoss

    Giusto che ho introdotto il linguaggio shell di linux...

    Code:
    
    #! /bin/sh
    
    
    
    i=1
    
    
    
    while [ "$i" -le 50 ]; do
    
         risultato=$(($i*$i))
    
         echo "il quadrato di $i è $risultato"
    
         i=$(($i+1))
    
    done


    lo stesso programma dei multipli in shell scripting ;)2
    Falko, 18 Novembre 2008
    #19
Password dimenticata?
SU TERMINI DI SERVIZIO CONTATTACI