Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    OT] Olimpiadi di informatica

    Essendo uno studente, mi sono iscritto alle selezioni scolastiche delle olimpiadi di informatica. Ebbene, i quesiti su cui sto esercitandomi sono un pò difficili x me (anche se programmo da 4 anni) xkè sono analisi di funzioni che non ho capito come si fanno...
    Esempio di esercizio:

    --------------------------
    La risposta vale 6 punti
    Si consideri il seguente frammento di programma.
    codice:
    type sequenza = array[1..100] of integer;
    
    function calcola(vett:sequenza; n:integer): integer;
    var i,y,x:integer;
    begin
    y:=0;
    x:=vett[1];
    for i:=1 to n-1 do
      begin
      if (x < vett[i+1]) then
        begin
        y:=vett[i+1]-x+y;
        x:=vett[i+1]
        end;
      if (x-y > vett[i+1]) then
        y:=x-vett[i+1];
      end;
    calcola:=y;
    end;
    Dire che cosa restituisce la funzione "calcola" assumendo che venga invocata passando un vettore di lunghezza n con n>2.
    Risposta aperta.
    ----------------------------

    La domanda è: come li devo risolvere? Qual'è il metodo? Non posso mica seguire riga x riga come se fossi un pc!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,059
    ed invece è proprio quello che devi fare:

    Prendi carta e penna, un array piccolo (tipo 5 elementi) e vedi un po' che succede...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3

    Re: OT] Olimpiadi di informatica

    i metodi sono 2: o fai come dice Andrea1979, o usi la sfera di cristallo...


    se programmi da 4 anni e non sei in grado di simulare a mente 4 righe di codice mi domando cosa abbia fatto in 4 anni :master:
    Ci sono cose che non si possono sapere. Per tutto il resto c'è man

    Prima di fare domande stupide: 1) googla 2) leggi le manpages 3) sparati.

  4. #4
    il fatto è che anche se io mi faccio le 4 righe a mente non riesco poi a capire qual'è la soluzione... cioè nell'es di prima io mi faccio 2 vettori di esempio, mi seguo la funzione e poi ho 2 risultati ma che ci faccio?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,059
    non fanno più fare il flow-chart e il tracciato del programma a scuola? Non parlo di controllo di correttezza formale, che anche per un programma banale è una bella rottura.

    Nel tuo caso (e in molti altri), la regola generale è:

    - Flow Chart del programma;
    - Inventare dati (tipo vett = {3,6,-1,2,-3} con n = 5);
    - Tracciato: ossia una tabellina in cui la prima colonna è il "passo" 1, 2, 3, ... nelle altre colonne metti i valori che ad ogni passo le variabili e condizioni (facile dal flowchart) assumono, e ? nel caso non sia ancora arrivato all'istruzione relativa:

    esempio
    codice:
    passo	x	y	vett		i	vett[i+1]	(x < vett[i+1])?	(x-y > vett[i+1])?
    0	3	0    3,6,-1,2-3		?	?		?			?
    1	3	0			1	6		3 < 6 ? V		?
    2	6	3			1	6					3 > -1 ? V
    etc etc
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Ha ragione Andrea :carta e penna

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 © 2020 vBulletin Solutions, Inc. All rights reserved.