Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [c] Istogramma Con Asterischi

    vi posto subito il problema:

    Scrivere un programma per caricare un vettore di numeri interi e rappresentare i valori di ogni elemento sottoforma di istogramma: al fianco di ogni numero visualizzare una barra di asterischi, proporzionale al numero stesso.

    secondo la mia idea di programma, dovrei utilizzare due vettori uno per caricare i numeri e l'altro per gestire gli asterischi di fianco ad ogni numero....correggetemi se sbaglio (sicuramente)....però mi blocco a mettere in relazione i due vettore ad esempio:

    elementi vettore:
    1
    2
    3
    4
    output:
    1 *
    2 **
    3 ***
    4 ****

    come faccio a dire al secondo vettore che deve stampare tanti asterischi quant'è il valore di ogni singolo elementi del primo vettore?

    (ke macello...... :master: )

  2. #2
    Non vedo dove sia il problema... scorri il primo vettore e usa il valore che ne ricavi come indice per il secondo; l'elemento corrispondente ad esso andrà incrementato di uno.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    e per stampare gli *?

    potresti anche spiegarti con un piccolo esempio?

  4. #4
    putchar in un ciclo che viene eseguito tante volte quanto vale il corrispondente elemento nel secondo vettore.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    niente da fare....non c'ho capito una mazza....

  6. #6
    qualc'uno riesce a spiegarmi questo? "scorri il primo vettore e usa il valore che ne ricavi come indice per il secondo; l'elemento corrispondente ad esso andrà incrementato di uno."

  7. #7
    Ammetto di essere stato un po' criptico, ma non mi pare così complesso...

    Scorri il primo vettore = usa un for per ciclare su ciascun elemento del primo vettore
    Usa il valore che ne ricavi come indice per il secondo = ad ogni iterazione vai a considerare il valore dell'elemento del primo vettore su cui ti trovi; usa questo per accedere al corrispondente elemento del secondo vettore
    l'elemento corrispondente ad esso andrà incrementato di uno = non so come renderlo più semplice...

    Esempio:
    codice:
    #define ARRSIZE(arr) (sizeof(arr)/sizeof(*(arr)))
    int vettoreInput[50];
    int vettoreProb[100]={0};
    /* ... riempimento vettoreInput ... */
    /* Calcolo vettore probabilità */
    int i, j, maxVI=0;
    for(i=0;i<ARRSIZE(vettoreInput);i++)
    {
        /* Evitiamo di fare danni */
        if(vettoreInput[i]>=ARRSIZE(vettoreProb))
        {
            /* il vettore probabilità è troppo piccolo, gestisci l'errore in qualche maniera (visualizza un qualche messaggio di errore, ...) */
            break;
        }
        vettoreProb[vettoreInput[i]]++;
        maxVI=max(maxVI, vettoreInput[i]);
    }
    for(i=0; i<=maxVI; i++)
    {
        printf("%d: ",i);
        for(j=0; j<vettoreProb[i]; j++)
            putchar('*');
        putchar('\n');
    }
    Naturalmente se l'insieme dei possibili valori di vettoreInput è particolarmente sparso risulta più conveniente una struttura dati più flessibile, come l'hashtable.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.