Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-09-2006, 19:52   #1
KNX
Senior Member
 
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
[C++]Aiuto con sette e mezzo

Allora avrei un problemino su questo sorgente che in un futuro prossimo dovrà diventare un sette e mezzo

Questo è il codice:
Codice:
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <ctime>

using namespace std;

const int MAX_ROWS = 5;
const int MAX_COLUMNS = 11;

class Carta
{
    public:
        Carta();
        Carta(int num, string se);

        void generaCarta(Carta* mazzoide[MAX_ROWS][MAX_COLUMNS]);

        void print() const;
    private:
        int numero;
        string seme;
};

Carta::Carta(){}

Carta::Carta(int num, string se)
{
    numero = num;
    seme = se;
}

void Carta::print() const
{
    cout<<numero<<" di "<<seme<<endl;
}

void Carta::generaCarta(Carta* mazzoide[MAX_ROWS][MAX_COLUMNS])
{
    srand (time(0));

    int randseme = rand() % 4;
    int randnumero = rand() % 10;

    if(mazzoide[randseme][randnumero] == NULL)
        generaCarta(mazzoide);
    else mazzoide[randseme][randnumero]->print();

    mazzoide[randseme][randnumero] = NULL;

}

int main()
{
    int righe_seme = 4;
    int colonne_numero = 10;
    int i = 1;

    Carta* mazzo[righe_seme][colonne_numero];
    for(int j = 0;j<colonne_numero;j++)
    {
       mazzo[0][j] = new Carta(i, "coppe");
       mazzo[1][j] = new Carta(i, "denari");
       mazzo[2][j] = new Carta(i, "bastoni");
       mazzo[3][j] = new Carta(i, "spade");
       i++;
    }

    for(int i=0;i<righe_seme;i++)
    {
        for(int j=0;j<colonne_numero;j++)
        {
            mazzo[i][j]->print();
        }
    }

    generaCarta(mazzo);

}
ecco il problema è che quando lo vado a compilare mi scappa fuori che:
"error: generaCarta undeclared (first use this function)"

bho sarà una boiata ma la mia mente ottusa non trova niente di sbagliato
P.S.: nn è da molto che programmo...

grazie mille in anticipo
__________________
...work in progress...
KNX è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2006, 20:54   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da KNX
ecco il problema è che quando lo vado a compilare mi scappa fuori che:
"error: generaCarta undeclared (first use this function)"
Ci sono diverse cose da sistemare:

a) il metodo generaCarta suppongo che si voglia renderlo di "classe" e non di istanza. In pratica nella dichiarazione della classe metti static davanti alla dichiarazione del metodo.

b) Quando chiami quel metodo dovresti usare: Carta::generaCarta(mazzo);

c) La dichiarazione di mazzo che fai nel main non è comunque compatibile con il parametro di generaCarta.


P.S.: io comunque avrei scelto un'altra strada: creare una classe Carta che incapsula solamente i dati della carta e una classe Mazzo che contiene al suo interno tutto il mazzo e con un metodo estrai() che estrae una carta (togliendola) dal mazzo.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2006, 21:41   #3
KNX
Senior Member
 
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
Ok ho capito tutto grazie mille adesso cmq provo con la tua strada molto più efficiente che stupido sono stato a non pensarci...

però ho ancora una domanda: perchè la dichiarazione di mazzo nel main non è compatibile col parametro di generaCarta? A generaCarta non dovrei passare un array di puntatori di tipo Carta?

grazie mille
__________________
...work in progress...
KNX è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2006, 08:59   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da KNX
però ho ancora una domanda: perchè la dichiarazione di mazzo nel main non è compatibile col parametro di generaCarta? A generaCarta non dovrei passare un array di puntatori di tipo Carta?
Sì, un array bidimensionale di puntatori a Carta.

generaCarta ha il parametro dichiarato:

Carta* mazzoide[MAX_ROWS][MAX_COLUMNS]

(che sarebbe come dire Carta* mazzoide[5][11])

mentre invece nel main è dichiarato:

Carta* mazzo[righe_seme][colonne_numero];

(che sarebbe come dire Carta* mazzo[4][10]; visti i valori delle 2 variabili)

Il compilatore comunque li vede come tipi diversi.


P.S.: tra l'altro non serve a molto (se non c'è una ragione precisa) usare un array bidimensionale per tenere tutte le carte. Puoi usare un semplice array monodimensionale.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 05-09-2006, 11:47   #5
KNX
Senior Member
 
Iscritto dal: Mar 2005
Città: A RRRRRRoma
Messaggi: 466
Ok tutto chiaro adesso...
per quanto riguarda l'array l'avevo fatto bidimensionale per rendere ancora più casuale l'estrazione della carte dal mazzo... ma in effetti adesso che mi ci fai pensare una bidimensione è alquanto inutile...

ho ancora molta strada da fare purtroppo...
__________________
...work in progress...
KNX è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Gwynne Shotwell (presidente di SpaceX): ...
ISRO lancerà il primo modulo della stazi...
Lo sfondo animato del tuo PC potrebbe es...
Dopo la RAM, Framework annuncia l'aument...
Google Home Speaker ufficiale: è il prim...
Spotify: i nomi utente stanno per divent...
Il limite vero dei data center AI sono g...
AMD conferma i nuovi Threadripper: Zen 6...
Stop all'ADSL per WindTre: continua la m...
HPE punta sull'IA agentica e dichiara gu...
macOS avvisa quando si incolla un comand...
Everpure ridisegna lo storage per l’IA: ...
NVIDIA RTX Remix 1.5: realizzare remaste...
Come configurare Windows 11 like a pro, ...
Windows 11 cambia finalmente la gestione...
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: 03:29.


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