Posts written by GILA75

view post Posted: 31/3/2020, 17:56 aiuto problema matematico - Fisica
Grazie Transistor, alla fine era uno stupido errore di segno

CITAZIONE
ANche perchè qualcuno doveva rispondergli ed io quei problemini di matematica all'italiana non li sopporto. Tipo conosciuti i parametri h e l'amplificazione necessaria per ottenere 6dB per i piccoli segnali trovare il numero di taglia delle scarpe del disegnatore di detto transistor e la marca della pasta che preferibilmente mangiava.
È incredibile come gli Italiani siano così... cavillici, cavillosi, cavillari, beceri, chiacchierono inopportuni.? :wb: :stres:

Law...è solo matematica. Credo che in tutte le parti del mondo possa esistere: -y²+8y-15=0

Non vedo il problema

P.S: magari non siete d'accordo, ma sarebbe bella una mini sezione per cose matematiche...che alla fine sono sempre
utili
view post Posted: 30/3/2020, 15:18 aiuto problema matematico - Fisica
Ciao a tutti ragazzi, scrivo qui perchè la sezione matematica non c'è. Al limite Law o Robo spostate.
Ho bisogno (per favore) di un chiarimento.
In questi giorni stavo aiutando il figlio minore della mia compagna in un esercizio. é in prima superiore...e già le cose
si fanno toste...a me sono passati 25 anni e il mio indirizzo fisica e matematica le passava solo di striscio.
Più o meno dice: trovare 2 numeri (x,y) la cui somma sia 8 e il cui prodotto sia 15:
es:
x=5
y=3
in un primo momento ho pensato di risolvere con un sistema utilizzando il metodo di sostituzione:



x+y=8
xy=15

x=-y+8 (cambio di segno y)
-y+8*y=15 (sostituisco x con la y ricavata sopra)

ora "sviluppo" -y+8*y= -y²+8y-15=0

Solo in un secondo momento mi sono accorto che un sistema di equazioni non era sufficiente, e mi sono imbattuto
in un sistema di secondo grado:
Ripassando le equazioni di secondo grado e la formula del delta o discriminante salta fuori
che
a=-1
b=8
c=-15
e con questo script:
CODICE
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<math.h>
int main (void)
{
       double a=-1; //x²
       double b=8; //somma
       double c=-15; // prodotto
       double delta,x1,x2;
       delta=((b*b)-(4*(a*c)));
       if (delta<0)
       {
               printf ("radice negativa\n");
               return 0;
       }
       else
               delta=sqrt(delta);
       printf ("deta %f\n", delta);
       x1=(-(b)+delta)/(2*a);
       x2=(-(b)-delta)/(2*a);
       printf ("x1= %f x2= %f\n",x1,x2);
       return 0;
}


ottengo:
CODICE
gila@gila-pc:~/Scrivania$ ./xx
deta 2.000000
x1= 3.000000 x2= 5.000000
gila@gila-pc:~/Scrivania$


quello che vorrei chiedere a voi è questo:
l'ultimo passaggio dove sono arrivato è questo:

-y²+8y-15=0

io so già in questo caso che y è 5 perchè me lo sono preparato. Quindi sostituendo mi aspettavo che l'equazione
fosse corretta ma....

-5²+(8*5)-15= ---->25+40-15= 80 sbagliato. Perchè????

Se invece svolgo con il discriminate va bene. Mistero :wb: :wb:

Edited by GILA75 - 30/3/2020, 20:02
view post Posted: 23/3/2020, 22:29 Perplessità processi (c,java,python, generico) - Informatica.
CITAZIONE
Sembra che il risultato sia buono. C'è tutto quello che volevi fare, compreso il rientro destra-sinistra e alto-basso.

Si, ho aggiunto i colori, la memorizzazione record nel file, e l'aumento della velocità in base ai punti. Una sorta di gioco a
livelli crescenti di difficoltà.
Si, carino, ma lo scopo del 3d è un po' naufragato: comparare pregi\difetti tra i processi e un programma sequenziale
a "polling", e infine la terza variante a stati finiti.
Quello era interessante. Il gioco si, un bell'esercizio tutto sommato... ma ripeto l'interessante era altro.
Tra la scomparsa di mia suocera e sta porcata che c'è in giro rimandiamo...
Ma sappiate... che prima o poi torno alla carica....!!! :D :D :ph34r:
view post Posted: 19/3/2020, 12:38 Perplessità processi (c,java,python, generico) - Informatica.
Un array di struct...non ci avevo pensato.
Calcola che un po' di codice in piu' e' per il file e per i colori
view post Posted: 19/3/2020, 11:10 Perplessità processi (c,java,python, generico) - Informatica.
Mi pareva invece che si potesse sforare i bordi...bho ricordo male allora , io l'ho fatto così preferivo.
Anche io se passo sopra i punti momentaneamente si cancellano, ma ho lasciato così, se no o complicavo
o dovevo sacrificare la prima riga...ho preferito lasciar stare.
Ecco il codice
Come detto l'ho dotato di memorizzazione del record su file...nulla di chè.
Qualcosa è migliorabile, ma per ora mi va bene così:
CODICE
// gioco bruco 3/2020 by Gila75 //

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include <ncurses.h>
#include <time.h>

