Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando
Abbiamo giocato a lungo a Battlefield 6, abbiamo provato tutte le modalità multiplayer, Redsec, e le numerose personalizzazioni. In sintesi, ci siamo concentrati su ogni aspetto del titolo per comprendere al meglio uno degli FPS più ambiziosi della storia dei videogiochi e, dopo quasi due mesi, abbiamo tirato le somme. In questo articolo, condividiamo con voi tutto ciò che è Battlefield 6, un gioco che, a nostro avviso, rappresenta esattamente ciò che questo genere attendeva da tempo
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-02-2011, 00:21   #1
toz
Senior Member
 
L'Avatar di toz
 
Iscritto dal: Apr 2000
Città: Teramo
Messaggi: 685
[C]Non ridete ,ho appena iniziato....

Allora, ho questo codice che non riesco ad interpretare...se qualcuno mi da una mano....
Codice:
#include <stdio.h>
int funz (int,int);
int main ()
{
	int a=10,b=12,t;
	t=funz(a,b);
	printf("t=%d\n\n",t);
	return 0;
}
int funz (int x,int y)
{
	if(y!=0)
	   return(y+funz(y,x%y));
    else
       return x;
}
L'ho fatto girare e mi risulata che il "printf" riporta t=26.
Le mie perplessita' sono : ma la "funz" in realta' non fa nulla?Perche' y(che sarebbe b?) e' diverso da 0,quindi dovrebbe uscire con il "return x" che si dovrebbe limitare a riportare il valore di a cosi' come dichiarato nella main.
Ma allora il valore di t=26 da cosa e' dato,cioe' t=funz(a,b) che calcoli esegue ?
Grazie.
__________________
Se c'è una soluzione,perchè t'arrabbi?
Se non c'è soluzione,perchè t'arrabbi?

Nuova gloria risplende suoi tuoi circuiti o mia Kt7-a.....per sempre,nei secoli dei secoli....
http://www.zotbox.net
toz è offline   Rispondi citando il messaggio o parte di esso
Old 21-02-2011, 01:12   #2
bobbytre
Senior Member
 
L'Avatar di bobbytre
 
Iscritto dal: Feb 2010
Messaggi: 466
Quote:
Originariamente inviato da toz Guarda i messaggi
Allora, ho questo codice che non riesco ad interpretare...se qualcuno mi da una mano....
Codice:
#include <stdio.h>
int funz (int,int);
int main ()
{
	int a=10,b=12,t;
	t=funz(a,b);
	printf("t=%d\n\n",t);
	return 0;
}
int funz (int x,int y)
{
	if(y!=0)
	   return(y+funz(y,x%y));
    else
       return x;
}
L'ho fatto girare e mi risulata che il "printf" riporta t=26.
Le mie perplessita' sono : ma la "funz" in realta' non fa nulla?Perche' y(che sarebbe b?) e' diverso da 0,quindi dovrebbe uscire con il "return x" che si dovrebbe limitare a riportare il valore di a cosi' come dichiarato nella main.
Ma allora il valore di t=26 da cosa e' dato,cioe' t=funz(a,b) che calcoli esegue ?
Grazie.
La funzione funz è ricorsiva è bisogna ragionare un attimo per capirne il funzionamento ,
quando viene eseguita la prima volta chiamata nel main y = 12

quindi if(y!=0) è verificato
ed esegue return(y+funz(y,x%y));

che equivale a return ( 12 + funz(12,10) )
anche adesso la if è verificata quindi ritorna ( 10 + funz(10 ,2) )
che continua ad essere verificato quindi ritorna ( 2 + funz(2,0) )
adesso l'if non è piu verificato perchè la y = 0 quindi ritorna la x che è = a 2.

quindi ricapitolando
( 12 + funz(12,10) )
diventa
( 12 + ( 10 + funz(10 ,2) ) )
che diventa
( 12 + ( 10 + ( 2 + funz(2,0) ) ) )
che diventa
( 12 + ( 10 + ( 2 + (2) ) ) )

Totale 26

Spero che ti risulta piu chiaro il funzionamento di quella funzione
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati.
bobbytre è offline   Rispondi citando il messaggio o parte di esso
Old 21-02-2011, 11:13   #3
toz
Senior Member
 
L'Avatar di toz
 
Iscritto dal: Apr 2000
Città: Teramo
Messaggi: 685
Grazie mille.....ora mi e' molto piu' chiaro.....avevo fatto un madornale errore di "concentrazione" : y!=0 ,fin quando e' vero viene eseguita ricorsivamente la funz...non il contrario.....ne approfitto per chiedere una'altra cosa :ma x%y non dovrebbe riportare il resto di x/y ??Perch'e' nel primo pasaggio scrivi ( 12 + funz(12,10) ) ?
__________________
Se c'è una soluzione,perchè t'arrabbi?
Se non c'è soluzione,perchè t'arrabbi?

