Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-12-2010, 20:59   #1
informatico91
Member
 
Iscritto dal: Sep 2009
Messaggi: 41
[C] Generare numeri rand con probabilità determinata

Ciao a tutti!! E' da poco che scrivo nel forum. Spero di non sbagliare qualcosa...
Ho un problema con un esercizio in linguaggio C:

Dato un vettore di 50 elementi, in ogni elemento deve essere inserito un numero pseudocasualmente estratto tra 1, 2 e 3 con probabilità rispettivamente di 1/5, 2/5, 2/5.

Ho studiato sul libro "C Corso completo di programmazione " seconda ed. deitel e non ho mai incontrato esercizi del genere.
Se non ci fosse il fattore probabilità sarebbe facilissimo...qualcuno ha idea di come risolverlo??...
informatico91 è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2010, 21:08   #2
marck77
Senior Member
 
L'Avatar di marck77
 
Iscritto dal: Mar 2002
Città: Chi è nato a Roma è romanista.I laziali so quelli de fori le mura
Messaggi: 1291
Mi viene in mente che potresti fargli estrarre un numero a caso tra 1 e 5, poi scrivi così:

if numero estratto è 4 allora numero estratto diventa 2
if numero estratto è 5 allora numero estratto diventa 3

Così avresti 1 possibilità su 5 che esca 1, 2 possibilità su 5 che esca 2 (cioè quando esce 2 o 4) e 2 possibilità su 5 che esca 3 (cioè quando esce 3 o 5)
__________________
--. MARCK77 .--
marck77 è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2010, 21:47   #3
oNaSsIs
Member
 
L'Avatar di oNaSsIs
 
Iscritto dal: Apr 2007
Messaggi: 182
Oppure sfruttando sempre questa idea in modo più efficiente potresti riempire un vettore di 5 elementi in questo modo:
Codice:
int vet [] = {1,2,2,3,3}
ed estrarre casualmente l'indice del vettore (un numero compreso tra 0 e 4)...
oNaSsIs è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2010, 22:11   #4
informatico91
Member
 
Iscritto dal: Sep 2009
Messaggi: 41
grazie delle risposte ...gli ho implementati e funzionano correttamente entrambi =)
informatico91 è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2010, 22:17   #5
goldorak
Senior Member
 
Iscritto dal: Apr 2003
Messaggi: 16462
Quote:
Originariamente inviato da informatico91 Guarda i messaggi
Ciao a tutti!! E' da poco che scrivo nel forum. Spero di non sbagliare qualcosa...
Ho un problema con un esercizio in linguaggio C:

Dato un vettore di 50 elementi, in ogni elemento deve essere inserito un numero pseudocasualmente estratto tra 1, 2 e 3 con probabilità rispettivamente di 1/5, 2/5, 2/5.

Ho studiato sul libro "C Corso completo di programmazione " seconda ed. deitel e non ho mai incontrato esercizi del genere.
Se non ci fosse il fattore probabilità sarebbe facilissimo...qualcuno ha idea di come risolverlo??...
E molto semplice, devi aiutarti con una variable casuale U con distribuzione uniforme nel intervallo (0,5).

Allora il problema si riduce a trovare una variable casuale X che prende valori 1,2,3 con probabilita' rispettive di 1/5,2/5 e 2/5.


X = 1 se 0<U<1/5
X = 2 se 1/5<U<3/5
X = 3 se 3/5<U<5

Si verifica immediatamente che p(X=1)=1/5, p(X=2)=2/5 e p(X=3)=2/5
__________________
MICROSOFT : Violating your privacy is our priority

Ultima modifica di goldorak : 15-12-2010 alle 22:20.
goldorak è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2010, 22:22   #6
goldorak
Senior Member
 
Iscritto dal: Apr 2003
Messaggi: 16462
Quote:
Originariamente inviato da marck77 Guarda i messaggi
Mi viene in mente che potresti fargli estrarre un numero a caso tra 1 e 5, poi scrivi così:

if numero estratto è 4 allora numero estratto diventa 2
if numero estratto è 5 allora numero estratto diventa 3

Così avresti 1 possibilità su 5 che esca 1, 2 possibilità su 5 che esca 2 (cioè quando esce 2 o 4) e 2 possibilità su 5 che esca 3 (cioè quando esce 3 o 5)
E se non puo' generare piu' di 3 elementi come fa ?
La tua soluzione e' concettualmente sbagliata.
__________________
MICROSOFT : Violating your privacy is our priority
goldorak è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2010, 23:01   #7
informatico91
Member
 