#define ROW 43
#define COL 132
#define L_SNAKE 112
#define DX 261
#define SX 260
#define DOWN 258
#define UP 259
#define SIZE_BUFF 10
#define TEMPO 90000
int dir_up_down[4]={0,0,-1,1}; // array per direzioni (variabili globali)
int dir_lat[4]={1,-1,0,0};
int punti=0;

struct gioco
       {
               int x[500];
               int y[500];
               int rnd;
               int tmp_coda_x;
               int tmp_coda_y;
               int corpo;
               int bit_mela;
               int canc;
               
       }
       snake={.corpo=L_SNAKE, .bit_mela=0,.canc=0};




int cerca_file (FILE **fd, char buff[]);
int aggiorna_record(FILE **fd,char buff[],int old_record);
void init_bruco (struct gioco *punt);
void cambia_dir (struct gioco *punt, int dir_tasto,int mela_x,int mela_y);

//*******************************************************************************
// aggiorna il record su file, solo se è maggiore del vecchio record


int  aggiorna_record(FILE **fd,char buff[],int old_record)
{
       
       *fd=fopen("record.txt", "r");
       if(*fd==NULL )
               exit(0);
               
       if (punti>old_record)
       {
               fclose(*fd);
               *fd=fopen("record.txt", "w");
               if (*fd==NULL)
                       exit(0);
               fprintf (*fd,"%d",punti);
               fclose(*fd);
               return 1;
       }

       else
       {        
               fclose(*fd);
               return 0;        
       }
}
//*******************************************************************************


//*******************************************************************************
// cerca il file per memorizzare i record: se non esiste lo crea e
// lo inizializza a zero
// se esiste legge il contenuto per confrontarlo piu avanti
//*******************************************************************************

int cerca_file (FILE **fd,char buff[])
{
       int n,x;
       *fd=fopen("record.txt", "r");
       if( *fd==NULL )
       {
               move (19,35);
               printw("*********************************\n");
               move (20,35);
               printw ("* nessun record memorizzato     *\n");
               move (21,35);
               printw ("* premi un tasto per proseguire *\n");
               move (22,35);
               printw("*********************************\n");
             *fd=fopen("record.txt", "w");

               if( fd==NULL )
               {
                   printw("impossibile creare");refresh();
                       exit(0);
               }
               fprintf (*fd,"%d",0);
               fclose(*fd);
               getch();
               erase();refresh();
               return 0;
       }

       else
       {
               for(;;)
               {
                       n = fread(buff, 1, SIZE_BUFF, *fd);    
                       if( n == 0 )
                       break;
               }
               x=atoi(buff);
               move (19,35);
               printw ("OLD RECORD:%d\n",x);
               move (20,35);
               printw ("premi un tasto per proseguire\n");
               refresh ();
               getch();
               erase();
              return x;
       }
}
               

//*******************************************************************************
       



void cambia_dir (struct gioco *punt, int dir_tasto,int mela_x,int mela_y)
{
       int j,tmp_x,tmp_y;
       attron(COLOR_PAIR(1));
       punt->tmp_coda_x=punt->x[punt->corpo-1]; // memorizzo la coda che il padre metterà come spazio
       punt->tmp_coda_y=punt->y[punt->corpo-1];
       
       for (j=0; j< punt->corpo-1; j++)
       {
               tmp_x=punt->x[j+1];      // scalo posizioni per muovere
               tmp_y=punt->y[j+1];      
               punt->x[j+1]=punt->x[0];
               punt->y[j+1]=punt->y[0];
               punt->x[0]=tmp_x;
               punt->y[0]=tmp_y;
       }
// se la testa incontra la mela : aumenta corpo, azzera  bit mela
// setta bit canc: non deve cancellare la coda...infatti aumenta
       if ((mvinch (punt->x[1]+dir_up_down[dir_tasto],punt->y[1]+dir_lat[dir_tasto]) & A_CHARTEXT) == 'X')
       {        
               punt->bit_mela=0;
               move (mela_x,mela_y);
               addch(' ');
               punt->corpo++;
               punt->x[punt->corpo-1]=punt->tmp_coda_x;
               punt->y[punt->corpo-1]=punt->tmp_coda_y;
               punt->canc=1;
               punti++;
               move (0,0);
               printw("punti %d\n",punti);refresh();
       }
       punt->rnd=dir_tasto;
       
}
                       

