Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nikon D5600, reflex compatta con Snapbridge, per scattare e condividere
Nikon D5600, reflex compatta con Snapbridge, per scattare e condividere
Non è esattamente un'entry-level, e offre caratteristiche da "fascia media" come il display touch articolato, ma è anche eccezionalmente compatta. Con l'aggiunta di Snapbridge, la tecnologia di condivisione Nikon, la D5600 è la fotocamera perfetta per scattare in libertà. 
QNAP TS-473, NAS con SoC AMD dalle ottime potenzialità
QNAP TS-473, NAS con SoC AMD dalle ottime potenzialità
L'offerta di NAS a 4 unità è davvero molto varia; sul mercato si affacciano anche alcune versioni molto interessanti come ad esempio questo NAS di QNAP, TS-473, equipaggiato con SoC AMD, quattro porte ethernet aggregabili e grandi margini di configurazione, unità PCIe comprese
NVIDIA GeForce RTX 2070: la piccola Turing
NVIDIA GeForce RTX 2070: la piccola Turing
Giunge in commercio quest'oggi la terza scheda video della famiglia Turing, capace di gestire Ray Tracing e intelligenza artificiale per ottenere pixel sempre più vicini alla realtà. GeForce RTX 2070 è un prodotto posizionato a poco più di 500€ di prezzo che offre prestazioni maggiori di GeForce GTX 1080, con il plus in futuro di gestire il rendering ibrido dei giochi di prossima generazione
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-10-2018, 09:49   #1
al3xmill3r74
Junior Member
 
Iscritto dal: Feb 2013
Messaggi: 10
Problema programma in C per conversione numeri binari in decimale e viceversa

Salve a tutti,
Quest'anno ho iniziato il primo anno di Ingegneria Informatica al Politecnico di Torino, sono sempre stato appassionato di informatica da quando ero piccolo e ho sempre ritenuto che il forum di HWU fosse eccezionale, spero pertanto di trovare una risposta al mio quesito.
Ho recentemente ricominciato a scrivere programmi in C per esercitarmi, anche se non ho ancora ricevuto compiti "ufficiali" da parte dei docenti del Poli. Tuttavia, l'altro giorno ad un mio amico, che ha iniziato anche lui il Poli quest'anno, è stato assegnato un compito: scrivere un programma che convertisse numeri decimali in binario e viceversa (da 0 a 255).
Questo è quello che ci siamo inventati:

