Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    387

    Aiutatemi ho un esonero da superare!!!

    Ciao,
    vi prego di aiutarmi con un piccolo algoritmo in pascal:
    devo creare un array di numeri inseribili dall'utente , devoprendere ogni singolo numero dell'array , lo devo dividere per 2 e lo devo sostituire al suo valore intero.



    Aiutatemi vi prego!!!!

    Sarò lieto di potervi offrire una birra a tutti se supero questo quesito!!!

  2. #2
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    per me una lemon-soda:
    codice:
    program array_1;
    uses crt;
    const n=100;
    type vettore=array[1..n] of integer;
    var i,elementi:integer;
        a:vettore;
    
    begin
    clrscr;
    repeat
    write('Di quanti elementi deve essere formato l''array? ');
    readln(elementi);
    until (elementi<=n) and (elementi>=0);
    writeln;
    for i:=1 to elementi do
                         begin
                         write('Elemento ',i,'= ');
                         readln(a[i]);
                         end;
    writeln;
    for i:=1 to elementi do
                         begin
                         a[i]:=a[i] div 2;
                         writeln(a[i]);
                         end;
    readln;
    end.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    387
    grazie 1000! se supero l'esame te ne offro 2 di lemon soda!!

    ma che sono quei comandi:

    uses crt;

    clrscr;



    ?????

  4. #4
    Originariamente inviato da cso

    codice:
    repeat
    write('Di quanti elementi deve essere formato l''array? ');
    readln(elementi);
    until (elementi<=n) and (elementi>=0);
    io farei cosi'
    codice:
    repeat
    ...
    ....
    until (elementi > n) or (elementi < 0)
    come hai scritto tu faresti ripetere la lettura del numero degli elementi dell'array quando il valore è compreso tra 0 e n: cioè propio quando andrebbe bene!

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  5. #5
    Colino il linguaggio e la versione DEVONO essere specificati nel titolo della discussione: Leggi_Regolamento

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da Colino
    grazie 1000! se supero l'esame te ne offro 2 di lemon soda!!

    ma che sono quei comandi:

    uses crt;

    clrscr;



    ?????
    Ma non si parlava di BIRRE e non di Lemon Soda?

    Comunque...
    codice:
    Uses CRT;
    Serve ad importare la libreria CRT, che offre funzioni per la manipolazione del monitor e altre utilità.
    codice:
    clrscr;
    è una delle funzioni messe a disposizione della libreria CRT e pulisce lo schermo (effettua l'equivalente di un CLS di DOS).

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    Originariamente inviato da andrea_NET-_DSL
    io farei cosi'
    codice:
    repeat
    ...
    ....
    until (elementi > n) or (elementi < 0)
    come hai scritto tu faresti ripetere la lettura del numero degli elementi dell'array quando il valore è compreso tra 0 e n: cioè propio quando andrebbe bene!

    ma così accetta pure valori maggiori di quelli allocato nella memoria per gli array!!!!!
    Facendo così sfondi l'array...se fosse java ti direbbe array out of bounds...ma pascal non ti fa vedere nessun messaggio di errore ma ciò non è meno grave, anzi!!!!

    Naturalmente scherzavo per la lemon-soda
    una ombra di vino va più che bene

  8. #8
    Originariamente inviato da cso
    ma così accetta pure valori maggiori di quelli allocato nella memoria per gli array!!!!!
    Facendo così sfondi l'array...se fosse java ti direbbe array out of bounds...ma pascal non ti fa vedere nessun messaggio di errore ma ciò non è meno grave, anzi!!!!

    Naturalmente scherzavo per la lemon-soda
    una ombra di vino va più che bene
    ???

    do

    ....

    while ( (elementi > n) or (elementi < 0) )

    esegue il corpo del do-while quando elementi è minore di 0 o maggiore del numero massimo consentito di valori che puo' contenere l'array : quindi permette di rileggere il valore di elementi nel caso non fosse valido!

    Posto che il ciclo iterativo repeat-until è come un do-while fai le tue considerazione...!
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  9. #9
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    l'ho eseguito col mio bel TP e mi accetta solo valori esternia a 0 e N...quindi o "crei" lo spazio per un array che ha elementi meno dello 0 (cioè niente) o accetta valori che sfondano l'array!!!

    Ti sto dicendo per quando riguarda questo codice:
    codice:
    program array_1;
    uses crt;
    const n=100;
    type vettore=array[1..n] of integer;
    var i,elementi:integer;
        a:vettore;
    
    begin
    clrscr;
    repeat
    write('Di quanti elementi deve essere formato l''array? ');
    readln(elementi);
    until (elementi>n) or (elementi<0);
    writeln;
    for i:=1 to elementi do
                         begin
                         write('Elemento ',i,'= ');
                         readln(a[i]);
                         end;
    writeln;
    for i:=1 to elementi do
                         begin
                         a[i]:=a[i] div 2;
                         writeln(a[i]);
                         end;
    readln;
    end.
    CHE E' SBAGLIATO
    era giusto il codice che ho postato prima!!!

    O il mio compilatore è scemo oppure ti stai confondendo tra il while e il repeat (capita a tutti...è difficile ragionare al contrario)

    Prova a eseguire il codice che ho postato (2° post)...

  10. #10
    Originariamente inviato da cso
    l'ho eseguito col mio bel TP e mi accetta solo valori esternia a 0 e N...quindi o "crei" lo spazio per un array che ha elementi meno dello 0 (cioè niente) o accetta valori che sfondano l'array!!!

    Ti sto dicendo per quando riguarda questo codice:
    codice:
    program array_1;
    uses crt;
    const n=100;
    type vettore=array[1..n] of integer;
    var i,elementi:integer;
        a:vettore;
    
    begin
    clrscr;
    repeat
    write('Di quanti elementi deve essere formato l''array? ');
    readln(elementi);
    until (elementi>n) or (elementi<0);
    writeln;
    for i:=1 to elementi do
                         begin
                         write('Elemento ',i,'= ');
                         readln(a[i]);
                         end;
    writeln;
    for i:=1 to elementi do
                         begin
                         a[i]:=a[i] div 2;
                         writeln(a[i]);
                         end;
    readln;
    end.
    CHE E' SBAGLIATO
    era giusto il codice che ho postato prima!!!
    bè si perchè il repeat until non è che come il do-while....


    Il do-while(o while-do) esegue il blocco di istruzione MENTRE la condizione e' FALSA...quando diventa VERA ESCE....mentre il repetat until fà il CONTRARIO!


    Quindi và bene la PRIMA tua soluzione O la mia che pero' usa il do-while...NON IL REPEAT UNTIL!

    http://www.taoyue.com/tutorials/pascal/pas3dc.html qua la frase che ti ho evidenziato spiega propio cio' di cui noi stiamo discutendo
    In a repeat loop, compound statements are built-in -- you don't need to use begin-end. Also, the loop continues until the Boolean expression is TRUE, whereas the while loop continues until the Boolean expression is FALSE.

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.