//*******************************************************************************
// inizializzazione bruco
//*******************************************************************************
void init_bruco (struct gioco *punt)
{
       int j;        
       for (j=0; j<punt->corpo; j++)
       {
           punt->x[j]=10;  // creo array bruco
           punt->y[j]=10+j; //11
       }        
               
       for (j=0; j<punt->corpo; j++) // stampo bruco
       {
               move(punt->x[j], punt->y[j]);
               addch('@');
       }
       
       move(punt->x[0], punt->y[0]);
       addch('<');refresh();

}

       


int main(void)
{
       
       initscr();   // init ncurses
       cbreak();        // e funzioni varie per ncurses
       noecho();
       curs_set(0);
       intrflush(stdscr, FALSE);
       keypad(stdscr, TRUE);
       start_color ();
//*********************************
       srand((unsigned) time(NULL));
       char heads[]="><^V";
       int ch=0;
       int tmp_dir=1;
       int mela_x,mela_y,i,old_record;
       char buff[SIZE_BUFF];  
       FILE *fd;
       // iniz. colori
       init_pair(1,COLOR_GREEN,COLOR_BLACK); // verde su black (snake)
       init_pair(2,COLOR_RED,COLOR_BLACK); // rosso su black (testa)
       init_pair(3,COLOR_YELLOW,COLOR_BLACK); // rosso su black (mela)

       old_record=cerca_file (&fd,buff);
       attron(COLOR_PAIR(1)); //attiva coppia colori 1
       init_bruco (&snake);
       nodelay (stdscr, TRUE); // getc() NON bloccante
       while(1)
       {
               attron(COLOR_PAIR(1));
               ch=getch();
               if (ch==-1)
                       cambia_dir (&snake,tmp_dir,mela_x,mela_y);

               if (ch==DX && tmp_dir!=1) //se vai a dx,negato sx
               {  
                       cambia_dir (&snake,261-ch,mela_x,mela_y);
                       tmp_dir=261-ch;
               }
               
                       
               if (ch==SX && tmp_dir!=0)
               {        
                       cambia_dir (&snake,261-ch,mela_x,mela_y);
                       tmp_dir=261-ch;
               }
                       
               if (ch==UP && tmp_dir!=3)
               {  
                       cambia_dir (&snake,261-ch,mela_x,mela_y);
                       tmp_dir=261-ch;
               }
                       
               if (ch==DOWN && tmp_dir!=2)
               {  
                       cambia_dir (&snake,261-ch,mela_x,mela_y);
                       tmp_dir=261-ch;
               }
               
               if (ch==32)
               {
                       while (1)
                       {
                               ch=getch();
                               if (ch==32)
                                       break ;
                       }
               }
                       
                       
               snake.x[snake.corpo]=snake.tmp_coda_x;
               snake.y[snake.corpo]=snake.tmp_coda_y;
               
               for (i=1; i<snake.corpo; i++)
               {
                       move (snake.x[i], snake.y[i]);
                       addch('@');refresh();
               }
               
               

               if ((mvinch(snake.x[1]+dir_up_down[snake.rnd],snake.y[1]+dir_lat[snake.rnd])& A_CHARTEXT) == '@')
               {
                       erase();
                       nodelay (stdscr, FALSE);
                       i=aggiorna_record(&fd,buff,old_record);
                       move (19,35);
                       printw("GAME OVER!!!! punti:%d\n",punti);
                       move (20,35);
                       printw("premi tasto per uscire\n");refresh();
                       getch();
                       
                       if (i==1)
                       {
                               move (20,35);
                               printw ("NEW RWCORD: punti %d\n", punti);
                               move (21,35);
                               printw ("tasto per uscire\n");refresh();
                               
                               getch();
                       }
                       endwin();
                       return 0;
               }
       
               else
               {
                       snake.x[0]=snake.x[1]+dir_up_down[snake.rnd]; //aggiorno dir testa in base al tasto arrivato
                       snake.y[0]=snake.y[1]+dir_lat[snake.rnd];
               }        
               
               attroff(COLOR_PAIR(1));
               attron(COLOR_PAIR(2));

               if (snake.y[0]>COL-1) // sbuca a col 0
               {
                       snake.y[0]=0;
                       move (snake.x[0], snake.y[0]);
                       addch(heads[snake.rnd]);
               }
                       
               if (snake.y[0]<0) // sbuca a col 80
               {        
                       snake.y[0]=COL-1;
                       move (snake.x[0], snake.y[0]);
                       addch(heads[snake.rnd]);
               }

               if (snake.x[0]>ROW-1) // sbuca a row 0
               {
                       snake.x[0]=0;
                       move (snake.x[0], snake.y[0]);
                       addch(heads[snake.rnd]);
               }

               if (snake.x[0]<0) // sbuca a row 24
               {
                       snake.x[0]=ROW-1;
                       move (snake.x[0], snake.y[0]);
                       addch(heads[snake.rnd]);
               }

               else
               {
                       move (snake.x[0], snake.y[0]);
                       addch(heads[snake.rnd]);refresh();
               }

               attroff(COLOR_PAIR(2));
               attron(COLOR_PAIR(1));
               
               if (snake.canc==0)
               {
                       move (snake.x[snake.corpo],snake.y[snake.corpo]);
                       addch(' ');refresh();
               }
               else
                       snake.canc=0;
               if (snake.bit_mela==0)
               {
                       while(1)
                       {
                               mela_x=rand()%(ROW);
                               mela_y=rand()%(COL);
                               if ((mvinch(mela_x,mela_y) & A_CHARTEXT)==' ')
                               {
                                       attron(COLOR_PAIR(3));
                                       move (mela_x,mela_y);
                                       addch('X');
                                       refresh();
                                       attroff(COLOR_PAIR(3));
                                       snake.bit_mela=1;
                                       break;
                               }
                       }
               }
               refresh();
               usleep(TEMPO);
       }
       return 0;
}

