Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-10-2004, 15:03   #1
Steve85
Member
 
Iscritto dal: Oct 2001
Messaggi: 56
Conversione Dec-Bin

Ciao raga! Ho un problema con un programmino che converte i numeri interi decimali in codice binario:


#include <stdio.h>

#define DIM 16

main()
{
int i;
int vet[DIM];
int dec=0;
printf("------BENVENUTO NEL PROGRAMMA DI CONVERSIONE DEC-BIN------\n\n");
printf("Inserisci il valore decimale: ");
scanf("%d",&dec);
printf("\n");
for (i=0;i<DIM;i++)
{
vet[DIM-16+i]=dec%2;
dec=dec/2;
printf("%d ",vet[DIM-16+i]);
}
printf("\n");
scanf(" ");
}


Questo codice mi stampa le cifre da sinistra verso destra.
Pero risulta poco comprensibile, perche i numeri binari si leggono da destra verso sinistra.


#include <stdio.h>

#define DIM 16

main()
{
int i;
int vet[DIM];
int dec=0;
printf("------BENVENUTO NEL PROGRAMMA DI CONVERSIONE DEC-BIN------\n\n");
printf("Inserisci il valore decimale: ");
scanf("%d",&dec);
printf("\n");
for (i=0;i<DIM;i++)
{
vet[DIM-1-i]=dec%2;
dec=dec/2;
printf("%d ",vet[DIM-1-i]);
}
printf("\n");
scanf(" ");
}


Quest'altro invece "dovrebbe" stamparmi i numeri da destra verso sinistra come voglio io...pero me li stampa esattamente uguali come il codice di prima.

Questo è strano perche nel primo ciclo For la prima posizione dell'array è:
vet[16-16+0]---> posizione 0

Nel secondo ciclo For la prima posizione è:
vet[16-1-0] ----> posizione 15

Aiuto pls
Steve85 è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2004, 19:38   #2
Steve85
Member
 
Iscritto dal: Oct 2001
Messaggi: 56
Nessuno sa dirmi nulla?
Steve85 è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2004, 19:58   #3
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
La soluzione e' semplice: il salvataggio della sequenza binaria viene fatto al contrario, e tu stampi il numero mentre converti, quindi lo stampi al contrario. Fai cosi': prendi il secondo esempio, dichiara "vet" come char[], e non come int[], lascia tutto com'e', ma sposta "printf("%d ",vet[DIM-16+i]); " fuori dal ciclo for, cambiandolo in "printf(vet); ".

bye!
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 09-10-2004, 20:15   #4
Steve85
Member
 
Iscritto dal: Oct 2001
Messaggi: 56
Quindi la variabile vet la devo dichiarare cosi?

char vet[DIM];
....
....
....
printf(vet);



EDIT: Ho provato a fare quello che ho scritto qui sopra....non mi fa nulla. Inserisco il numero decimale...premo enter ma non mi visualizza nessun risultato.

Ultima modifica di Steve85 : 09-10-2004 alle 20:20.
Steve85 è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2004, 01:45   #5
LimiT-MaTz
Senior Member
 
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 673
se vuoi ho qui il programma che stiamo commentando al corso di fondamenti.
http://www.laser.dist.unige.it/Repos...Esercitazioni/
scarica binlib.

fammi sapere
__________________
MaTz!
LimiT-MaTz è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2004, 12:31   #6
Steve85
Member
 
Iscritto dal: Oct 2001
Messaggi: 56
Ho scaricato il programmino...pero non me lo compila.
Ho messo nella directory assieme a bin.cpp e bin.h anche il file stdlib.h (preso dalla directory del programma che uso per compilare).

