Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
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 ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-12-2010, 16:53   #1
L4ky
Senior Member
 
L'Avatar di L4ky
 
Iscritto dal: May 2008
Messaggi: 1566
[C++]Unire valori di array in variabile unica

Ho un problema. Sto frequentando il corso di Informatica e quest'anno studiamo C++. L esercizio da fare è:
Dato un numero, visualizzare tutti i numeri binari da 1 al numero di cifre inserito.
Il codice funziona fino a quando il programma genera numeri a 10 cifre, se provo con 11 non funziona più.
Inoltre vorrei unire i valori di un array in una variabile unica, ma non posso sommarle perchè sono in binario..come dispongo i valori uno dopo l'altro???

Spoiler:
Codice:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string> 

int main()
{
    int x, conta, num, bnum=0, nmax=0, copiax=0;
    printf("\t\t\tNUMERI IN BINARIO\n");
    printf("Inserisci la quantità di cifre in binario da visualizzare: ");
    scanf("%d", &x);
    copiax=x;
    x=2;
    for(int p=1; p < copiax; p++){x *= 2;}
    //printf("\n\nAHAHAH NUMERO MAX: %d\n\n", x);
    int bin[x+1][20];
    int dim[x+1];
    int def[x+1][2];
    for(int i=0; i < x; i++){for(int j=0; j < 50; j++){bin[i][j] = 0;}} // AZZERA MATRICE
    for(int i=0; i < x; i++){dim[i] = 1;}
    for(int i=0; i < x; i++){for(int j=0; j < 2; j++){def[i][j] = 0;}} // AZZERA MATRICE DEFINITIVA
    
    for(num=1; num <= x+1; num++){
        bnum=num;
    for(conta = 0; conta < 50; conta++){
        bin[num][conta] = bnum%2;
        if(bnum == 1){bin[num][conta++] = 1; conta = 50;}else{
        bnum = bnum / 2;}
        dim[num]++;
        }
        conta=0;
    }
    printf("\n");
    for(int i=1; i < x; i++){for(int j=dim[i]-1; j > 0; j--){printf("%d", bin[i][j-1]);}printf("\n");} 
    
    
    //for(int i=0; i < x; i++){printf("%d ", dim[i]);} // DEBUG DIMENSIONI
    //for(int i=0; i < x; i++){for(int j=0; j < 100; j++){printf("%d", bin[i][j]);}} // DEBUG MATRICE
    system("PAUSE");
    return 0;
}
__________________
CM Obsidian 750D - Corsair TX650M - AMD Ryzen 7 3700x - Asus TUF B550-PLUS - nVidia Gigabyte GTX 1060 6GB G1 Gaming - Noctua D15S - Corsair Vengeance Pro 3600MHz 16GB - 2xHP x27i - Razer Deathadder - Logitech G15 v1 nVidia Edition- Roccat Taito King-Size - Fastweb (2011) | Alice(2015) | Alice(2016) | Eolo 30Mb (2016) | Wind3 4G Flat (2019) | PF AIR 100 (2021)
L4ky è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2010, 22:16   #2
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
Credo che la tua strada sia un po' cervellotica... bitwise operators?

Ti butto lì il cuore di una soluzione compatta e priva di array:
Codice:
printf("%ld", ( nCurrent >> nBit ) % 2);
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2010, 14:51   #3
L4ky
Senior Member
 
L'Avatar di L4ky
 
Iscritto dal: May 2008
Messaggi: 1566
Ah...è perchè stiamo facendo esercizi su array...
Puoi spiegarmi cosa fa quel codice nel printf?
Gia che ci sono..qual'è l'operatore da inserire in printf e scanf per i double ?
__________________
CM Obsidian 750D - Corsair TX650M - AMD Ryzen 7 3700x - Asus TUF B550-PLUS - nVidia Gigabyte GTX 1060 6GB G1 Gaming - Noctua D15S - Corsair Vengeance Pro 3600MHz 16GB - 2xHP x27i - Razer Deathadder - Logitech G15 v1 nVidia Edition- Roccat Taito King-Size - Fastweb (2011) | Alice(2015) | Alice(2016) | Eolo 30Mb (2016) | Wind3 4G Flat (2019) | PF AIR 100 (2021)
L4ky è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2010, 19:43   #4
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
Quote:
Originariamente inviato da L4ky Guarda i messaggi
Ah...è perchè stiamo facendo esercizi su array...
Puoi spiegarmi cosa fa quel codice nel printf?
Gia che ci sono..qual'è l'operatore da inserire in printf e scanf per i double ?
>> è l'operatore di shift a destra

in pratica:

Codice:
int a = 1;
int b = 1;
int c = a >> b; // c = 0
prende la rappresentazione binaria di a (in questo caso, se hai interi di 4 byte, 32 bit così fatti: 000000.....001) e shifta a destra di b posizioni (in questo caso b è 1 e c diventa 0)

notare che se shifti una variabile signed (come int) il bit che viene inserito a sinistra è quello del segno della rappresentazione in complemento a due (1 per numeri negativi, 0 per i positivi), tipo:
Codice:
int a = -1;
int b = 1
int c = a >> b; // c = -1
perché -1 ha rappresentazione 111111111...111 in complemento a due e qualsiasi shift è ininfluente, perché vengono sempre inseriti degli uno a sinistra

quindi alla fine se hai un numero puoi stamparne tutte le cifre binarie facendo come dice gimli e incrementando nBit di volta in volta

per la seconda domanda: si usa %f

Ultima modifica di tuccio` : 10-12-2010 alle 19:45.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
La nave elettrica più grande mai ...
Spusu lancia il Wi-Fi Calling: come funz...
Questo robot impara a muovere le labbra ...
iPhone 17 annienta la concorrenza in Cin...
La nuova Xiaomi SU7 batte un record: 4.2...
È possibile copiare i qubit: dei ...
BYD alza ulteriormente l'asticella: batt...
Il nuovo razzo spaziale riutilizzabile c...
L'ex leader di Assassin's Creed porta Ub...
Il razzo spaziale NASA SLS e la capsula ...
Samsung Galaxy S26 Ultra: quattro colora...
AWS investe 1,2 miliardi in Italia. Coin...
La navicella cinese Shenzhou-20 con il f...
I piani Business ed Education di Google ...
Ceres-2 e Lunga Marcia 3B: la Cina falli...
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: 02:42.


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