Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
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'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-10-2005, 17:53   #1
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
[C] Rappresentazione binaria

Ciao a tutti!!!

Devo scrivere un programma che dato in input un numero intero < 128 restituisca la sua rappresentazione binaria (senza usare while)

Esempio
Input: 35
Output: 00100011

Il problema è che oltre a non usare while, non devo usare né puntatori né array. E qui sta il problema.... come faccio (dopo aver ripetutamente diviso per due il numero) a restituire i resti nell'ordine inverso? Grazie.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 18:30   #2
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
A meno di errori grossolani:

Codice:
#include <stdio.h>

void main(void)

{
    int i;

    printf("Valore: ");
    scanf("%d",&i);

    switch (i)
    {
        case 0:
            printf("0000000");
            break;
        case 1:
            printf("0000001");
            break;
        case 2:
            printf("0000010");
            break;
        case 3:
            printf("0000011");
            break;
        case 4:
            printf("0000100");
            break;
        case 5:
            printf("0000101");
            break;
        case 6:
            printf("0000110");
            break;
        case 7:
            printf("0000111");
            break;
        case 8:
            printf("0001000");
            break;
        case 9:
            printf("0001001");
            break;
        case 10:
            printf("0001010");
            break;
        case 11:
            printf("0001011");
            break;
        case 12:
            printf("0001100");
            break;
        case 13:
            printf("0001101");
            break;
        case 14:
            printf("0001110");
            break;
        case 15:
            printf("0001111");
            break;
        case 16:
            printf("0010000");
            break;
        case 17:
            printf("0010001");
            break;
        case 18:
            printf("0010010");
            break;
        case 19:
            printf("0010011");
            break;
        case 20:
            printf("0010100");
            break;
        case 21:
            printf("0010101");
            break;
        case 22:
            printf("0010110");
            break;
        case 23:
            printf("0010111");
            break;
        case 24:
            printf("0011000");
            break;
        case 25:
            printf("0011001");
            break;
        case 26:
            printf("0011010");
            break;
        case 27:
            printf("0011011");
            break;
        case 28:
            printf("0011100");
            break;
        case 29:
            printf("0011101");
            break;
        case 30:
            printf("0011110");
            break;
        case 31:
            printf("0011111");
            break;
        case 32:
            printf("0100000");
            break;
        case 33:
            printf("0100001");
            break;
        case 34:
            printf("0100010");
            break;
        case 35:
            printf("0100011");
            break;
        case 36:
            printf("0100100");
            break;
        case 37:
            printf("0100101");
            break;
        case 38:
            printf("0100110");
            break;
        case 39:
            printf("0100111");
            break;
        case 40:
            printf("0101000");
            break;
        case 41:
            printf("0101001");
            break;
        case 42:
            printf("0101010");
            break;
        case 43:
            printf("0101011");
            break;
        case 44:
            printf("0101100");
            break;
        case 45:
            printf("0101101");
            break;
        case 46:
            printf("0101110");
            break;
        case 47:
            printf("0101111");
            break;
        case 48:
            printf("0110000");
            break;
        case 49:
            printf("0110001");
            break;
        case 50:
            printf("0110010");
            break;
        case 51:
            printf("0110011");
            break;
        case 52:
            printf("0110100");
            break;
        case 53:
            printf("0110101");
            break;
        case 54:
            printf("0110110");
            break;
        case 55:
            printf("0110111");
            break;
        case 56:
            printf("0111000");
            break;
        case 57:
            printf("0111001");
            break;
        case 58:
            printf("0111010");
            break;
        case 59:
            printf("0111011");
            break;
        case 60:
            printf("0111100");
            break;
        case 61:
            printf("0111101");
            break;
        case 62:
            printf("0111110");
            break;
        case 63:
            printf("0111111");
            break;
        case 64:
            printf("1000000");
            break;
        case 65:
            printf("1000001");
            break;
        case 66:
            printf("1000010");
            break;
        case 67:
            printf("1000011");
            break;
        case 68:
            printf("1000100");
            break;
        case 69:
            printf("1000101");
            break;
        case 70:
            printf("1000110");
            break;
        case 71:
            printf("1000111");
            break;
        case 72:
            printf("1001000");
            break;
        case 73:
            printf("1001001");
            break;
        case 74:
            printf("1001010");
            break;
        case 75:
            printf("1001011");
            break;
        case 76:
            printf("1001100");
            break;
        case 77:
            printf("1001101");
            break;
        case 78:
            printf("1001110");
            break;
        case 79:
            printf("1001111");
            break;
        case 80:
            printf("1010000");
            break;
        case 81:
            printf("1010001");
            break;
        case 82:
            printf("1010010");
            break;
        case 83:
            printf("1010011");
            break;
        case 84:
            printf("1010100");
            break;
        case 85:
            printf("1010101");
            break;
        case 86:
            printf("1010110");
            break;
        case 87:
            printf("1010111");
            break;
        case 88:
            printf("1011000");
            break;
        case 89:
            printf("1011001");
            break;
        case 90:
            printf("1011010");
            break;
        case 91:
            printf("1011011");
            break;
        case 92:
            printf("1011100");
            break;
        case 93:
            printf("1011101");
            break;
        case 94:
            printf("1011110");
            break;
        case 95:
            printf("1011111");
            break;
        case 96:
            printf("1100000");
            break;
        case 97:
            printf("1100001");
            break;
        case 98:
            printf("1100010");
            break;
        case 99:
            printf("1100011");
            break;
        case 100:
            printf("1100100");
            break;
        case 101:
            printf("1100101");
            break;
        case 102:
            printf("1100110");
            break;
        case 103:
            printf("1100111");
            break;
        case 104:
            printf("1101000");
            break;
        case 105:
            printf("1101001");
            break;
        case 106:
            printf("1101010");
            break;
        case 107:
            printf("1101011");
            break;
        case 108:
            printf("1101100");
            break;
        case 109:
            printf("1101101");
            break;
        case 110:
            printf("1101110");
            break;
        case 111:
            printf("1101111");
            break;
        case 112:
            printf("1110000");
            break;
        case 113:
            printf("1110001");
            break;
        case 114:
            printf("1110010");
            break;
        case 115:
            printf("1110011");
            break;
        case 116:
            printf("1110100");
            break;
        case 117:
            printf("1110101");
            break;
        case 118:
            printf("1110110");
            break;
        case 119:
            printf("1110111");
            break;
        case 120:
            printf("1111000");
            break;
        case 121:
            printf("1111001");
            break;
        case 122:
            printf("1111010");
            break;
        case 123:
            printf("1111011");
            break;
        case 124:
            printf("1111100");
            break;
        case 125:
            printf("1111101");
            break;
        case 126:
            printf("1111110");
            break;
        case 127:
            printf("1111111");
            break;
	default:
    	    printf("Valore non valido\n");
    }
}
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 18:39   #3
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Aaaah dovevo fare proprio in maniera "rudimentale" così?

