Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole!
Hogwarts arriva in fascia media grazie a realme, con una special edition che unisce la Quadra Light-Sensing Color-changing Tech, un baule in stile Hogwarts Express pieno di collezionabili e una scheda tecnica sostanzialmente identica al 16 Pro di partenza: ecco cosa cambia davvero, come si comporta nell'uso quotidiano e quanto vale in base al prezzo di 699,99 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-04-2010, 18:24   #1
badboy-j
Member
 
Iscritto dal: Jan 2008
Messaggi: 107
Problema variabile in C

Salve, la mia domanda è semplice e per molti di voi sembrerà deficiente:


Quote:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){
srand(time(NULL));
int vet[1000];
int count[12]={0};
int i, x=0;
printf("%d\n", x);
for(i=0; i<1000; i++){
vet[i]= (1+rand()%6) + (1+rand()%6);
count[vet[i]]++;
}
printf("%d\n", x);
return 0;
}
perchè il valore della x cambia dopo il for? Se invece elimino la riga dove modifico il vettore count[] resta invariato. Per quale motivo?
badboy-j è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2010, 19:02   #2
Darecon
Senior Member
 
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
Va che a me non si modifica niente., 0 era prima e 0 rimane dopo..

Minigw su wxp 32 bit..
Darecon è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2010, 19:05   #3
badboy-j
Member
 
Iscritto dal: Jan 2008
Messaggi: 107
perchè allora a me da sempre dei valori diversi??? Il primo è sempre 0 e l'altro cambia sempre, tipo 27, 32, 30... uso Ubuntu...
badboy-j è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2010, 20:45   #4
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
ma.... a che serve stampare 2 volte un valore inizializzato a 0 prima e dopo un ciclo ?

nemmeno a me modifica nulla...

gcc 4.2 su ubuntu e osx
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2010, 20:58   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Prova ad inizializzare il vettore count in un altro modo, io quel metodo non l'avevo mai visto (l'avevo visto per inizializzare singolarmente i vari elementi del vettore, e contemporaneamente definirne la quantità, non per inizializzarli tutti).
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2010, 21:03   #6
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
ma il debug cosa dice? Debuggando trovi il problema, se c'è un problema...
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2010, 21:06   #7
CountDown_0
Senior Member
 
Iscritto dal: Dec 2004
Città: Milano
Messaggi: 331
Attento, l'istruzione
Quote:
(1+rand()%6)
genera un risultato da 1 a 6, perché rand()%6 è tra 0 e 5. Quindi se hai che
Quote:
vet[i]= (1+rand()%6) + (1+rand()%6);
vet[i] può valere da 2 a 12. Quindi count[0] e count[1] non vengono mai toccati, ma è possibile che venga scritto qualcosa in count[12], che è fuori dai limiti dell'array, perché se ha dimensione 12 vuol dire che va da 0 a 11!

Se non dà un segmentation fault probabilmente è perché l'indirizzo di memoria successivo a rand[11] è usato dallo stesso programma, e probabilmente x va a finire proprio lì e viene sovrascritto in qualche modo. Ecco perché viene modificato. Quelli che non hanno problemi, invece, probabilmente è perché o non è mai uscito il numero 12 sommando i 2 termini casuali (improbabile, avviene con probabilità 1/36, su 1000 numeri dovrebbe capitare un sacco di volte), oppure perché in quell'indirizzo di memoria è stato messo qualcos'altro, e quindi l'errore c'è ma non si vede. Magari viene sovrascritta la i, e quindi il loro ciclo viene eseguito di fatto più o meno di 1000 volte.
__________________
Elrond sul forum di TGM
CountDown_0 è offline   Rispondi citando il messaggio o parte di esso
Old 26-04-2010, 09:29   #8
badboy-j
Member
 
Iscritto dal: Jan 2008
Messaggi: 107
Quote:
Originariamente inviato da CountDown_0 Guarda i messaggi
vet[i] può valere da 2 a 12. Quindi count[0] e count[1] non vengono mai toccati, ma è possibile che venga scritto qualcosa in count[12], che è fuori dai limiti dell'array, perché se ha dimensione 12 vuol dire che va da 0 a 11!

Se non dà un segmentation fault probabilmente è perché l'indirizzo di memoria successivo a rand[11] è usato dallo stesso programma, e probabilmente x va a finire proprio lì e viene sovrascritto in qualche modo. Ecco perché viene modificato.
Sei un grande!!!!!! Era quello il problema, ma non me n'ero accorto... il valore di vet[12] (che in realtà non esisteva) è lo stesso che mi assegnava ad x. Però non dovrebbe avvertirmi che sta andando a sovrascrivere una porzione di memoria assegnata ad un'altra variabile? Grazie ancora!
badboy-j è offline   Rispondi citando il messaggio o parte di esso
Old 26-04-2010, 09:41   #9
CountDown_0
Senior Member
 
Iscritto dal: Dec 2004
Città: Milano
Messaggi: 331
Purtroppo no, il C non ti avverte. O l'indirizzo errato è fuori dallo spazio di memoria del programma, e allora interviene il sistema operativo a bloccarti con un segmentation fault, oppure non ti dà nessun errore. Quando si dice che il C è molto potente ma lo scotto da pagare è che è facile sbagliare, si intende proprio questo.

Ciao!
__________________
Elrond sul forum di TGM
CountDown_0 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Xiaomi 18 Pro e 18 Pro Max, i nuovi flag...
ESA e Mistral hanno stretto un accordo p...
AstroForge presenta Autonomy-1: un satel...
Neutralizzata da Microsoft EvilTokens, l...
Porsche mette alla prova i Tesla Superch...
Roborock Saros 20 Flow Complete arriva i...
Basta un comando digitato nel terminale ...
La corsa alla superintelligenza è...
Le memorie cinesi sfidano sé stes...
Dash cam 4K con doppia telecamera, GPS, ...
Qwen 4: Alibaba conferma l'addestramento...
Super El Niño, allarme globale: 451.000 ...
Toyota, 400.000 robot in fabbrica senza ...
Hanno bucato l'FBI e ora dettano le cond...
Standard sì, licenze no: la linea di Ope...
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: 04:55.


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