Nuova gloria risplende suoi tuoi circuiti o mia Kt7-a.....per sempre,nei secoli dei secoli....
http://www.zotbox.net
toz è offline   Rispondi citando il messaggio o parte di esso
Old 21-02-2011, 12:36   #4
toz
Senior Member
 
L'Avatar di toz
 
Iscritto dal: Apr 2000
Città: Teramo
Messaggi: 685
Cerco di spiegarmi meglio:
Nel primo passaggio della funz,essendo verificato y!=0 (12!=0) si ha (y+funz(y,x%y) => (12+funz(12,10).
Nel secondo pasaggio ,essendo ancora verificato y!=0 (10!=0) si ha (y1+(y2+funz(y2,x%y2))) => (12+(10+funz(10,10%10))) ma tu scrivi ( 12 + ( 10 + funz(10 ,2) ) ) non dovrebbe essere ( 12 + ( 10 + funz(10 ,0) ) ) ? Perche' x%y e' uguale a 2 ?
Grazie.
__________________
Se c'è una soluzione,perchè t'arrabbi?
Se non c'è soluzione,perchè t'arrabbi?

Nuova gloria risplende suoi tuoi circuiti o mia Kt7-a.....per sempre,nei secoli dei secoli....
http://www.zotbox.net
toz è offline   Rispondi citando il messaggio o parte di esso
Old 21-02-2011, 14:24   #5
bobbytre
Senior Member
 
L'Avatar di bobbytre
 
Iscritto dal: Feb 2010
Messaggi: 466
Quote:
Originariamente inviato da toz Guarda i messaggi
Cerco di spiegarmi meglio:
Nel primo passaggio della funz,essendo verificato y!=0 (12!=0) si ha (y+funz(y,x%y) => (12+funz(12,10).
Nel secondo pasaggio ,essendo ancora verificato y!=0 (10!=0) si ha (y1+(y2+funz(y2,x%y2))) => (12+(10+funz(10,10%10))) ma tu scrivi ( 12 + ( 10 + funz(10 ,2) ) ) non dovrebbe essere ( 12 + ( 10 + funz(10 ,0) ) ) ? Perche' x%y e' uguale a 2 ?
Grazie.
Ho ricontrollato i miei calcoli è sono corretti.
Non so da dove ti esce quel 10 mod 10 , forse fai riferimento in una funzione ai ai valori delle varibili della funzione precedente piuttosto che a quelli correnti...
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati.
bobbytre è offline   Rispondi citando il messaggio o parte di esso
Old 21-02-2011, 15:12   #6
toz
Senior Member
 
L'Avatar di toz
 
Iscritto dal: Apr 2000
Città: Teramo
Messaggi: 685
I tuoi calcoli sono corretti,quello che non riesco a capire e' come varia il valore di x all'interno della funzione......
__________________
Se c'è una soluzione,perchè t'arrabbi?
Se non c'è soluzione,perchè t'arrabbi?

Nuova gloria risplende suoi tuoi circuiti o mia Kt7-a.....per sempre,nei secoli dei secoli....
http://www.zotbox.net
toz è offline   Rispondi citando il messaggio o parte di esso
Old 21-02-2011, 15:28   #7
bobbytre
Senior Member
 
L'Avatar di bobbytre
 
Iscritto dal: Feb 2010
Messaggi: 466
Quote:
Originariamente inviato da toz Guarda i messaggi
I tuoi calcoli sono corretti,quello che non riesco a capire e' come varia il valore di x all'interno della funzione......
ogni volta che richiami la funzione funz
è una storia a se stante che non ha nulla a che vedere con le chiamate precedenti

quindi quindi ogni chiamata ha le sue variabili che contengono i propri valori anche se hanno lo stesso nome

quindi la A del main e la X della prima chiamata di funzione sono due variabili diverse

cosi come lo sono la X della prima chiamata e la X della seconda chiamata di funz

quindi la X della prima chiamata vale 12
la X della seconda vale 10
la X della terza vale ... non mi ricordo ...
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati.
bobbytre è offline   Rispondi citando il messaggio o parte di esso
Old 21-02-2011, 16:47   #8
toz
Senior Member
 
L'Avatar di toz
 
Iscritto dal: Apr 2000
Città: Teramo
Messaggi: 685
Ti ringrazio per l'infinita pazienza......ti devo gia' una birra....
Il prototipo di funzione "int funz(int x,int y)" si prende i valori x=a=10 (dove a e' la prima variabile dichiarata nel main) e y=b=12 (dove b e' la seconda variabile dichiarata nel main).Dopodiche' i valori di x ed y
saranno assegnati dagli operandi nella funz,in particolare per qualsiasi valore che assumera' funz(pippo,pluto) io avro' x=pippo e y=pluto.
E' corretto?

x0=a=10,y0=b12
y!=0 VERO =>IF
(y+funz(y,x%y)) => (12+funz(12,10%12) => (12+funz(12,10)

x1=12,y1=10
y!=0 VERO =>IF
(y0+(y1+funz(y1,x1%y1))) => (12+(10+funz(10,12%10))) => (12+(10+funz(10,2)))

x2=10,y2=2
y!=0 VERO =>IF
(y0+(y1+(y2+funz(y2,x2%y2)))) => (12+(10+(2+funz(2,10%2)))) => (12+(10+(2+funz(2,0) => 12+10+2+2=26 => nella main funz(a,b)=26

x3=2,y3=0
y!=0 FALSO =>ELSE
return x=2 (che non viene preso in considerazione nella main)

Ci dovrei essere no?
__________________
Se c'è una soluzione,perchè t'arrabbi?
Se non c'è soluzione,perchè t'arrabbi?

Nuova gloria risplende suoi tuoi circuiti o mia Kt7-a.....per sempre,nei secoli dei secoli....
http://www.zotbox.net

Ultima modifica di toz : 21-02-2011 alle 20:36.
toz è offline   Rispondi citando il messaggio o parte di esso
Old 21-02-2011, 20:35   #9
toz
Senior Member
 
L'Avatar di toz
 
Iscritto dal: Apr 2000
Città: Teramo
Messaggi: 685
Mi sa che ho sbagliato......cioe'
una volta arrivato all'ELSE ho return x,cioe' il valore di x sara' il valore della funzione quindi il tutto diventa cosi' :

x0=a=10,y0=b12
y!=0 VERO =>IF
(y+funz(y,x%y)) => (12+funz(12,10%12) => (12+funz(12,10)

x1=12,y1=10
y!=0 VERO =>IF
(y0+(y1+funz(y1,x1%y1))) => (12+(10+funz(10,12%10))) => (12+(10+funz(10,2)))

x2=10,y2=2
y!=0 VERO =>IF
(y0+(y1+(y2+funz(y2,x2%y2)))) => (12+(10+(2+funz(2,10%2)))) => (12+(10+(2+funz(2,0)))

x3=2,y3=0
y!=0 FALSO =>ELSE
return x=2

=> funz(y2,x2%y2) vale 2
=> (12+(10+(2+2))) = 26=funz(a,b)

sto proprio esaurito
__________________
Se c'è una soluzione,perchè t'arrabbi?
Se non c'è soluzione,perchè t'arrabbi?

Nuova gloria risplende suoi tuoi circuiti o mia Kt7-a.....per sempre,nei secoli dei secoli....
http://www.zotbox.net
toz è offline   Rispondi citando il messaggio o parte di esso
Old 06-03-2011, 13:40   #10
toz
Senior Member
 
L'Avatar di toz
 
Iscritto dal: Apr 2000
Città: Teramo
Messaggi: 685
Sempre ste cavolo di funzioni......qualcuno mi potrebbe spiegare come avviene la ricursione della funzione di questo prog???
Codice:
#include <stdio.h>
#define N 9
int funz(int *x,int y);
int main ()
{
	int i,z=0;
	int A[N]={0,1,2,3,4,5,6,7,8};
	for(i=N-1;i>=0;i-=2)
	{
		A[i]=(i+3)/2;
		z+=A[i];
	}
	z+=funz(A,0);
	printf("z=%d A[0]=%d\n\n",z,A[0]);
	return 0;
}
int funz(int *x,int y)
{
	if (*x < *(x+y))
	return y;
	else
	return *x=funz(x,y+1)+y;
}
__________________
Se c'è una soluzione,perchè t'arrabbi?
Se non c'è soluzione,perchè t'arrabbi?

Nuova gloria risplende suoi tuoi circuiti o mia Kt7-a.....per sempre,nei secoli dei secoli....
http://www.zotbox.net
toz è offline   Rispondi citando il messaggio o parte di esso
Old 06-03-2011, 15:29   #11
dierre
Senior Member
 
L'Avatar di dierre
 
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2125
Quote:
Originariamente inviato da toz Guarda i messaggi
Sempre ste cavolo di funzioni......qualcuno mi potrebbe spiegare come avviene la ricursione della funzione di questo prog???
Codice:
#include <stdio.h>
#define N 9
int funz(int *x,int y);
int main ()
{
	int i,z=0;
	int A[N]={0,1,2,3,4,5,6,7,8};
	for(i=N-1;i>=0;i-=2)
	{
		A[i]=(i+3)/2;
		z+=A[i];
	}
	z+=funz(A,0);
	printf("z=%d A[0]=%d\n\n",z,A[0]);
	return 0;
}
int funz(int *x,int y)
{
	if (*x < *(x+y))
	return y;
	else
	return *x=funz(x,y+1)+y;
}
La ricorsione avviene come nel caso precedente.

Ora, non tocco più il C da 4 o 5 anni, però ricordo che gli Array ed i puntatori sono in relazione molto stretta, quindi quello che vedi lì è un modo malsano per scorrere un array attraverso puntatori

Chiedo a chi ne sa più di me.
Ma se nel main chiamo
Codice:
z+=funz(A,0);
e la signature di funz è:
Codice:
int funz(int *x,int y)
vuol dire che *x è il primo elemento dell'array, giusto?


Quindi in poche parole nell'if vai a paragone il primo elemento dell'array con tutti gli elementi successivi dell'array che sono > del primo elemento.

Dovrebbe tornare:

*x = 0 + funz(x,1) = 0 + 1;

Prendi con le pinze quello che ti dico perché ripeto che il C non lo tocco da anni.

PS: concittadino!
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale.
Go to a Wormhole

Ultima modifica di dierre : 06-03-2011 alle 15:31.
dierre è offline   Rispondi citando il messaggio o parte di esso
Old 06-03-2011, 17:29   #12
toz
Senior Member
 
L'Avatar di toz
 
Iscritto dal: Apr 2000
Città: Teramo
Messaggi: 685
Grazie concittadino!!!
Quello che non capisco pero' e',dopo il primo return dell ELSE,cosa succede...cioe' debbo sostiuire *x con 0 + funz(x,1) = 0 + 1 ?
In tal caso nell IF diventerebbe 0 + 1 < *( 0 + 1)+y) e y che valore avrebbe?

Interamnia caput mundi!!
__________________
Se c'è una soluzione,perchè t'arrabbi?
Se non c'è soluzione,perchè t'arrabbi?

Nuova gloria risplende suoi tuoi circuiti o mia Kt7-a.....per sempre,nei secoli dei secoli....
http://www.zotbox.net
toz è offline   Rispondi citando il messaggio o parte di esso
Old 06-03-2011, 17:46   #13
dierre
Senior Member
 
L'Avatar di dierre
 
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2125
Quote:
Originariamente inviato da toz Guarda i messaggi
Grazie concittadino!!!
Quello che non capisco pero' e',dopo il primo return dell ELSE,cosa succede...cioe' debbo sostiuire *x con 0 + funz(x,1) = 0 + 1 ?
In tal caso nell IF diventerebbe 0 + 1 < *( 0 + 1)+y) e y che valore avrebbe?

Interamnia caput mundi!!
Allora: prima regola del programmatore, usare molto l'output. printati *x così vedi come cambia.
A mio parere lì x è sempre lo stesso "all'andata", quindi

*x = f(x,1) + 0

quindi

f(x,1) dovrebbe essere 0<1 perché *x punta sempre al primo elemento e *(x+y) dovrebbe puntare all'elemento 1, cioè (0+1).

Infatti nota che passa x e non *x, quindi rimane invariato nei passaggi perché x è l'indirizzo dell'array e rimane costante.

infatti tu in generale fai così:
Codice:
int a[n];
int *x;

x = a;
Tutto ciò, ribadendo che sicuramente c'è qualcuno con mente più fresca della mia sul C.
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale.
Go to a Wormhole
dierre è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Due mesi di Battlefield 6: dalla campagna al battle royale, è l'FPS che stavamo aspettando Due mesi di Battlefield 6: dalla campagna al bat...
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
HBO ha cancellato la produzione della se...
OpenAI ha pensato a una partnership (o a...
Starlink Mobile: SpaceX potrebbe lanciar...
Volkswagen trasforma lo stabilimento di ...
Meta AI più reattivo e imparziale...
In Cina la prima GPU discreta al mondo c...
Vertiv CoolCenter, il sistema di raffred...
Konecta entra nel Kraken BPO Partner Pro...
Un dialogo con l'AI sposta voti meglio d...
iPhone 17 al minimo storico: oggi il 256...
Gli utenti italiani scelgono ChatGPT: &e...
Anche Xiaomi avrà il suo trifold:...
È Natale in casa Tesla: arriva la...
Shai-Hulud diventa più cattivo: e...
Aereo ultraleggero si schianta in atterr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:13.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v