Pensavo ci fosse qualche metodo... Grazie cmq
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 18:41   #4
cj++
Member
 
L'Avatar di cj++
 
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
void dec2bin(int numero){

int bin = 0, i = 0;

for(; numero > 0; numero /= 2, i++)
if(numero % 2)
bin += (int)pow((float)10, (float)i);

printf("%d", bin);
}




p.s. ovviamente va inclusa la libreria math.h
__________________
Code without tests is broken by design.

Ultima modifica di cj++ : 13-10-2005 alle 18:44.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 18:41   #5
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Quote:
Originariamente inviato da Manugal
Pensavo ci fosse qualche metodo...
Ed infatti c'e'.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 18:46   #6
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Ok ho capito che c'era il metodo però non pensavo fosse quello

x cj++:

Ho visto il tuo listato ma credo che quello che hai fatto tu non corrisponda alla conversione di un decimale in binario. Ad esempio 23 mi viene 10109. Cmq grazie.

Ultima modifica di Manugal : 13-10-2005 alle 18:50.
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 18:48   #7
cj++
Member
 
L'Avatar di cj++
 
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
Quote:
Originariamente inviato da Manugal
x cj++:

Ho visto il tuo listato ma credo che quello che hai fatto tu non corrisponda alla conversione di un decimale in binario. Cmq grazie.

