Condividi:        

SETI@Home

Discussioni e opinioni costruttive sul mondo dell'informatica.
Per la soluzione di problemi specifici fare riferimento alle sezioni di assistenza!

Moderatori: aurelio37, Anthony47, axelrox

Postdi Sergio1983 » 30/05/04 23:00

h23 ha scritto:Ragazzi, mi inchino di fronte a tutte le vostre risposte (complete ed esaurienti), ma la soluzione al quesito di BC e' proprio sotto il vostro naso:
BianConiglio ha scritto: ore = dif/3600;
minuti = (dif-(ore*3600))/60;
secondi = dif-((ore*3600)+(minuti*60));

un banalissimo errore di aritmetica ;)


A me questo codice non funziona ugualmente... restituisce ore decimali e minuti e secondi comunque anomali (< di 1).
E' meglio aver amato e perduto, piuttosto che non aver amato mai. (A. Tennyson)
Sergio1983
Utente Senior
 
Post: 2584
Iscritto il: 09/10/03 13:47
Località: Basso Piemonte

Sponsor
 

Postdi Ribonix » 30/05/04 23:14

Oggi ho ricevuto questa mail da parte di seti@home:

Dear Ribonix:

SETI@home turned five years old on May 17, 2004!
Thanks for participating in SETI@home.
According to our records, you have processed XXXXX work units,
the most recent on May 27, 2004.
Your contribution of computer time is greatly appreciated.

Support SETI@home
------------------------------------
You can support SETI@home by donating directly to us [omissis...]


Non basta il tempo che dedico loro e "aggratis"? :eeh:
Allah Akhbar! Allah Akhbar! Allah Akhbar!
Avatar utente
Ribonix
Utente Senior
 
Post: 346
Iscritto il: 12/02/03 22:41
Località: 3GYPT

Postdi h23 » 30/05/04 23:30

Sergio1983 ha scritto:A me questo codice non funziona ugualmente... restituisce ore decimali e minuti e secondi comunque anomali (< di 1).
Cos'e' che nbon funge allora???
fammi una cortesia, dai a dif una valore arbitrario >3660 (es 3672) e dimmi di preciso cosa ti restituisce, cosi' mi ci scervello un altro po' ;)
"Noctis aeternae chaos, aversa superis regna manesque impios dominunque regni tristis et dominam fide meliore raptam, voce non fausta precor." (Seneca, Medea)
h23
Utente Senior
 
Post: 1349
Iscritto il: 16/12/02 17:30
Località: 404 - file not found

Postdi h23 » 30/05/04 23:32

Ribonix ha scritto:Oggi ho ricevuto questa mail da parte di seti@home:
Dear Ribonix:

SETI@home turned five years old on May 17, 2004!
[cut]


e' arrivata anche a me, ma gia' da qualche giorno...
peccato che non ho ancora avuto il tempo di leggerla :x
"Noctis aeternae chaos, aversa superis regna manesque impios dominunque regni tristis et dominam fide meliore raptam, voce non fausta precor." (Seneca, Medea)
h23
Utente Senior
 
Post: 1349
Iscritto il: 16/12/02 17:30
Località: 404 - file not found

Postdi h23 » 31/05/04 00:07

Update:

col codice di prova corretto
Codice: Seleziona tutto
#include <stdio.h>
#include <time.h>

int main ()

{

  int dif;
  int ore;
  int minuti;
  int secondi;

  dif = 3672;

  ore = dif/3600;
  minuti = (dif-(ore*3600))/60;
  secondi = dif-((ore*3600)+(minuti*60));

  printf ("Time elapsed : %d:%d:%d \n", ore,minuti,secondi );

  system("PAUSE");

  return 0;
}

fila tutto liscio:

Immagine

:D
"Noctis aeternae chaos, aversa superis regna manesque impios dominunque regni tristis et dominam fide meliore raptam, voce non fausta precor." (Seneca, Medea)
h23
Utente Senior
 
Post: 1349
Iscritto il: 16/12/02 17:30
Località: 404 - file not found

Postdi Sergio1983 » 31/05/04 00:11

h23 ha scritto:
Sergio1983 ha scritto:A me questo codice non funziona ugualmente... restituisce ore decimali e minuti e secondi comunque anomali (< di 1).
Cos'e' che nbon funge allora???
fammi una cortesia, dai a dif una valore arbitrario >3660 (es 3672) e dimmi di preciso cosa ti restituisce, cosi' mi ci scervello un altro po' ;)


Codice: Seleziona tutto
DIF = 3672
ORE = DIF / 3600
MINUTI = (DIF - (ORE * 3600)) / 60
SECONDI = DIF - ((ORE * 3600) + (MINUTI * 60))

PRINT ORE, MINUTI, SECONDI