Codice:
#include <stdio.h>
#include <Windows.h>
int a, b, c, d, e, f, g, h, ax, bx, cx, dx, ex, fx, gx, hx, numdec, numbin, numdecresult, progr;
char exit;
int main()
{
	printf("\n  1. Conversione di numeri naturali da decimale a binario");
	printf("\n  2. Conversione di numeri naturali da binario a decimale");
	printf("\n\n  > ");
	scanf("%d", progr);
	if (progr == 1)
	{
		return progr1();
	}
	else if (progr == 2)
	{
		return progr2();
	}
	else
	{
		printf("\n\n  La selezione non è valida.");
		Sleep(2000);
		return main();
	}
	return 0;
}
int progr1()
{
	printf("\n\n  Numero da convertire in binario (0-255, 1 byte): ");
	scanf("%d", numdec);
	if (numdec >= 0 && numdec < 256)
	{
		a = numdec % 2;
		ax = numdec / 2;
		b = ax % 2;
		bx = ax / 2;
		c = bx % 2;
		cx = bx / 2;
		d = cx % 2;
		dx = cx / 2;
		e = dx % 2;
		ex = dx / 2;
		f = ex % 2;
		fx = ex / 2;
		g = fx % 2;
		gx = fx / 2;
		h = gx % 2;
		hx = gx / 2;
		printf("\n\n  Il numero %d", numdec) && printf(" convertito in binario e': %d %d %d %d %d %d %d %d", h, g, f, e, d, c, b, a);
		printf("\n\n\n  Eseguire un'altra operazione? ");
		getchar(); //scanf must have nothing else to handle
		scanf("%c", &exit);
		if (exit == 'y' || exit == 'Y')
		{
			system("cls");
			return main();
		}
		else
		{
			return 0;
		}
	}
	else
	{
		printf("\n\n  Il numero non e' compreso tra 0 e 255.");
		Sleep(2000);
		return progr1();
	}
	return 0;
}
int progr2()
{
	int decposition = 1;
loopprogr2:
	decposition = decposition + 1;
	printf("\n\n  Cifra %d", decposition) && printf(" da convertire in decimale (0-1, 1 bit): ");
	scanf("%d", numbin);
	if (numbin == 0 || numbin == 1)
	{
		if (decposition == 1)
		{
			ax = numbin;
			goto loopprogr2;
		}
		else if (decposition == 2)
		{
			bx = numbin;
			goto loopprogr2;
		}
		else if (decposition == 3)
		{
			cx = numbin;
			goto loopprogr2;
		}
		else if (decposition == 4)
		{
			dx = numbin;
			goto loopprogr2;
		}
		else if (decposition == 5)
		{
			ex = numbin;
			goto loopprogr2;
		}
		else if (decposition == 6)
		{
			fx = numbin;
			goto loopprogr2;
		}
		else if (decposition == 7)
		{
			gx = numbin;
			goto loopprogr2;
		}
		else if (decposition == 8)
		{
			h = numbin;
			goto ifresultbin1;
		}
	ifresultbin1:
		if (ax == 1)
		{
			a = 128;
			goto ifresultbin2;
		}
		else
		{
			a = 0;
			goto ifresultbin2;
		}
	ifresultbin2:
		if (bx == 1)
		{
			b = 64;
			goto ifresultbin3;
		}
		else
		{
			b = 0;
			goto ifresultbin3;
		}
	ifresultbin3:
		if (cx == 1)
		{
			c = 32;
			goto ifresultbin4;
		}
		else
		{
			c = 0;
			goto ifresultbin4;
		}
	ifresultbin4:
		if (dx == 1)
		{
			d = 16;
			goto ifresultbin5;
		}
		else
		{
			d = 0;
			goto ifresultbin5;
		}
	ifresultbin5:
		if (ex == 1)
		{
			e = 8;
			goto ifresultbin6;
		}
		else
		{
			e = 0;
			goto ifresultbin6;
		}
	ifresultbin6:
		if (fx == 1)
		{
			f = 4;
			goto ifresultbin7;
		}
		else
		{
			f = 0;
			goto ifresultbin7;
		}
	ifresultbin7:
		if (gx == 1)
		{
			g = 2;
			goto resultbin;
		}
		else
		{
			g = 0;
			goto resultbin;
		}
	resultbin:
		numdecresult = a + b + c + d + e + f + g + h;
		printf("\n\n  Il numero %d %d %d %d %d %d %d %d", ax, bx, cx, dx, ex, fx, gx, h) && printf(" convertito in decimale e': %d", numdecresult);
		printf("\n\n\n  Eseguire un'altra operazione? ");
		getchar(); //scanf must have nothing else to handle
		scanf("%c", &exit);
		if (exit == 'y' || exit == 'Y')
		{
			system("cls");
			return main();
		}
		else
		{
			return 0;
		}
	}
	else
	{
		printf("\n\n  La cifra deve essere uno 0 o un 1.");
		Sleep(2000);
		return progr2();
	}
	return 0;
}
Il programma che ha scritto è inutilmente complicato a mio giudizio, ma mi ha spiegato che gli è stato richiesto di utilizzare particolari funzioni e di seguire questo percorso logico, pertanto mi sono limitato a controllare con lui che non ci fossero errori formali.
Ebbene, dopo aver controllato più volte il programma, abbiamo provato a compilarlo per eseguirlo e vedere se effettivamente funzionasse (utilizziamo entrambi Visual Studio 2017), ma con rammarico abbiamo scoperto che purtroppo ci vengono restituiti più errori, in particolare:
1. Errore C2365: 'exit': ridefinizione. La definizione precedente era 'funzione' -- ora, io ho ricontrollato più volte il programma, non mi sembra che ci sia una ridefinizione. Ovviamente questo errore non ci permette di compilare il programma, ma se elimino la riga 4 (char exit) per qualche motivo ci permette di compilarlo senza problemi.
2. Se elimino la riga 4, compilo il programma e lo avvio, ci viene presentata la "schermata principale" (dove viene richiesto di selezionare un'opzione, conversione decimale-binario o binario-decimale). Tuttavia, che io scriva 1, 2 o qualunque altra cosa e prema Invio, compare una finestra che mi avvisa di un errore di runtime (Microsoft Visual C++ Runtime Library) in cui si legge:
---
Debug Assertion Failed!
Program: (programma)
File: minkernel\crts\ucrt\inc\corecrt_internal_stdio_input.h
Line: 1565

Expression: result_pointer != nullptr

...
...
---
Ora, per quanto mi piaccia l'informatica e adori programmare un pochino nel tempo libero, non sono un esperto in (nessuna) materia.
Sapreste dirmi perché succedono queste due cose?
Vi ringrazio in anticipo,
A.

Ultima modifica di al3xmill3r74 : 11-10-2018 alle 15:01.
al3xmill3r74 è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2018, 13:16   #2
Bellaz89
Senior Member
 
L'Avatar di Bellaz89
 
Iscritto dal: Sep 2006
Messaggi: 1485
1) exit è una funzione della standard library che viene spesso tirata dentro implicitamente in fase sia di compilazione che di linking. Ergo se definisci una variabile con il nome exit questo va a collidere con il nome della suddetta funzione. La soluzione più semplice è usare un nome della variabile differente da 'exit'