come no, bin contiene il numero in binario... se passi alla funzione 35 ti da 100011...
__________________
Code without tests is broken by design.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 18:50   #8
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Se però passo ,ad esempio, 23 mi da 10109
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 18:52   #9
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Magari l'idea è anche giusta....
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 18:52   #10
cj++
Member
 
L'Avatar di cj++
 
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
con 23 a me da 10111, mi sa che ha qualche problema la tua macchina/IDE
Anche perche bin contiene solo potenze di 10 quindi il 9 fa fatica a saltar fuori


Corretto e sintetico



edit: hai inizializzato bin = 0? E' essenziale che lo sia.

edit 2: repne se fossi il tuo prof e tu mi consegnassi una cosa del genere te lo fare per valori della x fino a 65535
__________________
Code without tests is broken by design.

Ultima modifica di cj++ : 13-10-2005 alle 19:01.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 18:57   #11
Manugal
Senior Member
 
L'Avatar di Manugal
 
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
Boh non so che dirti a me tira fuori quel risultato.

Si si è inizializzato. Cmq uso il DevC++
Manugal è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:05   #12
cj++
Member
 
L'Avatar di cj++
 
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
Quote:
Originariamente inviato da Manugal
Cmq uso il DevC++
Ecco questa è gia una potenziale causa
Cmq qlc di strano c'è perche bin puo assumere solo 0 e 1 come valori.

In ogni caso vai tranqui che è corretto
__________________
Code without tests is broken by design.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 19:45   #13
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Quote:
Originariamente inviato da cj++
edit 2: repne se fossi il tuo prof e tu mi consegnassi una cosa del genere te lo fare per valori della x fino a 65535
Premesso che il mio maestro di informatica e' deceduto nel 1991, non mi sognerei mai di scrivere un tale sorgente neanche fino a 16. Per questo motivo ho sviluppato un piccolo software che mi genera il sorgente, ossia un software che genera un software:

Codice:
#include <stdio.h>
#include <stdlib.h>

#define	N_BITS	16

void main(void)

{
	long i;
	char s[33];

	for(i=1L<<N_BITS;i<((1L<<(N_BITS+1)));i++)
	{
		printf("        case %ld:\n",i-(1L<<N_BITS));
		printf("            printf(\x22%s\x5Cn\x22);\n",itoa(i,s,2)+1);
		printf("            break;\n");
	}
}
P.S. itoa non e' ANSI.

---------------------------------------------------------------------------