Restituisce:

Codice: Seleziona tutto
1.02          1.144409E-06               -2.728484E-12
E' meglio aver amato e perduto, piuttosto che non aver amato mai. (A. Tennyson)
Sergio1983
Utente Senior
 
Post: 2584
Iscritto il: 09/10/03 13:47
Località: Basso Piemonte

Postdi h23 » 31/05/04 00:15

@Sergio:
non conosco il basic, ma ad occhio mi sembra un problema di dichiarazione delle variabili...
sei sicuro di averle inizializzate tutte come int?
"Noctis aeternae chaos, aversa superis regna manesque impios dominunque regni tristis et dominam fide meliore raptam, voce non fausta precor." (Seneca, Medea)
h23
Utente Senior
 
Post: 1349
Iscritto il: 16/12/02 17:30
Località: 404 - file not found

Postdi Sergio1983 » 31/05/04 00:26

h23 ha scritto:@Sergio:
non conosco il basic, ma ad occhio mi sembra un problema di dichiarazione delle variabili...
sei sicuro di averle inizializzate tutte come int?


No, e il problema è proprio questo: difatti nel mio codice uso una procedura particolare proprio per affrontare questo problema, invece di evitarlo in partenza. Provvedo e posto! Si vede che non ho quasi mai programmato in vita mia... :oops: :roll:
E' meglio aver amato e perduto, piuttosto che non aver amato mai. (A. Tennyson)
Sergio1983
Utente Senior
 
Post: 2584
Iscritto il: 09/10/03 13:47
Località: Basso Piemonte

Postdi Ribonix » 31/05/04 00:29

@Sergio. in basic il codice crretto dovrebbe essere questo:
Codice: Seleziona tutto
DIF = 3672
ORE = Int(DIF / 3600)
MINUTI = Int((DIF - (ORE * 3600)) / 60)
SECONDI = DIF - ((ORE * 3600) + (MINUTI * 60))
Allah Akhbar! Allah Akhbar! Allah Akhbar!
Avatar utente
Ribonix
Utente Senior
 
Post: 346
Iscritto il: 12/02/03 22:41
Località: 3GYPT

Postdi BianConiglio » 31/05/04 01:42

porca tro.... :aaah :D
BianConiglio
Utente Senior
 
Post: 4710
Iscritto il: 26/12/01 01:00
Località: Varese / Lugano

Postdi BianConiglio » 31/05/04 01:43

:D la soluzione era sotto il mio naso, ok opero e fondo con mercurio
BianConiglio
Utente Senior
 
Post: 4710
Iscritto il: 26/12/01 01:00
Località: Varese / Lugano

Postdi Sergio1983 » 31/05/04 02:32

Ribonix ha scritto:@Sergio. in basic il codice crretto dovrebbe essere questo:
Codice: Seleziona tutto
DIF = 3672
ORE = Int(DIF / 3600)
MINUTI = Int((DIF - (ORE * 3600)) / 60)
SECONDI = DIF - ((ORE * 3600) + (MINUTI * 60))


Difatti funge! Ottimo...
E' meglio aver amato e perduto, piuttosto che non aver amato mai. (A. Tennyson)
Sergio1983
Utente Senior
 
Post: 2584
Iscritto il: 09/10/03 13:47
Località: Basso Piemonte

Postdi pjfry » 31/05/04 08:17

pjfry ha scritto:domani recupero il codice della tesi, praticamente facevo dei benchmark quindi avrò pur scritto qualcosa di utile :eeh: :lol:

uahahah la mia bellissima tesi usava solo i millisecondi, senza conversioni :lol: :D
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi BianConiglio » 31/05/04 11:30

Ok fatto...non l'ho minimamente provato..

http://cursumperficio.altervista.org/SetiBenchmark.exe

h23, questo è il sorgente, se hai problemi vedi se riesci a risolverli da te altrimeni mi ci metto appena ho tempo..

funziona 0così... metti il benchmark nella cartella di seti, rinomini seti in seti.exe, cancelli state.sah e ci metti una WU nuova che consereverai per le prossime elaborazioni da testaere, poi lanci il benchmark che lancia seti.exe e conta i secondi che ci mette con un errore massimo di 1 secondo...ci sarebbero da aggiungere i giorni.. fai te se vuoi :D

Codice: Seleziona tutto
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>