Mi da questo errore:
[Linker error] undefined reference to `WinMain@16'


Cmq nessuno sa come posso modificare il mio programmino?
Steve85 è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2004, 13:15   #7
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
Codice PHP:
/*
Conversione da un decimeale in binario
*/

#include <stdio.h>
#include <conio.h>

#define MAX 10

int main (){
    
int valore_bin [MAX], i=1;
    
int valore_da_convertire;
    
int restoval ;
    
printf ("\nInserisci il numero da convertire in binario:\t");
    
scanf ("%d", &valore_da_convertire);
    
val valore_da_convertire;
    
    
//annullamento del vettore 
    
    
for (int y=0y<MAXy++) 
        
valore_bin [y] = 0;
    
    do{
        
resto val 2;
        
val val 2;
        
valore_bin [MAX-i] = resto;
        
++;
    } while (
val != 0);    
    for (
i=0;i<MAX;i++)
        
printf ("%d",valore_bin[i]);
    
printf ("\n\n\nIl programma e' stato realizzato da Fenomeno85");
    
getch ();

bye

avrei voluto mettere gli elementi in una singola variabile ma non ne ho la + pallida idea di come fare :P ... forse con lo shift si può fare

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2004, 14:12   #8
Steve85
Member
 
Iscritto dal: Oct 2001
Messaggi: 56
Cosi mi funzia...invece! Pero non capisco perche devo stampare vet[i] e non vet[DIM-1-i]. Mah



#include <stdio.h>

#define DIM 16

main()
{
int i;
int vet[DIM];
int dec=0;
printf("------BENVENUTO NEL PROGRAMMA DI CONVERSIONE DEC-BIN------\n\n");
printf("Inserisci il valore decimale: ");
scanf("%d",&dec);
printf("\n");
for (i=0;i<DIM;i++)
{
vet[DIM-1-i]=dec%2;
dec=dec/2;
}

for (i=0;i<DIM;i++)
printf("%d ",vet[i]);

printf("\n");
scanf(" ");
}
Steve85 è offline   Rispondi citando il messaggio o parte di esso
Old 10-10-2004, 14:32   #9
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 15:50.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2004, 13:17   #10
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Bene, visto che tutti hanno postato il proprio codice, un'altro giorno vi posto il mio elegantissimo codice Ora non ho il mio PC sotto mano, rimando.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2004, 20:02   #11
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Ecco il mio codice:
Codice:
#include	<stdio.h>

#define		MAX				16
#define		bt(v,b)		(((unsigned long) v & (1 << ((unsigned char) b - 1))) > 0)

int main()
{
	char *	buffer;
	char		num		=	123;
	char		j			=	0;

	for (j = 0; j < MAX; j++)
	{
		buffer[MAX - j - 1] = ('0' + bt(num, j));
	}

	buffer[MAX - 1] = 0;
	printf("%s\n", buffer);
	return 0;
}
Tabsize: 2. GVIM theme: darkblue. Language: C. bt = bit test.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2004, 20:13   #12
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
Quote:
Originariamente inviato da repne scasb
Non sono un'eperta di C. Prova un po cosi':

Codice:
#define SIZE_BIN (sizeof(dec)<<3)

    do
    {
	printf("%d ",(dec&(1<<i))>>i);
    } while (~--i&(1<<(SIZE_BIN-1)));
}
che sintassi trana spiega un pò che fa

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2004, 20:56   #13
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 15:49.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2004, 21:17   #14
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 15:48.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2004, 21:26   #15
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da repne scasb
Codice:
    } while (~--i&(1<<(SIZE_BIN-1)));
}
Sembra tutto molto strano, ma serve solo per aiutare il compilatore. 1<<(SIZE_BIN-1) e' una costante ed e' il bit di segno di i (i e' dichiarato int come dec, quindi hanno la stessa lunghezza in byte). L'istruzione semplicemente: decrementa i e test il bit di segno, se il bit di segno e' settato esce dal loop (il not (~) serve proprio per la permanenza all'interno del loop). Tutto cio' serve per permettere al compilatore di utilizzare JNS invece di JNL e risparmiare una istruzione assembly, in sostanza il tutto (se il compilatore compila per bene) viene tradotto come:

Codice:
	dec	[_i]
	jns	loop_dec
Rendendo pero' il codice piu' oscuro da leggere e quindi di minore qualita'

Non e' codice migliore e piu' leggibile scritto cosi'?

Codice:
  --i;
}
while (i >= 0);
Ancora piu' leggibile con un semplice ciclo for.

Ultima modifica di fek : 11-10-2004 alle 21:29.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2004, 22:48   #16
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 15:48.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 11-10-2004, 23:53   #17
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da repne scasb
E' necessario mettersi d'accordo sul concetto di migliore. Per migliore si puo intendere:
La definizione piu' semplice che si puo' dare di "migliore" e' un programma che risolve il problema che e' stato posto e nulla di piu'.

Fermo restando che le definizioni che hai dato dopo sono ottime.

Quote:
In generale io svluppo in qualsiasi linguaggio utilizzando il modello del migliore tipo 4), indipendentemente dal mio interlocutore. Ne caso specifico non ho utilizzato (i>=0), in quanto il compilatore avrebbe tradotto la sequanza con:
So come avrebbe tradotto il compilatore la sequenza che ho scritto.
Il problema qui era la conversione da decimale a binario di un numero solo (non di un milione ad esempio, cosa che sarebbe stata decisamente diversa). Ho anche letto il manuale da te riportato.

La tua sequenza risparmia (a seconda del processore) dai 4 ai 10 colpi di clock in totale su tutta l'esecuzione del programma. Considerando che alla fine del programma riportato c'e' una printf che da sola usa almeno qualche decina di migliaia di colpi di clock, i 10 colpi di clock risparmiati rappresentano meno di una parta su mille. Ovvero un risparmio del tutto trascurabile su una sola esecuzione del programma. Anche immaginando un milione di esecuzioni, sarebbe stato enormemente piu' vantaggioso andare ad ottimizzare l'output con una funzione diversa dalla printf piuttosto che quei 10 colpi di clock sulla fine del ciclo.

Infine, quei 10 colpi di clock non arrivano gratuitamente, ma impongono una minore leggibilita' del codice, ed un maggior lavoro da parte di chi quel codice dovra' leggerlo e magari mantenerlo in futuro. Qual e' la risorsa piu' scarsa? Il tempo cpu o il tempo del programmatore? La seconda e per la seconda si deve ottimizzare, quindi, se devo scegliere se aiutare il compilatore o aiutare chi legge il mio codice, scelgo senza ombra di dubbio la seconda, a meno che dal profiling scopro che il codice che sto scrivendo e' un collo di bottiglia della mia applicazione. In questo caso, e solo in questo, e solo dopo che non sono riuscito ad ottimizzare algoritmicamente alloracerchero' di aiutare il compilatore salvo commentando in maniera diffusa le linee di codice che non sono chiare, magari aggiungendo una versione in codice o pseudo codice piu' leggibile.

Quote:
Purtroppo i compillatori perfetti sono da venire, e quando scrivo codice in C, tento di aiutare in qualche modo il compilatore (e per fortuna che i e' signed, se fosse stato unsigned poiche' la dec [_i] non aggiorna il carry sarebbe stato necessario o la sub o la cmp (con il mio codice no)).
Ma il tuo codice ha imposto a me una decina di secondi per essere compreso, invece del secondo scarso che la mia versione avrebbe richiesto a chiunque, anche alle prime armi.
In sintesi, una versione del codice piu' leggibile e' preferibile nel 99% dei casi, salvo i casi dove e' richiesta un'ottimizzazione spinta del codice.
Quello riportato in questo topic non mi sembra uno di questi casi.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2004, 00:14   #18
LimiT-MaTz
Senior Member
 
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 673
Codice PHP:
#include <iostream.h>
#include <stdlib.h>
// DEFINIZIONI UTENTE
#define EOS '\0'
#define MAX '10'

// FUNZIONE PROTOTIPO //
int bin2dec(char[]);
char *dec2bin(int);
// FUNZIONE PROTOTIPO //

int main(){ 

char str[MAX];
int result,select,dec;
int cicle 0;
// INTRO
cout << "  ***************\n  " << "  Conversion   \n" <<"  ***************\n  " << endl;
cout << "\n\n";
cout << "  # 1 #  *** Bin2Dec ***  " << "\n" << endl;
cout << "  # 2 #  *** Dec2Bin ***  " << "\n" << endl;

while (
cicle == 0){
cout << "  Select:  "cin >> select;
// STRUMENTO DI SELEZIONE
switch( select ){

       case 
1:
           
cout << "\n\n\n  ***************\n  " << "    Bin2dec    \n" <<"  ***************\n  "<< endl;
           
cout << "   Inserisci un numero Binario   \n" << "   " << endl;
           
cin >> str;
           
result bin2dec(str) ;
           
cout << "il numero binario  " << str << "  corrisponde a  " << result << "  in base 10" << endl;
           
cicle 1;
           break;
       case 
2:
           
cout << "\n\n\n  ***************\n  " << "    Dec2Bin    \n" <<"  ***************\n  "<< endl;
           
cout << "   Inserisci un numero Decimale   \n"<< "   " << endl;
           
cin >> dec;
           
cout << "il numero decimale  " << dec << "  corrisponde a  " << dec2bin(dec) << endl;
           
cicle 1;
           break;
       default:
           
cicle 0;}
}
           


return 
0;
}

//                                        //
// FUNZIONE DECODER BINARIO TO DECIMALE //
//                                        //
int bin2dec(char btr[]){
    
int d 0;
    
int i;
    if ( 
btr[0] == '1' ){
        
1;}
    for(
1btr[i] != EOS i++){
        
2;
        if ( 
btr[i] == '1' )
            
1;
    }
    return 
d;}

//                                        //
// FUNZIONE DECODER DECIMALE TO BINARIO //
//                                        //
char *dec2bin(int input){
    
char *bin;
    
int input2,i,value;
    
input2 input;

    for(
int lenght=1input2 != 0lenght++){
        
input2 input2 2; }
    
    
bin = (char *) malloc(lenght+1);

    for(
i=lenght;>= 0i--){
        
value input 2;
        if (
value == 0)
            
bin[i] = '0';
        else 
bin[i] = '1';
        
input input 2;
    }
    
    
bin[lenght] = EOS;
    return 
bin;

iil programma nella decifrazione dec to bin mi da qualche problema mi visualizza valori del tipo: 0001010 invece che 1010 non riesco a capire dove sia il problema.
vi ringrazio in anticippo
__________________
MaTz!
LimiT-MaTz è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2004, 00:29   #19
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da LimiT-MaTz
iil programma nella decifrazione dec to bin mi da qualche problema mi visualizza valori del tipo: 0001010 invece che 1010 non riesco a capire dove sia il problema.
vi ringrazio in anticippo
Prova cosi':

Codice:
    char* str = bin;

    bool firstOneFound = false;

    for ( i = lenght; i >= 0; --i)
   {
        value = input % 2;
       
        if (0 == value)
        {
            if (firstOneFound)
            {
               *str++= '0';
            }
        }
        else 
        {
            firstOneFound = true;
            *str++ = '1';
        }

        input = input / 2;
    } 

      length = str - bin;

     *str++ = EOS;
Occhio che hai un memory leak nella funzione bin2dec, perche' allochi un blocco di memoria e non lo disallochi mai.
Non e' banale da risolvere, ma puoi seguire un paio di strade:

1) Usi la classe std::string e la restituisci per valore e non per reference; e' comodo da usare, risolve elegantemente il problema ma abusare della classe std::string puo' peggiorare notevolmente le prestazioni se non stai attento (non e' il tuo caso in questo esempio)

2) Passi esplicitamente alla funzione un blocco di memoria da riempire e la sua lunghezza, se ti servono piu' caratteri di quelli disponibili restituisci un errore; in genere e' il metodo preferibile.

Come regola generale non allocare mai memoria dentro una funzione per poi restituire il blocco allocato all'esterno: chi alloca una risorsa (metodo o classe) deve sempre occuparsi di liberare la risorsa. La seconda tecnica che ti ho suggerito segue questo principio.

Ultima modifica di fek : 12-10-2004 alle 00:32.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 12-10-2004, 13:06   #20
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 15:47.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Nella capsula Orion di Artemis II ci sar...
L'immagine del mese del telescopio spazi...
Heatspreader originale al posto del wate...
Ubisoft ha definitivamente archiviato Wa...
Motivair by Schneider Electric presenta ...
Un dissipatore che non richiede energia ...
Con Maia 200 Microsoft alza l'asticella ...
La Cina impone requisiti anche per lo st...
Apple lancia AirTag aggiornato: range es...
Microsoft risolve i blocchi di Outlook: ...
OpenAI verso il disastro finanziario? L’...
X nei guai: l'UE indaga sui pericoli del...
Caso Corona-Signorini: il giudice blocca...
470 petaFLOPS con una frequenza di 56 GH...
WhatsApp: abbonamento per rimuovere la p...
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: 23:59.


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