Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
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


L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
Apple MacBook Neo 13'' con chip A18 Pro ...
Insieme a Leica SL3-P presentate le otti...
La Cina svilupperà anche il razzo...
Rocket Lab e la missione Victus Haze per...
Starship: Ship 40 ha eseguito uno static...
I nuovi Samsung Galaxy Watch 9 si mostra...
Einsten aveva ragione, di nuovo: captate...
Top 10 offerte Amazon: 5 sono partite qu...
AI Conf 2026: l'intelligenza artificiale...
Samsung Galaxy S26 scende a 711,49€: un ...
Dopo il maxi blackout, la Spagna cambia ...
Costa meno di un MacBook e fa molto di p...
Ecco tutti i robot aspirapolvere rimasti...
Più partite da seguire in contemporanea?...
389€ sono veramente pochi per questo PC ...
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: 16:37.


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