Newsgroup: it.comp.lang.c
Titolo: Non ci capisco quasi nulla

Salve ragazzi
frequento la quinta ITIS e ad ottobre ilprof di fisica ha ripreso il
discorso del linguaggio c
Io vi dico sinceramente sono negata come molte altre ragazze.
Non capisco quasi nulla e l'anno scorso il prof ci ha insegnato un altro
linguaggio.
Avevo appena capito qualche cosa e lui ne inizia un altro e ci chiede di
tradurre programmini facili facili facili da uno all'altro linguaggio......
In fisica ci spiega le fasi lunari e poi ci tira fuori un programma in C che
le calcola.
Ormai svenivo
alle 9 mi ha interrogata e naturalmente sono andata male.
Per lunedi vuole che gli traduca in italiano in parole povere questo
programma
http://www.voidware.com/phase.c
Io lunedi non vado a scuola sto male solo a pensarci.
Ha chiamato il modo di tradurre che lui vuole in uno strano modo.
Quando mi ha vista strabuzzare gli occhi e ha capito che non avevo capito
niente mi ha detto:
Paula capisco che pensi che a Sao Vicente non ti serva ma serve a sviluppare
tante altre cose.
Devi solo capire cosa fa il programma e dirlo con le tue parole.
Per esempio
int x=5;
int result=0;
result=x*4;
devo tradurmelo come
moltiplico x (che vale 5 come  visto nella dichiarazione delle variabili)
per 4 e memorizzo nella variabile result il risultato.
Sembra un'iniezia ma dopo che sono andata a vedere il vero programma sono
svenuta.
Potete aiutarmi almeno nei punti critici?
Grazie mille
Baci Paila

 pensare ad una soluzione diversa .... una scelta diversa
Potrebbe darsi, ma ormai è in 5a, non mi sembra il momento giusto per 
cambiare :\\\\\\\\\
-- 
Ragno
http://ragnazz.altervista.org

 pensare ad una soluzione diversa .... una scelta diversa
Guarda che io vado benissimo non capisco nulla solo in inforematica
i commenti tendenti a distorcere la realtà non mi aiutano di certo a
preparare il compito di cui sopra per lunedi
paula

Paula ha scritto:



 Potete aiutarmi almeno nei punti critici?
Non ci sono punti critici. Sono tutte moltiplicazioni, sottrazioni
ed assegnamenti. La cosa piu' complicata che c'e' la dentro e' la
dereferenziazione di un puntatore ad una struttura.
Se dici quali sono le operazioni che non ti sono chiare...
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Ciao Angelo
ti  ringrazio molto, ero quasi disperata e ormai credevo che tutti
ecco alcune cose che non capisco affatto:
#define         SMALL_FLOAT (1e-12)
=============================================
while (fabs(dl)>=SMALL_FLOAT);
    v=360/PI*atan(1.01686011182*tan(e/2));
    l=v+282.596403;
    i=l/360;
    l=l-i*360.0;
    return l;
}
================================================
    for (;;) {
        double p;
        int ip;
        for (h = 0; h < 24; h += step) {
            p = moon_phase(y, m, d, h, &ip);
            if (begun) {
                if (p > plast && p > pmax) {
                    pmax = p;
                    ymax = y;
                    mmax = m;
                    dmax = d;
                    hmax = h;
                }
                else if (pmax) {
                    printf("%04d/%02d/%02d %02d:00          (fullest)\n",
                           ymax, mmax, dmax, hmax);
                    pmax = 0;
                }
                if (p < plast && p < pmin) {
                    pmin = p;
                    ymin = y;
                    mmin = m;
                    dmin = d;
                    hmin = h;
                }
                else if (pmin < 1) {
                    printf("%04d/%02d/%02d %02d:00          (newest)\n",
                           ymin, mmin, dmin, hmin);
                    pmin = 1.0;
                }
                if (h == 16) {
                    printf("%04d/%02d/%02d %02d:00 %5.1f%%   (%d)\n",
                           y, m, d, h, floor(p*1000+0.5)/10, ip);
                }
            }
            else begun = 1;
            plast = p;
        }
        nextDay(&y, &m, &d, 1.0);
        if (m != m0) break;
    }
    return 0;
}
Quest'ultimo blocco poi come fa a far vedere  tutti i giorni del mese
consaiderando tutti gli orari? E come lo dico in parole povere?
Sto qui ad aspettare
Grazie mille
e un bacio grossissimo
Paula

 ================================================
il codice originale era
 do {
	dl=e-.016718*sin(e)-x;
	e=e-dl/(1-.016718*cos(e));
    } while (fabs(dl)>=SMALL_FLOAT);
Questo codice si calcola il valore di 'e' per approssimazioni
successive, il calcolo viene ripetuto fino a quando il valore assoluto
del double dl e' maggiore o uguale a SMALL_FLOAT.
Spero che ti sia chiaro che v si calcola come 360 diviso
PI e moltiplicato per arcotangente di una costante moltiplicata
per la tangente di e diviso 2...

L'istruzione
for(;;)
inizia un ciclo infinito che finisce quando e' soddisfatta la
condizione
if (m != m0) break;
m diverso da m0.
prima del ciclo vengono acquisiti anno e mese
mediante le istruzuoni.
scanf("%d", &y);
scanf("%d", &m);
Successivamente si calcola la fase lunare mediante la chiamata
moon_phase(y, m, d, h, &ip);
che dato
anno, mese, giorno e ora
restituisce la fase lunare.
Poi c'e' un blocco di stampe a video (in base a certe condizioni
se ne fa una piuttosto che un'alta) e successivamente viene calcolato
dalla funzione
nextDay()
che riceve in ingresso anno, mese e giorno
li elabora e li restituisce in uscita.
ed il ciclo continua fino a quando il valore di m
calcolato da nextDay e' uguale a quello immesso dall'utente.
HTH
C:\>iao Angelo