https://www.techonthenet.com/c_langu...lib_h/exit.php

2) in C le variabili vengono passate per valore, non per riferimento. Ciò vuol dire che se vuoi far sì che una funzione scriva su un area di memoria definita esternamente alla stessa devi passare un puntatore. Ergo a scanf devi passare il puntatore con '&' (es. scanf(%d, &prog)).

Qualche consiglio.

1) la prossima volta usa il tag CODE attorno al codice quando posti sul forum. Trovi il tasto per generare tale Tag nella barra degli strumenti per la creazione del messaggio.

2) indenta e commenta il codice. Questo invoglia molto di più le persone ad aiutarti.
Bellaz89 è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2018, 13:17   #3
Eduadie
Member
 
Iscritto dal: Nov 2012
Messaggi: 298
Guarda io non riesco a capire come sia possibile dare linee guida per scrivere un programma in questo modo. Questo programma si fa scrivendo un quarto delle righe di codice che avete scritto...A quale riga di codice ti da errore?
Eduadie è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2018, 15:35   #4
al3xmill3r74
Junior Member
 
Iscritto dal: Feb 2013
Messaggi: 10
Innanzitutto grazie mille per la risposta, Bellaz89 sei stato gentilissim.


Quote:
Originariamente inviato da Bellaz89 Guarda i messaggi
1) exit è una funzione della standard library che viene spesso tirata dentro implicitamente in fase sia di compilazione che di linking. Ergo se definisci una variabile con il nome exit questo va a collidere con il nome della suddetta funzione. La soluzione più semplice è usare un nome della variabile differente da 'exit'
Ecco, allora ti pongo un altro quesito: perché alcune volte è possibile utilizzare exit come variabile e altre volte no?


Quote:
Originariamente inviato da Bellaz89 Guarda i messaggi
2) in C le variabili vengono passate per valore, non per riferimento. Ciò vuol dire che se vuoi far sì che una funzione scriva su un area di memoria definita esternamente alla stessa devi passare un puntatore. Ergo a scanf devi passare il puntatore con '&' (es. scanf(%d, &prog)).
Guarda ti giuro che mi sento proprio un c****one in questo momento, mi è proprio sfuggito l'&. Grazie ancora.


Quote:
Originariamente inviato da Bellaz89 Guarda i messaggi
1) la prossima volta usa il tag CODE attorno al codice quando posti sul forum. Trovi il tasto per generare tale Tag nella barra degli strumenti per la creazione del messaggio.

2) indenta e commenta il codice. Questo invoglia molto di più le persone ad aiutarti.
Avevo fatto entrambe le cose ma si vede che non mi ha salvato la modifica. Così dovrebbe andare meglio.


Quote:
Originariamente inviato da Eduadie Guarda i messaggi
Guarda io non riesco a capire come sia possibile dare linee guida per scrivere un programma in questo modo. Questo programma si fa scrivendo un quarto delle righe di codice che avete scritto...
Sono completamente d'accordo con te, l'ho anche scritto nell'ultima parte del mio post originale. Tuttavia, come ho aggiunto, il mio amico ha preferito scriverlo così per vari motivi, e non ho voluto completamente stravolgere il suo lavoro.

Grazie ancora comunque ad entrambi. Lascio sotto il codice definitivo, nel caso in cui a qualcuno facesse piacere (anche se ne dubito):

