Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Destiny Rising: quando un gioco mobile supera il gioco originale
Destiny Rising: quando un gioco mobile supera il gioco originale
Tra il declino di Destiny 2 e la crisi di Bungie, il nuovo titolo mobile sviluppato da NetEase sorprende per profondità e varietà. Rising offre ciò che il live service di Bungie non riesce più a garantire, riportando i giocatori in un universo coerente. Un confronto che mette in luce i limiti tecnici e strategici dello studio di Bellevue
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro è un registratore digitale elegante e tascabile con app integrata che semplifica trascrizioni e riepiloghi, offre funzioni avanzate come template e note intelligenti, ma resta vincolato a un piano a pagamento per chi ne fa un uso intensivo
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-06-2007, 13:22   #1
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
[C] Funzioni.. Help!

Ciao a tutti, sono disperato sto preparando un esame di informatica e leggendo i vecchi temi d'esame non capisco come si svolge questo esercizio:
Mostrare i valori stampati dal seguente programma C:
#include <stdio.h>
int fz(int a, int *b)
{ int c = 0;
for( a=1; a<4; a++)
c = c + *b;
return a;
}
int main()
{ int a=12, b=-3;
for (b=1;b<5; b++)
b = fz(13,&a);
printf("%d %d\n",a,b);
return 0;
}

non riesco a capire come si sviluppa questa funzione nel programma, perchè b= fz(13, &a)???? Grazie a chiunque voglia aiutarmi..
piumone è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 13:35   #2
Furla
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 1454
come secondo argomento la funzione ha un puntatore ad intero; l'operatore & ricava l'indirizzo del suo argomento, indirizzo che viene quindi passato alla funzione per chiamarla correttamente.
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 13:36   #3
..::DAVE::..
Senior Member
 
L'Avatar di ..::DAVE::..
 
Iscritto dal: Nov 2006
Città: Mantova
Messaggi: 468
Quote:
Originariamente inviato da piumone Guarda i messaggi
Ciao a tutti, sono disperato sto preparando un esame di informatica e leggendo i vecchi temi d'esame non capisco come si svolge questo esercizio:
Mostrare i valori stampati dal seguente programma C:
#include <stdio.h>
int fz(int a, int *b)
{ int c = 0;
for( a=1; a<4; a++)
c = c + *b;
return a;
}
int main()
{ int a=12, b=-3;
for (b=1;b<5; b++)
b = fz(13,&a);
printf("%d %d\n",a,b);
return 0;
}

non riesco a capire come si sviluppa questa funzione nel programma, perchè b= fz(13, &a)???? Grazie a chiunque voglia aiutarmi..

a B si assegna il valore della funzione fz, alla quale si passano i parametri a=13 ed al parametro b (che è un puntatore) si assegna l'indirizzo di a.
Per trovare il valore di B devi "svolgere" la funzione.
ricorda che se nella funzione modifichi *b modifichi il valore della variabile a nel main.

Ultima modifica di ..::DAVE::.. : 23-06-2007 alle 13:38.
..::DAVE::.. è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 13:40   #4
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
edit: mi sono incasinato

Ultima modifica di ndakota : 23-06-2007 alle 13:51.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 14:20   #5
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
grazie delle risposte ma voi capite cosa fa questa funzione?? Anche perchè come risultati mi da 12 e 5 (credo a=12 e b=5) e provando a svolgere la funzione non riesco a capire come possano venire questi risultati.. disperazione..
piumone è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 14:30   #6
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
a è 12 nel main.. viene passata per riferimento ma il suo valore non viene cambiato ergo rimane 12.. mentre b(che nella funzione sarebbe a) viene ritornato ed assegnato ad a con valore 5 perchè l'ultima volta che viene incrementato è 5 poi c'è il test 5<4 che fallisce e viene restituito.. sbaglio?