Detto cio', questa e' una possibile variante (che avrebbe dovuto trovare l'utente Manugal):

Codice:
#include <stdio.h>

void main(void)

{
    int i,j;

    printf("Valore: ");
    scanf("%d",&i);

    for(j=128;j;j>>=1)
	printf("%c",i&j?'1':'0');
}
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 21:25   #14
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da repne scasb

Detto cio', questa e' una possibile variante (che avrebbe dovuto trovare l'utente Manugal):

Codice:
#include <stdio.h>

void main(void)

{
    int i,j;

    printf("Valore: ");
    scanf("%d",&i);

    for(j=128;j;j>>=1)
	printf("%c",i&j?'1':'0');
}

Geniale

Come al solito

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 21:40   #15
cj++
Member
 
L'Avatar di cj++
 
Iscritto dal: Sep 2005
Città: Barcelona
Messaggi: 200
Quote:
un software che genera un software
...metaprogramming...


Quote:
Geniale Come al solito
Google rulez in effetti
__________________
Code without tests is broken by design.
cj++ è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 21:46   #16
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da cj++

Google rulez in effetti
In che senso? C'è un link con lo stesso software?

Comunque repne si è sempre dimostrata in grado di trovare algoritmi efficientissimi per problemi molto + complicati di questo , quindi il suo valore è già consolidato a prescindere da tutto .

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 22:07   #17
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Quote:
Originariamente inviato da cj++
Google rulez in effetti
Il codice e' assolutamente originale, e non copiato da altre fonti. Per completezza riporto anche il codice in assembly x86 la cui particolarita e' di non utilizzare salti condizionati (escluso l'uscita dal loop). Chi e' in grado di scrivere l'equivalente in C? (ossia senza IF).

Codice:
	mov	al,_i
	xor	bx,bx
	mov	cx,8h
loop_bit:
	rol	al,1h
	mov	bl,al
	and	bl,1h
	add	bl,'0'
	push	bx
	push	si

	call	_printf
	add	sp,4h

	dec	cx
	jne	loop_bit
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 23:02   #18
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Quote:
Originariamente inviato da repne scasb
Il codice e' assolutamente originale, e non copiato da altre fonti. Per completezza riporto anche il codice in assembly x86 la cui particolarita e' di non utilizzare salti condizionati (escluso l'uscita dal loop). Chi e' in grado di scrivere l'equivalente in C? (ossia senza IF).

Codice:
	mov	al,_i
	xor	bx,bx
	mov	cx,8h
loop_bit:
	rol	al,1h
	mov	bl,al
	and	bl,1h
	add	bl,'0'
	push	bx
	push	si

	call	_printf
	add	sp,4h

	dec	cx
	jne	loop_bit

E' un piacere leggerti, ti adoro rep, sei mitica............ ciao da okay
okay è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 23:39   #19
Gica78R
Senior Member
 
L'Avatar di Gica78R
 
Iscritto dal: Mar 2005
Messaggi: 1653
Quote:
Originariamente inviato da Manugal
Ciao a tutti!!!

Devo scrivere un programma che dato in input un numero intero < 128 restituisca la sua rappresentazione binaria (senza usare while)

Esempio
Input: 35
Output: 00100011

Il problema è che oltre a non usare while, non devo usare né puntatori né array. E qui sta il problema.... come faccio (dopo aver ripetutamente diviso per due il numero) a restituire i resti nell'ordine inverso? Grazie.
Se puoi usare la ricorsione, lo fai in poche righe... Ma mi sa che non puoi!

Ciao
__________________
gica78r@ncc-1701:~$ tar -c
tar: Codardamente mi rifiuto di creare un archivio vuoto
Gica78R è offline   Rispondi citando il messaggio o parte di esso
Old 13-10-2005, 23:43   #20
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12113
Quote:
Originariamente inviato da repne scasb
Il codice e' assolutamente originale, e non copiato da altre fonti. Per completezza riporto anche il codice in assembly x86 la cui particolarita e' di non utilizzare salti condizionati (escluso l'uscita dal loop). Chi e' in grado di scrivere l'equivalente in C? (ossia senza IF).

Codice:
	mov	al,_i
	xor	bx,bx
	mov	cx,8h
loop_bit:
	rol	al,1h
	mov	bl,al
	and	bl,1h
	add	bl,'0'
	push	bx
	push	si

	call	_printf
	add	sp,4h

	dec	cx
	jne	loop_bit
sempre + spettacolare repne!!!
ke bello vedere ki nn t conosce ke fa certe insinuazioni!
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Il padrino del deep learning avverte: gl...
Il finto avviso "iPhone Storage is Full"...
Dietrofront in Cina, addio touchscreen p...
Un piccolo accessorio trasforma lo smart...
Dopo 370 anni il Cyphral Distich non è p...
Oppo Find X10, X10 Pro Max e X10 E: conf...
Dal microscopio all'IA: un cervello di i...
Cyberpunk 2077 arriverà su Battle...
Altro che divieto: interi pallet di GeFo...
QNAPTS-h966TX, il NAS per chi fa editing...
Il trucco semplicissimo per installare W...
Apple rinvia due novità di iOS 27...
Una memoria ferroelettrica raggiunge 10 ...
Honor Magic 9, Pro Max e Super Edition: ...
24 offerte Amazon da non perdere, dalla ...
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: 14:56.


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