Iscritto dal: Sep 2009
Messaggi: 41
Quote:
Originariamente inviato da goldorak Guarda i messaggi
E molto semplice, devi aiutarti con una variable casuale U con distribuzione uniforme nel intervallo (0,5).

Allora il problema si riduce a trovare una variable casuale X che prende valori 1,2,3 con probabilita' rispettive di 1/5,2/5 e 2/5.


X = 1 se 0<U<1/5
X = 2 se 1/5<U<3/5
X = 3 se 3/5<U<5

Si verifica immediatamente che p(X=1)=1/5, p(X=2)=2/5 e p(X=3)=2/5
mmm.. cioè per ogni elemento del vettore devo generare un numero casuale intero tra 0 e 5 per U. e poi...??
informatico91 è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2010, 23:07   #8
goldorak
Senior Member
 
Iscritto dal: Apr 2003
Messaggi: 16462
Quote:
Originariamente inviato da informatico91 Guarda i messaggi
mmm.. cioè per ogni elemento del vettore devo generare un numero casuale intero tra 0 e 5 per U. e poi...??
Devi generare un numero casuale uniforme U tra 0 e 5 (non dev'essere necessariamente intero).

Poi in base al valore di U metti 1 o 2 o 3 nelle posizione corrente nell'array.

Per intenderci, generi U e trovi che il suo valore sta tra 0 e 1/5 allora metti 1 nel array. Genera di nuovo U, se trovi che il suo valore sta tra 1/5 e 3/5 allora metti 2 nell'array e cosi' via. In questo modo riempi l'array con 1 o 2 o 3 con le probabilita' giuste.

Il modo in cui hai costruito X ti garantisce che 1,2,3 verranno estratte con le probabilita' indicate dal problema.
__________________
MICROSOFT : Violating your privacy is our priority

Ultima modifica di goldorak : 16-12-2010 alle 10:00. Motivo: Eliminato la parte sbagliata del ragionamento
goldorak è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2010, 08:24   #9
marck77
Senior Member
 
L'Avatar di marck77
 
Iscritto dal: Mar 2002
Città: Chi è nato a Roma è romanista.I laziali so quelli de fori le mura
Messaggi: 1291
Quote:
Originariamente inviato da goldorak Guarda i messaggi
E se non puo' generare piu' di 3 elementi come fa ?
La tua soluzione e' concettualmente sbagliata.
Cosa non può generare più di 3 elementi? Anche la tua "U" alla fine può avere 5 valori no? Non capisco la differenza tra la tua soluzione e la mia sinceramente. Dove è sbagliata la mia? Grazie mille.
__________________
--. MARCK77 .--
marck77 è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2010, 08:26   #10
marck77
Senior Member
 
L'Avatar di marck77
 
Iscritto dal: Mar 2002
Città: Chi è nato a Roma è romanista.I laziali so quelli de fori le mura
Messaggi: 1291
Quote:
Originariamente inviato da goldorak Guarda i messaggi
Il C mette a disposizione la funzione rand() che ti genera un numero casuale tra 0 e 1. Siccome tu ne vuoi uno tra 0 e 5 devi moltiplicare la rand() per 5. Quindi U = 5*rand ().
Che io sappia la rand genera un numero pseudocasuale tra 0 e 32767 quindi per ottenere un numero pseudocasuale in un intervallo minore si usa l'operatore modulo (%)

quindi bisogna fare "rand()%5" per avere un valore tra pseudocasuale tra 0 e 4 in output. Ti risulta?

Oltretutto se fosse vero quello che dici moltiplicando la rand() per 5 otterresti solo o 0 o 5, mai un valore intermedio..

Ciao.
__________________
--. MARCK77 .--

Ultima modifica di marck77 : 16-12-2010 alle 08:33.
marck77 è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2010, 08:41   #11
Supdario
Member
 
Iscritto dal: Mar 2008
Messaggi: 267
E' così, anche se il metodo "rand()%n" genera un numero random usando le cifre meno significative, il modo giusto sarebbe:

Per generare un numero intero tra 0 e n-1
Codice:
rand()*n/(RAND_MAX+1)
Per generare un numero reale nel campo 0 ≤ x < n
Codice:
rand()*n/(RAND_MAX+1.0)
Supdario è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2010, 09:59   #12
goldorak
Senior Member
 
Iscritto dal: Apr 2003
Messaggi: 16462
Quote:
Originariamente inviato da marck77 Guarda i messaggi
Cosa non può generare più di 3 elementi? Anche la tua "U" alla fine può avere 5 valori no? Non capisco la differenza tra la tua soluzione e la mia sinceramente. Dove è sbagliata la mia? Grazie mille.
Leggi le specifiche del problema. Dove sta scritto che lui debba generare i numeri 4 e 5 e poi metterli uguali a 2 e 3 ? Certo come hai fatto tu funziona ci mancherebbe altro, ma e' una soluzione fatta alla meno peggio.

Quote:
Originariamente inviato da marck77 Guarda i messaggi
Che io sappia la rand genera un numero pseudocasuale tra 0 e 32767 quindi per ottenere un numero pseudocasuale in un intervallo minore si usa l'operatore modulo (%)

quindi bisogna fare "rand()%5" per avere un valore tra pseudocasuale tra 0 e 4 in output. Ti risulta?

Oltretutto se fosse vero quello che dici moltiplicando la rand() per 5 otterresti solo o 0 o 5, mai un valore intermedio..

Ciao.
Giusto, mi sono impappinato con la rand() del C.
Comunque il ragionamento che ho fatto e' corretto. Basta generare un valore casuale (non intero) tra 0 e 5 e poi verificare in che intervallo cade.
Sulla base di questo poi fai l'assegnamento nell'array.
__________________
MICROSOFT : Violating your privacy is our priority
goldorak è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2010, 15:26   #13
informatico91
Member
 
Iscritto dal: Sep 2009
Messaggi: 41
Quote:
Originariamente inviato da goldorak Guarda i messaggi
Devi generare un numero casuale uniforme U tra 0 e 5 (non dev'essere necessariamente intero).

Poi in base al valore di U metti 1 o 2 o 3 nelle posizione corrente nell'array.

Per intenderci, generi U e trovi che il suo valore sta tra 0 e 1/5 allora metti 1 nel array. Genera di nuovo U, se trovi che il suo valore sta tra 1/5 e 3/5 allora metti 2 nell'array e cosi' via. In questo modo riempi l'array con 1 o 2 o 3 con le probabilita' giuste.

Il modo in cui hai costruito X ti garantisce che 1,2,3 verranno estratte con le probabilita' indicate dal problema.
Il tuo algoritmo è interessante! Solo che non lo stavo capendo perchè io sapevo che la funzione rand() può generare un numero casuale intero

Quote:
Originariamente inviato da Supdario Guarda i messaggi
Per generare un numero reale nel campo 0 ≤ x < n
Codice:
rand()*n/(RAND_MAX+1.0)
Usando la seguente formula effettivamente si riesce a generare dei numeri casuali con la virgola semplicemente sostituendo ad RAND_MAX 32767 e ad n il secondo estremo dell'intervallo (5 in questo caso)..
Tuttavia così facendo l'algoritmo non funziona bene. Per tutti gli algoritmi qui proposti ho randomizzando i numeri con srand(time(NULL)) e tutto ok. Ho fatto questo miniprogramma per verificare effettivamente che rand() riuscisse a generare dei numeri con la virgola
Codice:
main()
{
      double x;
      srand(time(NULL));
      
      x = rand()*5/(32767+1.0);
      printf("%.10f", x);
}
e facendo degli output ripetuti (guarda l'immagine) si nota come i numeri generati siano ad intervalli ravvicinati
Immagini allegate
File Type: gif ris.GIF (3.0 KB, 5 visite)
informatico91 è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2010, 21:20   #14
informatico91
Member
 
Iscritto dal: Sep 2009
Messaggi: 41
ragazzi ce un altro problema..praticamente la seconda parte del problema chiede di scrivere quel vettore (x[50]) in un file ad accesso casuale
Codice:
#include<stdio.h>

main()
{
      int x[50];
      int prob[5] = { 1, 2, 2, 3, 3 };
      int occorrenze[3] = {0};
      int restituzioni[50] = {0};
      int i;
      FILE *filePtr;
      
      srand(time(NULL));
      
      for ( i = 0; i <= 49; i++ )
      {
          x[i] = prob[(rand() % 5)]; // --> prob[ 0 <= indice < 5] <--
          ++occorrenze[x[i]-1];
      }
      
      for ( i = 0; i <=2; i++ )
      {
          printf("Occorrenze di %d: %d\n", i+1 , occorrenze[i]);
      }
      
      if ( (filePtr = fopen("vettore.dat", "wb")) == NULL)
      {
         printf("Errore!! Il file non può essere aperto\n");
      }
      else
      {
          for ( i = 0; i < 50; i++ )
          {
              fseek( filePtr, i * sizeof ( x[i] ), SEEK_SET );
              fwrite( &x[i], sizeof ( x[i] ), 1, filePtr);
          }
      }
      
/* Verifichiamo che i dati memorizzati sono stati giustamente inseriti*/      
      

        for ( i = 0; i < 50; i++ )
        {
            fread ( &restituzioni[i], sizeof( restituzioni[i] ), 1, filePtr);
            printf("%d\n", restituzioni[i]);
        }
      fclose(filePtr);
}
Per verificare che l'operazione fosse andata a buon fine ho pensato di leggere i contenuti di quel file (ultimo ciclo for) ma come output mi escono una sequenza di 0. Cioè praticamente sono rimasti intatti gli elementi del vettore originale "richeste[50]"
I dati sono stati memorizzati male nel file oppure sono stati letti scorrettamente...Dov'è che sbaglio???
informatico91 è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2010, 21:35   #15
Supdario
Member
 
Iscritto dal: Mar 2008
Messaggi: 267
Quote:
Originariamente inviato da informatico91 Guarda i messaggi
Il tuo algoritmo è interessante! Solo che non lo stavo capendo perchè io sapevo che la funzione rand() può generare un numero casuale intero



Usando la seguente formula effettivamente si riesce a generare dei numeri casuali con la virgola semplicemente sostituendo ad RAND_MAX 32767 e ad n il secondo estremo dell'intervallo (5 in questo caso)..
Tuttavia così facendo l'algoritmo non funziona bene. Per tutti gli algoritmi qui proposti ho randomizzando i numeri con srand(time(NULL)) e tutto ok. Ho fatto questo miniprogramma per verificare effettivamente che rand() riuscisse a generare dei numeri con la virgola
Codice:
main()
{
      double x;
      srand(time(NULL));
      
      x = rand()*5/(32767+1.0);
      printf("%.10f", x);
}
e facendo degli output ripetuti (guarda l'immagine) si nota come i numeri generati siano ad intervalli ravvicinati
L'algoritmo in sè funziona, il problema che si verifica nel tuo caso è dovuto a 2 motivi:
1) Il seed viene inizializzato con un'unità di tempo precisa al secondo, quindi se tu esegui il programma 2-3 volte in un secondo, il seed sarà sempre uguale.
2) La variazione del seed è minima e viene generato solo un numero, dopodiché il programma viene terminato, rieseguito, ed il seed viene reinizializzato. Se provi con un programma del genere:
Codice:
int main()
{
	srand((unsigned)time(NULL));
	for (int i = 0; i < 100; i++)
	{
		double x = rand()*5/(32767+1.0);
		printf("%.10f ", x);
	}
	return 0;
}
noterai che i risultati sono abbastanza sensati.
Supdario è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2011, 14:51   #16
TRF83
Senior Member
 
L'Avatar di TRF83
 
Iscritto dal: Dec 2007
Città: Palestro
Messaggi: 1960
Quote:
Originariamente inviato da goldorak Guarda i messaggi
Leggi le specifiche del problema. Dove sta scritto che lui debba generare i numeri 4 e 5 e poi metterli uguali a 2 e 3 ? Certo come hai fatto tu funziona ci mancherebbe altro, ma e' una soluzione fatta alla meno peggio.
Sinceramente, a me sembra che il ragionamento fatto sia praticamente lo stesso..se porti il tuo "/5" dall'altra parte dell'uguale, ottieni lo stesso calcolo! Anzi, così facendo l'arrangi con un rand()%5 (andando da 0 a 4, invece che da 1 a 5..cambia poco), invece di coinvolgere anche delle moltiplicazioni e divisioni.. Che poi sia più efficiente fare una rand()%4 indicante l'indice dell'array, è fuori discussione!
__________________
My PC:
Case: BeQuiet! Pure Base 500 + BeQuiet! Pure Wings 2 140mm & Noctua NF-A14 PWM front intake + BeQuiet! Pure Wings 2 140mm rear exhaust - CPU: AMD Ryzen7 5800X3D (DVID: -0.1V) - CPU Cooler: Noctua NH-D15 - MB: MSI X570 Gaming Edge WiFi - PSU: Corsair RM850 full modular - GPU: Gigabyte 2070 Super Gaming OC 3X (fallata....! ) - RAM: 32GB G.Skill Ripjaws V 3200MHz CL16 (Samsung B-Die) - HDD: Crucial P5Plus 1TB NVME - Monitor: Samsung C24FG73
TRF83 è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2011, 18:43   #17
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
Quote:
Originariamente inviato da informatico91 Guarda i messaggi
ragazzi ce un altro problema..praticamente la seconda parte del problema chiede di scrivere quel vettore (x[50]) in un file ad accesso casuale
Codice:
#include<stdio.h>

main()
{
      int x[50];
      int prob[5] = { 1, 2, 2, 3, 3 };
      int occorrenze[3] = {0};
      int restituzioni[50] = {0};
      int i;
      FILE *filePtr;
      
      srand(time(NULL));
      
      for ( i = 0; i <= 49; i++ )
      {
          x[i] = prob[(rand() % 5)]; // --> prob[ 0 <= indice < 5] <--
          ++occorrenze[x[i]-1];
      }
      
      for ( i = 0; i <=2; i++ )
      {
          printf("Occorrenze di %d: %d\n", i+1 , occorrenze[i]);
      }
      
      if ( (filePtr = fopen("vettore.dat", "wb")) == NULL)
      {
         printf("Errore!! Il file non può essere aperto\n");
      }
      else
      {
          for ( i = 0; i < 50; i++ )
          {
              fseek( filePtr, i * sizeof ( x[i] ), SEEK_SET );
              fwrite( &x[i], sizeof ( x[i] ), 1, filePtr);
          }
      }
      
/* Verifichiamo che i dati memorizzati sono stati giustamente inseriti*/      
      

        for ( i = 0; i < 50; i++ )
        {
            fread ( &restituzioni[i], sizeof( restituzioni[i] ), 1, filePtr);
            printf("%d\n", restituzioni[i]);
        }
      fclose(filePtr);
}
Per verificare che l'operazione fosse andata a buon fine ho pensato di leggere i contenuti di quel file (ultimo ciclo for) ma come output mi escono una sequenza di 0. Cioè praticamente sono rimasti intatti gli elementi del vettore originale "richeste[50]"
I dati sono stati memorizzati male nel file oppure sono stati letti scorrettamente...Dov'è che sbaglio???
ci sono un po' di cose: intanto il fatto che non puoi leggere un file aperto in modalità di sola scrittura, poi che dopo aver scritto tutto il file il file pointer si è spostato alla fine, quindi dovresti fare, prima di cominciare a leggere, un fseek(filePtr, 0, SEEK_SET) che riporta all'inizio il file pointer, poi, sempre a proposito del file pointer, le chiamate a fseek che fai quando scrivi sono, di fatto, ridondanti, perché dopo aver scritto qualcosa il filepointer si trova proprio dove dovrai scrivere la prossima, poi in realtà tutto quel ciclo delle fwrite puoi sostituirlo con:

Codice:
fwrite(x, sizeof (int), 50, filePtr);
che è del tutto equivalente, così come la lettura puoi sostituirla con

Codice:
fseek(filePtr, 0, SEEK_SET);
fread(restituzioni, sizeof(int), 50, filePtr);
tuccio` è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
DAZN Full in sconto a partire da 19,99 e...
iPhone 18 Pro disponibile su Amazon a 1....
ECOVACS T90 OMNI a 439€ e T90 MAX OMNI a...
Questa Proscenic è la scopa elett...
Microsoft Defender: falso allarme sull'a...
Aerei in volo e truppe pronte all'assalt...
Usano Claude per hackerare OpenAI: ricer...
RatHat: il nuovo malware Android usa il ...
Domanda di petrolio in calo di 2,5 milio...
Il meglio delle offerte weekend Amazon a...
Dopo oltre 100 anni di tentativi, l'IA d...
Speciale robot aspirapolvere in offerta ...
L'IA sta cancellando i lavori junior? Il...
Debutta Chery Italia: non più sol...
Addio ai dischi? Xbox ci aveva già...
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: 18:06.


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