la gestione di ncurses, colori e movimenti è ancora primitiva, non so usare bene tutto.
Però per quello c'è tempo
view post Posted: 19/3/2020, 09:43 Perplessità processi (c,java,python, generico) - Informatica.
Grazie, ho cercato di colorarlo un po'.
Sembra funzionare bene...lo sto testando, i bug sono sempre in agguato. I peggiori poi sono quelli rari, si presentano raramente, e li solitamente sono c. Amari
Rispetto alla versione a pricessi, ci sono pro e contro.
Il contro e' che se rallento di molto il tempo del bruco, la tastiera e' sorda, il movimento lo perdo ( e qui forse si torna agli stati finiti) a processi&pipe no, non perdi nulla anche se il tempo e' lunghissimo.
Posto il programma dopo solo cosi'...giusto se a qualcuno dovesse interessare
view post Posted: 18/3/2020, 20:42 Perplessità processi (c,java,python, generico) - Informatica.
Tra alti e bassi...e periodo da dimenticare, ho finito il gioco. Versione non a processi.

Se vi interessa:

view post Posted: 28/2/2020, 19:49 Perplessità processi (c,java,python, generico) - Informatica.
CITAZIONE
Ergo: sempre ragionare a Stati! (Ieri un tizio su un forum affermava che una macchina a stati sarà sempre più efficiente di un qualsiasi OS multitask)

Prima o poi ci arriviamo, meglio in 3d separato.
Sono davvero curioso di capire come fai ad aggirare temporizzazioni...pause ecc...nude e crude.
view post Posted: 28/2/2020, 18:57 Perplessità processi (c,java,python, generico) - Informatica.
Figo !!!!
Io sto riscrivendo tutto senza processi, in effetti per il gioco del bruco non servono, ma mi hanno fatto approfondire un po'
l'argomento.
Mi preoccupava la getch(), la gestione tasti, ma avendo trovato quella non bloccante è ok anche senza processi.
Che complicano un po' tutto perchè devono comunicare via pipes o altro, e non è sempre semplice.
Discorso diverso, che se vorrete vi espongo, è il gioco della guardia e del ladro.
Ora sono incasinato a casa, ma voglio come dicevo riscrivere tutto.
è il classico gioco del bruco, in aggiunta vorrei mettere la memorizzazione dei record salvando su file.
Logicamente salva solo se lo superi.
Comunque Dario, mi sembra ganzo il giochino, con z80 e magari lcd insomma di roba da fare ce ne sarà stata presumo.
Complimenti ;)
view post Posted: 27/2/2020, 19:10 Perplessità processi (c,java,python, generico) - Informatica.
Bhe, mi fa piacere se lo consideri uno zuppone...
No, non sono atapirato...ho ben altri problemi ora.
Quindi tu in conclusione cosa mi consiglieresti di fare. Com'e' secondo te uno studio che vale la pena fare ?