Ultima modifica di ndakota : 23-06-2007 alle 14:33.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 14:36   #7
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
Quote:
Originariamente inviato da ndakota Guarda i messaggi
a è 12 nel main.. viene passata per riferimento ma il suo valore non viene cambiato ergo rimane 12.. mentre b(che nella funzione sarebbe a viene ritornato ed assegnato ad a con valore 5 perchè l'ultima volta che viene incrementato è 5 poi c'è il test 5<4 che fallisce e viene restituito.. sbaglio?
Ma non dovrebbe uscire a 4? for (a=1; a<4; a++), un altro dubbio: allora la variabile c non mi serve ai fini della soluzione dell'esercizio?? in pratica l'unica difficoltà sta nel capire che la a vale 5?
piumone è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 14:41   #8
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da piumone Guarda i messaggi
Ma non dovrebbe uscire a 4? for (a=1; a<4; a++), un altro dubbio: allora la variabile c non mi serve ai fini della soluzione dell'esercizio?? in pratica l'unica difficoltà sta nel capire che la a vale 5?
secondo me la difficoltà sta nel fatto che nell'esericzio ci sono tutti i modi possibili ed immaginabili per farti confondere.. sbagli perchè guardi la a come primo argomento nel prototipo e nella definizione, mentre devi guardare la chiamata e seguire lo stesso ordine.. se nella chiamata a è il secondo argomento devi guardare il secondo argomento del prototipo e della definizione, in questo caso a si chiamerà b nella funzione.. spero di non dire cavolate, sono ancora agli inizi..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 14:46   #9
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Spoiler:

Codice:
#include <stdio.h>

int fz(int a, int *b)
{ 
    int c = 0; 
    
    for( a=1; a<4; a++) 
         c = c + *b; /* b è la a del main passata con valore 12 e non viene modificata 
                            perciò rimane 12 */
    return a; 
}

int main()
{ 
    int a=12, b=-3; 
    
    for (b=1;b<5; b++) 
        b = fz(13,&a); 
    
    printf("%d %d\n",a,b); 
    
    return 0;
}
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 14:50   #10
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
Quote:
Originariamente inviato da ndakota Guarda i messaggi
Spoiler:

Codice:
#include <stdio.h>

int fz(int a, int *b)
{ 
    int c = 0; 
    
    for( a=1; a<4; a++) 
         c = c + *b; /* b è la a del main passata con valore 12 e non viene modificata 
                            perciò rimane 12 */
    return a; 
}

int main()
{ 
    int a=12, b=-3; 
    
    for (b=1;b<5; b++) 
        b = fz(13,&a); 
    
    printf("%d %d\n",a,b); 
    
    return 0;
}
Allora per la a ci sono ho capito bene. Per la b mi sta fondendo il cervello, si dovrebbe passare dal valore 12 che è quello di a nel main al valore 5 cioè il risultato della funzione.. come si calcola sto benedetto 5??? Mi viene da piangere..
piumone è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 15:01   #11
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
b è -3 ma diventa 1 nell'intestazione del for.. e non ci importa di quello che diventa nella funzione perchè è passata per valore quindi quando torna nel main avrà lo stesso valore che aveva prima e l'ultimo valore che avrà sarà 5 perchè nel ciclo viene incrementata fino a quando rende falsa la condzione 5<5.. e così stamperà 5.. credo..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 15:07   #12
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
#include <stdio.h>
int fz(int *a, int b)
{
int c = 0;
for( *a=b; *a<4; *a++)
c = c + b;
return *a;
}
int main()
{
int a=12, b=-3;
for (b=1;b<5; b++)
b = fz(&a,13);
printf("%d %d\n",a,b);
return 0;
}
Ok! Ed in questo caso sapresti dirmi quali valori vengono stampati e perchè? Scusami ma io sti esercizi faccio proprio fatica a comprenderli..
piumone è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 15:19   #13
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
a credo sia 13
Spoiler:

Codice:
#include <stdio.h>

int fz(int *a, int b)
{
    
    int c = 0; 
    
    for( *a=b; *a<4; *a++) // a=13 condizione falsa, 13 restituito
         c = c + b;
         
    return *a; 
}

int main()
{

    int a=12, b=-3;

    for (b=1;b<5; b++) 
        b = fz(&a,13); 

    printf("%d %d\n",a,b); 
    
    return 0;
}
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 15:23   #14
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
Effettivamente a è 13 ma il valore di b mi dice che è 14 e qui siamo sempre allo stesso problema.. non riesco a capire perchè 14.. (la mia facoltà è economia)
piumone è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 15:46   #15
squall15
Senior Member
 
L'Avatar di squall15
 
Iscritto dal: Sep 2006
Messaggi: 876
Se guardi la funzione fz(), questa restituisce 13 (il valore che sarà quello di a); se fino qui non hai problemi, il valore 13 viene caricato in b, quindi al momento b=13; il 1° ciclo for termina, b viene incrementato e va a 14, la condizione b<5 è falsa e si esce dal ciclo. A questo punto la stampa mostra b come 14. Cosa non ti è chiaro?
squall15 è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 15:57   #16
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
Mah a fatica credo di aver capito.. la a assume valore 13 perchè nella funz abbiamo (&a,13) e poi nella funzione mi dice for *a=b cioè *a=13??? dopodichè abbiamo il return *a che viene caricato in b che a sua volta viene incrementato di 1 nel for del main (b=14) salvo poi constatare che la condizione non è vera e restituircelo a valore 14.. giusto? dunque a= 13 e b= 14?
piumone è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 16:03   #17
squall15
Senior Member
 
L'Avatar di squall15
 
Iscritto dal: Sep 2006
Messaggi: 876
Tutto giusto, dovresti aver capito
squall15 è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 17:27   #18
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
Questo è l'ultimo al quale vi sottopongo.. poi non vi stresso più. Mi trovate i valori di a e b? me li spieghereste x l'ultima volta? Vi ringrazio ragazzi.
#include <stdio.h>
int f(int *a, int b)
{
*a = b + 3;
return b – 1;
}
int main()
{ int a=4, b;

for (b=5; b<9; b++)
b = f(&a, a);
printf(“%d %d\n”,a,b);
return 0;
}
piumone è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 18:21   #19
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
secondo me a=10 e b=9 ma non me lo compila da errori che non ho mai visto.. a te lo compila?
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2007, 18:35   #20
piumone
Member
 
Iscritto dal: Jun 2007
Messaggi: 62
che compilatore usi??
piumone è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
AV2 in arrivo entro fine anno: il nuovo ...
Echo, Kindle e Fire TV: Amazon prepara u...
Shai-Hulud è il worm auto-replica...
Stop a benzina e diesel dal 2035, ecco c...
Gli strumenti di scrittura AI arrivano s...
Tesla tenta l'azzardo in Europa: produzi...
OpenAI cerca un esperto di contenuti: ha...
Consumer Reports attacca Microsoft: 'Con...
Lo strumento salva-guai che ogni automob...
Le copie fisiche dei giochi non valgono ...
Apple corregge una pericolosa vulnerabil...
Honda svela WN7, la prima moto elettrica...
Ford taglia altri 1.000 posti in Germani...
Apple Sports arriva in Italia: l'app gra...
Il CEO di Gearbox ai videogiocatori: Bor...
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: 10:47.


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