int main() {
 
  char *tmp2;
  char fatte[100];
  int fatteprima;
  int fattedopo;
  FILE *fileuser;
 
  time_t start,end;
  double dif;
  int ore,minuti,secondi;
 

    while(1)
   
    {
   
    ShellExecute( NULL, "open", "seti.exe", NULL, NULL, SW_SHOWNORMAL );
    time (&start);
    printf("Workunit Started   --> %s",asctime(localtime(&start)));
    fileuser = fopen("user_info.sah", "r");
   
    if(fileuser==NULL)
   
    {
      MessageBox (NULL, "Error reading \"user_info.sah or seti.exe\"!! Be sure\nto have it in the same folder of SetiBenchmark.exe\n", "D'ho! (Homer Simpson's way)", MB_OK);
      return 1;
    }
 
    else {
       
            while(fgets(fatte, 100, fileuser)!=NULL)
     
              {
   
                  if(tmp2=strstr(fatte,"nresults="))
     
                   {
                         tmp2=tmp2 + 9;
                         fatteprima=(int)atof(tmp2);
                         break;
                   }
       
              }
               
         }


    fclose(fileuser);
    sleep(1000);
   
    fileuser = fopen("user_info.sah", "r");
   
    if(fileuser==NULL)
   
    {
      MessageBox (NULL, "Error reading \"user_info.sah\"!! Be sure to\nhave it in the same folder of SetiBenchmark.exe\n(It should be the same one for seti@home)", "D'ho! (Homer Simpson's way)", MB_OK);
      return 1;
    }
 
    else {
       
            while(fgets(fatte, 100, fileuser)!=NULL)
     
              {
   
                  if(tmp2=strstr(fatte,"nresults="))
     
                   {
                         tmp2=tmp2 + 9;
                         fattedopo=(int)atof(tmp2);
                         break;
                   }
       
              }
               
         }


    fclose(fileuser);
   
    if (fattedopo > fatteprima)
                         
    {
   
    time (&end);
    dif = difftime (end,start);
    printf("Workunit Completed --> %s\n",asctime(localtime(&end)));
 
    ore = dif/3600;
    minuti = (dif-(ore*3600))/60;
    secondi = dif-((ore*3600)+(minuti*60));

    printf ("Time elapsed : %d:%d:%d \n", ore,minuti,secondi );
 
    system("PAUSE");
                             
    }
   
    }

    return 0;
 
}
BianConiglio
Utente Senior
 
Post: 4710
Iscritto il: 26/12/01 01:00
Località: Varese / Lugano

Postdi BianConiglio » 31/05/04 11:32

ha per se vuoi che finita la wu tutto si fermi, e far si che non scarichi una nuova WU dopo l'invio di questa, metti un file txt chiamato stop_after_send.txt nella stessa cartella di seti.... spediti i risultati non scaricherà altre wu...
BianConiglio
Utente Senior
 
Post: 4710
Iscritto il: 26/12/01 01:00
Località: Varese / Lugano

Postdi BianConiglio » 31/05/04 11:35

ah... a favilla se seti.exe è gia eseguito (fai partire prima il benchmark) non interessa... basta che gli passi i valori e come path seti.exe che lui vede che è gia eseguito e inizia a fare i suoi lavoretti....
BianConiglio
Utente Senior
 
Post: 4710
Iscritto il: 26/12/01 01:00
Località: Varese / Lugano

Postdi BianConiglio » 31/05/04 23:36

h23 ha scritto:BianCo, sto aspettando il mercurio modificato per iniziare i benchmark ;)



:aaah sa te set drè a fà cusè ??!! :aaah moves :aaah

scattareeeee !!! :D daiiii
BianConiglio
Utente Senior
 
Post: 4710
Iscritto il: 26/12/01 01:00
Località: Varese / Lugano

Postdi h23 » 01/06/04 08:57

c'e' un bug: quando avvio setibenchmark va in loop;
continua a dire "Workunit started..." ogni 2 o 3 secondi...
stasera vedo di capire cosa c'e' che non va
"Noctis aeternae chaos, aversa superis regna manesque impios dominunque regni tristis et dominam fide meliore raptam, voce non fausta precor." (Seneca, Medea)
h23
Utente Senior
 
Post: 1349
Iscritto il: 16/12/02 17:30
Località: 404 - file not found

Postdi BianConiglio » 01/06/04 11:49

he si ho messo il while troppo in altro, vero, risolvo nel pomeriggio
BianConiglio
Utente Senior
 
Post: 4710
Iscritto il: 26/12/01 01:00
Località: Varese / Lugano

Postdi h23 » 01/06/04 14:18

BianConiglio ha scritto: :aaah sa te set drè a fà cusè ??!! :aaah moves :aaah
:?:
"Noctis aeternae chaos, aversa superis regna manesque impios dominunque regni tristis et dominam fide meliore raptam, voce non fausta precor." (Seneca, Medea)
h23
Utente Senior
 
Post: 1349
Iscritto il: 16/12/02 17:30
Località: 404 - file not found

PrecedenteProssimo

Torna a Discussioni


Topic correlati a "SETI@Home":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti