Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-02-2005, 14:38   #1
zanardi84
Senior Member
 
L'Avatar di zanardi84
 
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5749
Java: programma per conversione da decimale a binario

Ciao a tuttti!

Sono alle primissime armi nella programmazione e sto iniziando a studiare java.
Per esercizio devo creare un programmino capace di convertitre un numero da decimale a binario.
Ho a disposizione solo i cicli di controllo e la libreria base java.io per implementareil programma.

La procedura di conversione si basa sulla applicazione dell'algoritmo (spero s dica così): prendo il numero e inizio a dividerlo per 2; poi prendo il risultato ottenuto e lo divido ancora per 2, e così via finchè non ottengo 0 come risultato.

I resti delle varie divisioni (0 e 1) vengono presi e messi in sequenza partendo dall'ultimo resto sino al primo.

Avete qualche idea su come posso impostare la procedura di conversione? Ricordo: solo cicli (if while do for switch) oltre alla lettura del carattere da tastiera, con relativo controllo sulla validitàdel dato ( se c'è una lettera il programma si interrompe.

Grazie
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti.
zanardi84 è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 15:19   #2
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
ti lascio un suggerimento, se 'x' è il numero che devi convertire in binario :

int ris = x/2; //ris contiene la parte intera del risultato della divisione
int resto = x%2; //resto contiene il resto della divisione (0 o 1)

con un if e un for realizzi quello che ti serve
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 16:21   #3
zanardi84
Senior Member
 
L'Avatar di zanardi84
 
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5749
Come posso mettere insieme divisione e resto?
Ho pensato:

Do - while: esegui la divisione finchè il risultato non è 0. all'interno del ciclo do metto un comando che calcola il resto della stessa divisione. La sequenza di resti la metto in uno stack in modo che l'ultimo resto che ho messo sia il primo della sequenza da scrivere.

Può andare?
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti.
zanardi84 è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 16:28   #4
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da zanardi84

Può andare?


penso di sì.
come stack puoi usare una stringa, se non vuoi complicarti la vita.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 16:38   #5
zanardi84
Senior Member
 
L'Avatar di zanardi84
 
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5749
come costruisco lo store dei dati?

Creo una stringa e ad ogni passaggio del ciclo gli faccio inserire il resto. Poi devo trovare un comando che inverta il contenuto della stringa.

Operativemente come ottngo queste due cose (scrittura dato nella stringa e inversione)?
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti.
zanardi84 è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 16:50   #6
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
puoi usare diversi approcci.

per salvarti i resti puoi usare semplicemente una stringa vuota e usare l'operatore che concatena, così:

String risultato = new String ();
Codice:
do
{
int i = 0; //qui mettereai il resto

risultato +=i; //qui fai la concatenazione.

}while(...)
e poi "girarla" così:

Codice:
String veroRisultato = new String();
for (int i = risultato.length-1; i>=0;i--)
    veroRisolutato += risultato.charAt(i);

N.B. sono tutte operazioni che si possono fare in maniera molto piu' efficiente, solo che ho cercato di non complicare il codice.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 16:55   #7
zanardi84
Senior Member
 
L'Avatar di zanardi84
 
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5749
Stoscrivendo il codice: qualche minuto e faccio sapere
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti.
zanardi84 è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 17:00   #8
zanardi84
Senior Member
 
L'Avatar di zanardi84
 
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5749
C'è una cosa che non mi è chiara: perchè poni

int i =0 e poi lo incrementi? i a che si riferisce?

Sono proprio alle prime armi
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti.
zanardi84 è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 17:11   #9
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da zanardi84
C'è una cosa che non mi è chiara: perchè poni

int i =0 e poi lo incrementi? i a che si riferisce?

Sono proprio alle prime armi


no ho scritto i=0 solo per far capire che è un 'int', in realtà è il resto della divisione che avevamo chiamato prima 'resto'.
e la seconda istruzione modifica la String 'risultato' accodando il valore di 'i'. Alla fine leggendola al contrario dovresti avere quello che cerchi.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 17:13   #10
zanardi84
Senior Member
 
L'Avatar di zanardi84
 
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5749
Allora, sono arrivato a questo punto e sono bloccato

Spero sia possibile inserire il codice, incasocontrario mi scuso





import java.io.*;
public class conversione {
public static void main(String[] args) {
int decimale; //Numero da convertire
int risultato; //Risultato divisione
int resto;
System.out.println("Convertitore numeri da decimali a binari");
String resto= new String();
InputStreamReader input= new InputStreamReader (System.in);
BufferedReader tastiera= new BufferedReader(input);
System.out.println("Immettere il numero da convertire");
try
{
String numeroLetto=tastiera.readLine();
decimale= Integer.valueOf(numeroLetto).intValue();
}
catch (Exception e)
{
System.out.println("Numero non corretto!");
return;
}
do
{
risultato= decimale/2;
resto= decimale%2;
risultato =risultato/2;
resto=resto%2;



Ora devo inserire il comando per salvare nella stringa i resti, ma manca qualcosa di cui sono ancora all'oscuro.
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti.
zanardi84 è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 17:24   #11
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Codice:
import java.io.*;
public class conversione {
public static void main(String[] args) {
int decimale; //Numero da convertire
int risultato; //Risultato divisione
int resto;
System.out.println("Convertitore numeri da decimali a binari");
InputStreamReader input= new InputStreamReader (System.in);
BufferedReader tastiera= new BufferedReader(input);
System.out.println("Immettere il numero da convertire");


try
{
String numeroLetto=tastiera.readLine();
decimale= Integer.valueOf(numeroLetto).intValue();
}
catch (Exception e)
{
System.out.println("Numero non corretto!");
return;
}
String s = new String();
risultato = decimale;
do
{
resto= risultato%2;
risultato= risultato/2;
s+=resto;

}while (risultato != 0);


String veroRisultato = new String();
for (int i = s.length()-1; i>=0;i--)
    veroRisultato += s.charAt(i);

System.out.println("\n\nBinario: " + veroRisultato);
}
}

dagli una sistemata
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 17:31   #12
zanardi84
Senior Member
 
L'Avatar di zanardi84
 
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5749
risultato = decimale;
do
{
resto= risultato%2;
risultato= risultato/2;
s+=resto;

}while (risultato != 0);



Non mi è chiara una cosa: perchè poni risultato=decimale?
Non andava bene il passaggio
risultato= decimale/2;
resto= decimale%2;
risultato =risultato/2;
resto=resto%2;


?

Vorrei apire bene come funziona la cosa
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti.
zanardi84 è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 17:45   #13
zanardi84
Senior Member
 
L'Avatar di zanardi84
 
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5749
Vediamo se ho capito:

risultato =decimale perchè in questo modo faccio un passaggio di parametro (è così che si dice?) cioè è come se di volta in volta il risultato della divisione diventasse il numero decimale da converire.

s+=resto; perchè aggiunge il resto alla stringa.


poi il ciclo for finale ribalta il contenuto della stringa e lo stampa a schermo.

è così?
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti.
zanardi84 è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 18:32   #14
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
allora, in ordine:

risultato = decimale e' dovuto al fatto che modificando il tuo codice in ftretta ho introdotto una variabile di appoggio superflua che in realtà non serve, il codice potrebbe essere:
Codice:
String s = new String();
do
{
resto= decimale%2;
decimale= decimale/2;
s+=resto;

}while (decimale != 0);
il tuo codice non va bene perche' altrimenti a ogni passaggio nel ciclo do-while esegui sempre le medesime operazioni dato che non aggiorni mai il valore della variabile su cui operi
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2005, 18:34   #15
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Quote:
Originariamente inviato da zanardi84

s+=resto; perchè aggiunge il resto alla stringa.


poi il ciclo for finale ribalta il contenuto della stringa e lo stampa a schermo.

è così?

esatto , si puo' scrivere anche

s = s + resto;

quella che ho usato e' una notazione piu' sintetica.
In realtà per fare operazioni come quella di concatenare tante volte un carattere a una stringa sarabbe meglio utilizzare un oggetto temporaneo di class StringBuffer, ma come ti ho detto non è il caso di complicare il codice, all'inizio.

il for finale crea una nuova stringa "ribaltata" rispetto alla precedente.
anche qui sarebbe più efficiente usare uno StringBuffer.

kingv è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Lefant M330 da 6.000Pa a 139€ o ECOVACS ...
Tornano gli sconti anche sulle scope ele...
Le scope elettriche Dreame H12, H14 e H1...
Il nucleo della cometa interstellare 3I/...
La Russia potrebbe sviluppare un'arma pe...
Manda la RAM Corsair in assistenza, rice...
ASUS ROG G1000 con 'AniMe Holo': saranno...
Un test di longevità ha messo alla prova...
Incat inizia i test dell'incredibile tra...
LG Sound Suite: al CES il sistema audio ...
Avengers Doomsday, il primo trailer &egr...
La crisi delle memorie non farà sconti a...
Il trailer più atteso dell'anno &...
I gamer vogliono i monitor OLED: sopratt...
Samsung alza l’asticella dei televisori ...
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: 08:38.


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