Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 37
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250

    [c++]Random di colori...

    Ciao a tutti ragazzi!!Sono nuovo di questo magnifico forum...Ormai lo seguo da parecchio tempo...(a dire il vero seguo tutto il sito html.it).

    Non sapendo se c'è una sezione per presentarsi,mi presento.

    Mi chiamo marco,ho quindici anni e sono interessato al mondo della programmazione.
    In particolare sto imparando un po di basi e concetti fondamentali di c++.

    Come da titolo,chiedevo se esistesse un modo pre generare colori casuali...io ho fatto così:

    #include <iostream>
    #include <ctime>
    using namespace std;

    int main(void)
    {
    srand(time(0));/*inizializzo la funzione per 'randomizzare*/
    int numero= rand() %8+1; //genero numeri compresi tra 1 e 8
    char lettera = rand()% 6+'a';//genero 6 lettere comprese dalla 'a' in poi
    system("color (numerolettera)");/*questo è il mio problema:comefaccio a dare a system le due variabili invece che dei dati specifici??*/
    cout<<"Ciao mondo";
    system("pause");

    }

    Io vorrei che questo semplice programma mi scrive sul monitor hello world (ovviamento ogni volta in colore diverso...non so come fare...ogni volta che eseguo il programma mi si apre una finestra (dos) con tutte le combinazioni di colori da utilizzare???

    Mi aiutate??Sono inesperto quindi parlate con un linguaggio comprensibile ai comuni mortali...

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Se non ho capito male, il tuo problema è che non sai come costruire il parametro da dare alla system, giusto?

    Ti basta "assemblare" la stringa giusta.

    codice:
    #include <string>
    
    string color = "color ";
    string lettera = ... //lettera casuale
    string numero = ...//numero casuale
    
    string comando = color + lettera + numero;
    
    system( comando.c_str() );
    Quando usi il + su due string, restituisce un'altra string che contiene le due stringhe concatenate. Alla system non puoi passare l'oggetto string, ma devi passarlo come puntatore a caratteri, in stile C insomma, ed è a quello che serve il metodo c_str().
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Innanzi tutto ti ringrazio per la risposta!!
    Mi congratulo con te perchè hai centrato pienamente il problema...

    Quindi non si possono dare al system due parametri????

    In ogni modo...io ho fatto così:

    #include<iostream>
    #include <string>
    using namespace std;
    int main()
    {
    string color = "color ";
    string lettera = 'a'; //lettera casuale
    string numero = '5';//numero casuale

    string comando = color + lettera + numero;

    system( comando.c_str() ); //Perchè metti .c_str dopo la parola comando???
    cout<"Ciao mondo!!"<<endl;
    system("pause");
    }

    Mi dovrebbe generare la scritta conn sfondo corrispondente al codice...ma mi da dei problemi in fase di compilazione....ad esempio:

    invalid conversion from 'char' to 'const char'
    initializing argument 1 of `std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'
    expected `,' or `;' before "string"
    `comando' undeclared (first use this function)

    Non sono esperto con il c++ e quindi non so a cosa si riferiscono gli errori...non so neanche se il codice l'ho scritto correttamente quindi se potresti aiutarmi a sviluppare il codice,te ne sarei davvero grato....

    p.s. Mi puoi spiegare cos'è un puntatore??E' una sorta di contenitore che può contenere variabili di tipo diverso??

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Benvenuto sul forum.
    Ti invito fin d'ora a prendere visione del Regolamento interno, in particolare il punto 6: formattazione del codice.

    In futuro, usa l'indentazione (più per tua utilità) e usa i tag CODE per il posting del codice (per l'utilità di tutti).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Ok,scusa...me ne ero dimenticato provvederò a correggere...Scusa ancora.
    Ciao.

    Ah...mi sono accorto di non poter editare il codice...sarà per la prossima volta...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    No,niente,ho risolto ma c'è un ultimo errore...
    codice:
    15  cannot convert `std::string' to `const char*' for argument `1' to `int system(const char*)'
    Questo è il codice sorgente modificato (ho incluso un sacco di librrerie...potreste dirmi quelle superflue??)

    codice:
     
    #include<iostream>
    #include <string>
    #include<cstring>
    #include<cstdio>
    #include<string>
    using namespace std;
    int main()
    {
            string color = "color ";
             string lettera = "a"; //lettera casuale
             string numero = "5";//numero casuale
    
             string comando = color + lettera + numero;
    
            system( comando );//Qui è l'errore..!
           cout<"Ciao mondo!!"<<endl;
          system("pause");
    }
    Forse la causa potrebbe essere che la parola color va messa fra apici...ma quando dichiaro string color=""color"" (con i doppi apici...) non me li fa mettere i doppi apici...

    Vi prego!!Help!!

  7. #7
    codice:
    system(comando.c_str());
    La system vuole un const char * e tu le stavi passando un std::string.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Si infatti...

    string::c_string() converte l'oggetto di tipo string nella sua equivalente stringa c, ovvero un array di char con il null terminator in fondo.
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    Ragaaaaaa!!!!Funzionaaa....finalmente un po di conforto dopo lo sconforto che mi ha inflitto l'Italia...(nazionale)...

    Ad ogni modo...grazie...adesso proverò a randomizzare il colore e a stampare (attraverso un ciclo for) la scritta ciao mondo in tanti colori diversi....
    Grazie ancora...

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Bravo

    Ti do anche un consiglio... non iniziare subito C++, smadonna bene col C prima di iniziare col C++, capirai tante cose molto meglio

    Ciao!
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

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 © 2024 vBulletin Solutions, Inc. All rights reserved.