Codice:
#include <stdio.h>
#include <windows.h>
int a, b, c, d, e, f, g, h, ax, bx, cx, dx, ex, fx, gx, hx, numdec, numbin, numdecresult, progr;
char exitprg;
int main()
{
	printf("\n  1. Conversione di numeri naturali da decimale a binario");
	printf("\n  2. Conversione di numeri naturali da binario a decimale");
	printf("\n\n  > ");
	scanf("%d", &progr);
	if (progr == 1)
	{
		return progr1();
	}
	else if (progr == 2)
	{
		return progr2();
	}
	else
	{
		printf("\n\n  La selezione non e' valida.");
		Sleep(2000);
		system("cls");
		getchar(); //no-loop
		return main();
	}
	return 0;
}
int progr1()
{
	printf("\n\n  Numero da convertire in binario (0-255, 1 byte): ");
	scanf("%d", &numdec);
	if (numdec >= 0 && numdec < 256)
	{
		a = numdec % 2;
		ax = numdec / 2;
		b = ax % 2;
		bx = ax / 2;
		c = bx % 2;
		cx = bx / 2;
		d = cx % 2;
		dx = cx / 2;
		e = dx % 2;
		ex = dx / 2;
		f = ex % 2;
		fx = ex / 2;
		g = fx % 2;
		gx = fx / 2;
		h = gx % 2;
		hx = gx / 2;
		printf("\n\n  Il numero %d", numdec) && printf(" convertito in binario e': %d%d%d%d%d%d%d%d", h, g, f, e, d, c, b, a);
		printf("\n\n\n  Eseguire un'altra operazione? ");
		getchar(); //scanf must have nothing else to handle
		scanf("%c", &exitprg);
		if (exitprg == 'y' || exitprg == 'Y')
		{
			system("cls");
			return main();
		}
		else
		{
			return 0;
		}
	}
	else
	{
		printf("\n\n  Il numero non e' compreso tra 0 e 255.");
		Sleep(2000);
		system("cls");
		getchar(); //no-loop
		return progr1();
	}
	return 0;
}
int progr2()
{
	int decposition = 1;
loopprogr2:
	printf("\n\n  Cifra %d", decposition) && printf(" da convertire in decimale (0-1, 1 bit): ");
	scanf("%d", &numbin);
	if (numbin == 0 || numbin == 1)
	{
		if (decposition == 1)
		{
			ax = numbin;
			decposition = decposition + 1;
			goto loopprogr2;
		}
		else if (decposition == 2)
		{
			bx = numbin;
			decposition = decposition + 1;
			goto loopprogr2;
		}
		else if (decposition == 3)
		{
			cx = numbin;
			decposition = decposition + 1;
			goto loopprogr2;
		}
		else if (decposition == 4)
		{
			dx = numbin;
			decposition = decposition + 1;
			goto loopprogr2;
		}
		else if (decposition == 5)
		{
			ex = numbin;
			decposition = decposition + 1;
			goto loopprogr2;
		}
		else if (decposition == 6)
		{
			fx = numbin;
			decposition = decposition + 1;
			goto loopprogr2;
		}
		else if (decposition == 7)
		{
			gx = numbin;
			decposition = decposition + 1;
			goto loopprogr2;
		}
		else if (decposition == 8)
		{
			h = numbin;
			goto ifresultbin1;
		}
	ifresultbin1:
		if (ax == 1)
		{
			a = 128;
			goto ifresultbin2;
		}
		else
		{
			a = 0;
			goto ifresultbin2;
		}
	ifresultbin2:
		if (bx == 1)
		{
			b = 64;
			goto ifresultbin3;
		}
		else
		{
			b = 0;
			goto ifresultbin3;
		}
	ifresultbin3:
		if (cx == 1)
		{
			c = 32;
			goto ifresultbin4;
		}
		else
		{
			c = 0;
			goto ifresultbin4;
		}
	ifresultbin4:
		if (dx == 1)
		{
			d = 16;
			goto ifresultbin5;
		}
		else
		{
			d = 0;
			goto ifresultbin5;
		}
	ifresultbin5:
		if (ex == 1)
		{
			e = 8;
			goto ifresultbin6;
		}
		else
		{
			e = 0;
			goto ifresultbin6;
		}
	ifresultbin6:
		if (fx == 1)
		{
			f = 4;
			goto ifresultbin7;
		}
		else
		{
			f = 0;
			goto ifresultbin7;
		}
	ifresultbin7:
		if (gx == 1)
		{
			g = 2;
			goto resultbin;
		}
		else
		{
			g = 0;
			goto resultbin;
		}
	resultbin:
		numdecresult = a + b + c + d + e + f + g + h;
		printf("\n\n  Il numero %d%d%d%d%d%d%d%d", ax, bx, cx, dx, ex, fx, gx, h) && printf(" convertito in decimale e': %d", numdecresult);
		printf("\n\n\n  Eseguire un'altra operazione? ");
		getchar(); //scanf must have nothing else to handle
		scanf("%c", &exitprg);
		if (exitprg == 'y' || exitprg == 'Y')
		{
			system("cls");
			return main();
		}
		else
		{
			return 0;
		}
	}
	else
	{
		printf("\n\n  La cifra deve essere uno 0 o un 1.");
		Sleep(2000);
		system("cls");
		getchar(); //no-loop
		return progr2();
	}
	return 0;
}