Edited by GILA75 - 27/2/2020, 20:28
view post Posted: 26/2/2020, 18:41 Perplessità processi (c,java,python, generico) - Informatica.
CITAZIONE
OK, ci rinuncio, Gila, ogniuno ha le sue esperienze e va dove lo porta il cuore.

Ok, Law, come vuoi. Io sto solo cercando di studiare un linguaggio di programmazione.
Sul fatto che mi chiedi cosa voglio ottenere ? Nulla. Non ho la benchè minima possibilità di scrivere
qualcosa di meglio di quanto non ce ne sia già in giro. Ne a pc, ne a microcontrollori.
Pure il theremin rispetto a quelli professionali fa ridere...a sto punto avrei dovuto lasciar perdere...ma non lo faccio.
Stavo studiando i processi e tutto quello che ne consegue. é vero, non so accedere all'hardware della macchina
ma a me e magari anche a chi lo fa di professione, se non per alcune cose, può non interessare.
Tutto li, studio per il gusto di farlo, mi piace, e cosa ancora migliore mi diverte, e non mi considero un nerd...
non ne faccio una malattia, ma leggendo algoritmi su libri e articoli, anche se poi non li uso, mi fa capire le complessità che
ci sono.
Non sarai ancora una volt d'accordo, lo so che per te è tempo perso...ma pazienza.
:)
view post Posted: 23/2/2020, 21:00 Perplessità processi (c,java,python, generico) - Informatica.
Finito :)
A processi è stato comunque un bagno di sangue, si poteva fare normalmente ma la getch() mi aveva spiazzato.
Più avanti espongo i dubbi che ho

EDIT: non mi allega il video, devo farlo più corto, provvederò
view post Posted: 22/2/2020, 21:35 Perplessità processi (c,java,python, generico) - Informatica.
Premetto che con la nuova funzione trovata di ncurses della getch() non bloccante, forse il discorso di fare tutto a processi
viene meno. Io temevo appunto che getch() per la ricezione tasti mi bloccasse tutto
Pazienza ormai sto facendo...mi serve di lezione, come del resto dicevate voi.
Per ora vediamo se riesco a completarlo a suon di processi e pipe.
Poi se tutto viene proverò a farlo normalmente, un "polling" diciamo.
Ho messo nuovi controlli.
Il bruco sbuca dai bordi del terminale in senso opposto, la testa che segue le direzioni e il fatto che se la testa tocca
il corpo muori... come nel gioco reale.
Poi mancherà la mela da mangiare e l'allungamento del bruco... ambiguo ma avete capito... come diceva Dario...
ti si allunga il bruco !!! :D :D
view post Posted: 22/2/2020, 09:42 Perplessità processi (c,java,python, generico) - Informatica.
Comunque la funzione
CODICE
nodelay (stdscr, true);

per ncurses rende getch() non bloccante: se nulla premuto da -1. Ottimo direi!!!
Posso eliminare tutta quella parte della pipe non bloccante direi. Non lo sapevo, ncurses
è immensa il tempo è quello che è e a volte la pigrizia di spulciare i manuali si fa sentire,
tanto più che sono in inglese.

@Law: io sto proseguendo, ma sono sempre pronto a sentire cosa mi dici dell'ultima mia risposta.
Come vedi anche questo 3d è un processo: 2 discorsi concorrenti :D :D

muahhh il Gila calcola tutto !!!! :lol: :lol:
view post Posted: 21/2/2020, 20:51 Perplessità processi (c,java,python, generico) - Informatica.
Clock e time...sono onesto non le so usare, mi documento. Appena riesco guardo il tuo codice, sperando di capirci.
Non sono così bravo e i codici altrui anche se fatti bene faccio fatica a capirli.
Che ne pensi delle "bussole" per le direzioni ?
CODICE
int dir_up_down[4]={0,0,-1,1}; // array per direzioni (variabili globali)
int dir_lat[4]={1,-1,0,0};


Magari inutili, ma così facendo risparmio degli if...che non mi piacciono mai tanto.
Grazie per avergli dato un'occhio ;)
1581 replies since 4/11/2007