Ultima modifica di al3xmill3r74 : 11-10-2018 alle 15:41.
al3xmill3r74 è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2018, 16:14   #5
Bellaz89
Senior Member
 
L'Avatar di Bellaz89
 
Iscritto dal: Sep 2006
Messaggi: 1485
In che senso a volte puoi usare exit e altre no? Se includi un Header (stdio.h? Windows.h?) che definisce un simbolo in una certa maniera, allora quel simbolo non può essere ridefinito nella stessa unità di compilazione.

Per il resto immagino che questo fosse un esercizio per fare un codice 'assembly style' e fare una comparazione con un codice 'succinto'
Bellaz89 è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2018, 17:44   #6
al3xmill3r74
Junior Member
 
Iscritto dal: Feb 2013
Messaggi: 10
Quote:
Originariamente inviato da Bellaz89 Guarda i messaggi
Per il resto immagino che questo fosse un esercizio per fare un codice 'assembly style' e fare una comparazione con un codice 'succinto'
Esattamente.

Quote:
Originariamente inviato da Bellaz89 Guarda i messaggi
In che senso a volte puoi usare exit e altre no? Se includi un Header (stdio.h? Windows.h?) che definisce un simbolo in una certa maniera, allora quel simbolo non può essere ridefinito nella stessa unità di compilazione.
Nel senso, in tanti altri programmi ho incluso stdio.h e Windows.h, eppure non mi è MAI capitato di non poter utilizzare exit come variabile.
al3xmill3r74 è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2018, 19:08   #7
Bellaz89
Senior Member
 
L'Avatar di Bellaz89
 
Iscritto dal: Sep 2006
Messaggi: 1485
Quote:
Originariamente inviato da al3xmill3r74 Guarda i messaggi


Nel senso, in tanti altri programmi ho incluso stdio.h e Windows.h, eppure non mi è MAI capitato di non poter utilizzare exit come variabile.
Mi sembra strano. Ovviamente può dipendere dalle opzioni di compilazione e dal compilatore usato. Ma ti consiglio di guardare meglio. Una possibilità è che in altri programmi tu abbia definito exit come variabile locale e non globale.
Bellaz89 è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2018, 09:54   #8
al3xmill3r74
Junior Member
 
Iscritto dal: Feb 2013
Messaggi: 10
Quote:
Originariamente inviato da Bellaz89 Guarda i messaggi
Una possibilità è che in altri programmi tu abbia definito exit come variabile locale e non globale.
Come mai sei la definisco come variabile locale e non globale posso farlo? (Scusa, probabilmente hai di meglio da fare che rispondere a queste domande, se però volessi farmi una spiegazione più o meno dettagliata te ne sarei grato ).
al3xmill3r74 è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2018, 10:33   #9
Bellaz89
Senior Member
 
L'Avatar di Bellaz89
 
Iscritto dal: Sep 2006
Messaggi: 1485
Quote:
Originariamente inviato da al3xmill3r74 Guarda i messaggi
Come mai sei la definisco come variabile locale e non globale posso farlo? (Scusa, probabilmente hai di meglio da fare che rispondere a queste domande, se però volessi farmi una spiegazione più o meno dettagliata te ne sarei grato ).
Perché sono le regole di visibilità del C. Non puoi dichiarare due volte una variabile/funzione nello stesso scope.

Ultima modifica di Bellaz89 : 12-10-2018 alle 10:38.
Bellaz89 è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2018, 10:54   #10
DanieleG
Senior Member
 
L'Avatar di DanieleG
 
Iscritto dal: Dec 2007
Messaggi: 1909
Quote:
Originariamente inviato da Bellaz89 Guarda i messaggi
Perché sono le regole di visibilità del C. Non puoi dichiarare due volte una variabile/funzione nello stesso scope.
Credo non solo nel C, ma non sono così ferrato in programmazione...
__________________
Il senno di poi è una scienza esatta
DanieleG è online   Rispondi citando il messaggio o parte di esso
Old 12-10-2018, 11:47   #11
Bellaz89
Senior Member
 
L'Avatar di Bellaz89
 
Iscritto dal: Sep 2006
Messaggi: 1485
Quote:
Originariamente inviato da DanieleG Guarda i messaggi
Credo non solo nel C, ma non sono così ferrato in programmazione...
Dipende dal linguaggio. In alcuni, come il C++ con l'overloading puoi ridichiarare più volte una stessa funzione nello stesso scope. In altri linguaggi (Python/Ruby) puoi sovrascrivere funzioni precedentemente definite.

Ultima modifica di Bellaz89 : 12-10-2018 alle 12:01.
Bellaz89 è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2018, 12:38   #12
al3xmill3r74
Junior Member
 
Iscritto dal: Feb 2013
Messaggi: 10
Quote:
Originariamente inviato da Bellaz89 Guarda i messaggi
Perché sono le regole di visibilità del C. Non puoi dichiarare due volte una variabile/funzione nello stesso scope.
Si, ok, ma correggimi se mi sbaglio, uno scope è una regione del programma in cui una data variabile è definita e pertanto può venire utilizzata.
Se definisco exit a livello globale ci sono problemi perché è già definito nelle librerie (e questo l'ho capito), ma perché se invece lo definisco in main() (ad esempio) non ce ne sono? Se exit è definito nelle librerie a livello globale non dovrebbe mantenere tale definizione anche in main() e quindi restituirmi un errore se lo (ri)definisco?
al3xmill3r74 è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2018, 13:39   #13
Bellaz89
Senior Member
 
L'Avatar di Bellaz89
 
Iscritto dal: Sep 2006
Messaggi: 1485
https://www.tutorialspoint.com/cprog...cope_rules.htm
Bellaz89 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nikon D5600, reflex compatta con Snapbridge, per scattare e condividere Nikon D5600, reflex compatta con Snapbridge, per...
QNAP TS-473, NAS con SoC AMD dalle ottime potenzialità QNAP TS-473, NAS con SoC AMD dalle ottime potenz...
NVIDIA GeForce RTX 2070: la piccola Turing NVIDIA GeForce RTX 2070: la piccola Turing
Huawei Mate 20 Pro ufficiale. Ecco l'anteprima del nuovo ''camera phone'' Huawei Mate 20 Pro ufficiale. Ecco l'anteprima d...
Shadow of the Tomb Raider: ecco come nasce la 'vera' Lara Croft Shadow of the Tomb Raider: ecco come nasce la 'v...
Apple: i Mac passeranno a SoC ARM nel 20...
THEC64 Mini: nuovi giochi e programmi co...
Onikuma K1 Pro, nuove cuffie gaming econ...
Tesla, fissata l'area su suolo Cinese ch...
DeepCool, dissipatore AIO per processori...
Eminem utilizza Pixel 3 per registrare i...
Funyroot, diversi prodotti tech in scont...
Montblanc Summit 2 a 995 euro ma con Sna...
Xiaomi Mi MIX 3 da record. In arrivo con...
OnePlus Backpack Explorer: il nuovo zain...
Huawei Band 3 Pro e Huawei Band 3e: ecco...
Rilasciato elementary OS 5.0 Juno con mi...
Wind contro tutti con tariffe a partire ...
Uptown Funk di Bruno Mars ballata da un ...
Vodafone ecco tutte le nuove offerte Spe...
VirtualBox
Opera 56
Chromium
Backup4all
BitDefender Antivirus Free Edition
Avira Internet Security Suite
Avira Free Antivirus
Windows 10 Manager
HWiNFO Portable
HWiNFO
Sandboxie
CrystalDiskInfo
GeForce Experience
Internet Download Accelerator
GPU-Z
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: 15:33.


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