Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Pannello QD-OLED da 32 pollici con risoluzione 4K, frequenza di aggiornamento a 240Hz e tempi di risposta rapidissimi: il Gigabyte MO32U24 evolve il progetto del suo predecessore MO32U e alza ulteriormente l'asticella delle prestazioni. È ancora una volta un monitor indirizzato ai giocatori più esigenti
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
realme 16 5G è un nuovo smartphone con sensore Sony IMX 852 da 50MP sul retro e uno specchio selfie fisico integrato nella camera bar, una prima nel segmento di mercato. Batteria da 6550mAh in un corpo da 8,1mm e 183g, certificazione IP69K e ricarica da 45W completano un pacchetto aggressivo per la fascia media, per uno dei prodotti più interessanti del produttore sul piano commerciale
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Sono ormai definitive le nuove norme del Codice della Strada per i monopattini elettrici. Non solo targa e assicurazione, le regole sono tante e riguardano diversi aspetti, vi spieghiamo come evitare sanzioni che possono essere salate
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-10-2006, 05:04   #1
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
MEMORY - Crezione Matrice (con Dev-c++)

Salve io devo svolgere questo progetto attraverso questi obiettivi.

PRIMA PARTE DEL PROGETTO

Il progetto consiste nello sviluppare un programma che
permetta ad un utente di giocare al gioco del:

MEMORY

dare la possibilità di selezionare il livello di gioco con
numero di carte per riga minimo: 2, massimo: 6;
numero di carte per colonna minimo: 2, massimo 10

come si fa?
Appena inizio il gioco vorrei che prima chiedesse il nome del giocatore poi la matrice da creare ed eventualmente a seconda della matrice disporre randomicamente le carte da scoprire (cosa che ho già fatto per una matrice di prova da 4 x 4!!! se volete vi posto subito sotto il codice...PS compilato con dev-c++ programma che ci ha consigliato il prof per il corso!!! non usate altri programmi!!! grazie!)

L'interfaccia grafica deve essere schematica (a caratteri),
ma sviluppata in modo da rendere chiaro lo stato di avanzamento
del gioco. <- già fatto (banalissimo)

Sviluppare l'interfaccia grafica schematica. <- già fatto (banalissimo)

All'avvio del programma deve essere richiesto
il nome dell'utente che inizia a giocare. <- già fatto (banalissimo)

Predisporre una sezione chiamata help, richiamabile
in qualsiasi momento all'interno dell'applicazione, che
permetta agli utenti di conoscere le regole del gioco e le
modalità di utilizzo del programma, oltre una descrizione di
tutte le funzionalità disponibili. <- già fatto (banalissimo)

Se volete il codice ditemelo che lo posto qui. Grazie a dopo (In facoltà laboratorio durante pausa lezione grazie ancora per la vostra futura collaborazione.
Ciao
Ciao
Cris
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 08:04   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
In pratica il problema è la matrice dinamica ?

Se è così hai due opzioni:

- crei la matrice statica di dimensione massima a 6x10, ma ne limiti l'uso tramite il numero di righe e colonne inserito dall'utente
- crei una matrice dinamica di dimensione uguale al numero di righe e colonne inserito dall'utente

La prima soluzione è sicuramente la più pratica e non ha particolari problemi se non lo spreco di qualche byte

Per la seconda si fa così (lo devi fare in C o C++ ? io los crivo in C++):
Codice:
int **mat;

mat = new int*[righe];
for(i = 0; i < righe; ++i)
   mat[i] = new int[colonne];


Per deallocare la matrice:

for(i = 0; i < righe; ++i)
   delete[] mat[i];
delete[] mat;


Per passarla ad una funzione:

void f(int **m, int righe, int colonne)

Però la tratti come una normale matrice:

m[i][j] = m[i - 1][j] * 2;

giusto per fare un esempio...

Ultima modifica di cionci : 16-10-2006 alle 11:03.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 11:00   #3
-fidel-
Senior Member
 
L'Avatar di -fidel-
 
Iscritto dal: Jan 2006
Messaggi: 2722
In C, invece che in C++, la situazione è identica a quella descritta da cionci, con la differenza che per allocare la matrice usi la malloc() invece dell'operatore "new".
Nel caso usi malloc() invece di new, occhio alla dimensione dei puntatori: su macchine a 32 bit, un qualunque puntatore a qualunque tipo (char, int, double, ecc...) ha sempre dimensione 4 bytes, su macchine a 64 bit la dimensione sale a 8 bytes. Comunque te la cavi con una bella (int*)malloc(sizeof(int*)); (quando allochi il primo vettore di puntatori) così da non avere problemi su architetture differenti (altrimenti dovresti fare (int*)malloc(4); per architetture a 32 bit, (int*)malloc(8); per architetture a 64 bit, quindi devi saperlo in anticipo...).
__________________

- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale.
- A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson

Ultima modifica di -fidel- : 16-10-2006 alle 11:05.
-fidel- è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 12:42   #4
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
Matrice

Si e così.
Per la prima opzione devo limitare l'uso tramite il numero di righe e colonne inserito dall'utente attraverso il ciclo for generato dalla richiesta dell'utente?
Se volete dare uno sguardo al progetto. Ve lo allego qui e se vi va bene anche il dev-c++ dato che non ce l'avete. Grazie.
Allegati
File Type: zip Memory Funzionante.zip (13.2 KB, 8 visite)
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 17:30   #5
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
Allora? Cosa ne dite del mio progetto?

Questa è la nuova versione del progetto. Dateci un'occhiata grazie.
Allegati
File Type: zip Memory v.2.0.zip (10.4 KB, 8 visite)
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2006, 17:40   #6
-fidel-
Senior Member
 
L'Avatar di -fidel-
 
Iscritto dal: Jan 2006
Messaggi: 2722
Quote:
Originariamente inviato da LOVE85
Questa è la nuova versione del progetto. Dateci un'occhiata grazie.
Dato un'occhiata con linux. Non riesco a giocare, dal momento che la gestione dell'input non va bene (a parte le continue chiamate "system()" a funzioni esistenti solo nel Prompt dei comandi di Windows). Ad esempio, se premo "b" mi dice "Lettera errata!", e da quel momento tutti i caratteri che inserisco sono ignorati. Non è propriamente un programma ANSI C, altrimenti ci avrei giocato anche con linux Do' un'occhiata.

EDIT: rettifico, a parte i comandi chiamati dalle system(), il programma è ANSI C, ma le getchar() usate per l'input non gestiscono bene il buffer della tastiera.
Vediamo cosa si può fare...

EDIT 2: Il solito problema: dopo la lettura di un carattere con getchar(), il buffer contiene ancora lo \n, quindi la successiva chiamata a getchar() legge l'INVIO e quindi da' l'errore di "Lettera errata, riprovare". Il bello è che, dopo il messaggio di errore, si fa una sleep() (che è una system call) che interrompe il programma per 2000 secondi!! (quindi i caratteri non erano ignorati, era il programma che stava fermo!). Per caso l'implementazione della sleep() su Windows vuole il tempo in millisecondi?? Mah... Comunque, il problema del buffer della tastiera non viene risolto, almeno su Linux, con fflush(stdin). Ti conviene, dopo una lettura con getchar(), fare una bella cosa di questo tipo:

Codice:
while (getchar() != '\n');
in modo da svuotare il buffer della tastiera.

EDIT 3: per come funziona la fflush(), non serve a nulla chiamarla su un buffer di input. Mi sembra strano che su Windows funzioni: hai provato a togliere la fflush() e vedere se il programma funziona lo stesso? Forse in Win è diversa la gestione del buffer da tastiera...
__________________

- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale.
- A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson

Ultima modifica di -fidel- : 16-10-2006 alle 18:30.
-fidel- è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2006, 12:25   #7
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
Ehm...allora quindi? Ok forse non ho capito bene. Comunque pazienza. Chi se ne frega? Tanto fino a qui ci sono riuscito ora non ho tempo lascio perdere quello della matrice ora lavoro sul salvataggio in un file. Grazie
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2006, 15:56   #8
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
Visto che....non avete avuto tempo vi posto il codice qui!

??????????????

Ultima modifica di LOVE85 : 06-11-2006 alle 13:48.
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Grazie a GLIMPSE-17775 il telescopio spa...
Samsung Galaxy A27 5G è ufficiale...
TCL aggiorna la sua gamma di monitor per...
Anche OPPO avrà uno smartphone co...
La Radeon RX 9070 XT appare su Steam e m...
L'America si ribella ai datacenter: bloc...
'Artificial General Engineer': l'IA di J...
Il drone NASA Dragonfly, che voler&agrav...
Stop immediato a Fable 5 e Mythos 5: il ...
"Prime Day Amazon il 23-26 giugno": sì e...
Oggi 2 super MacBook Pro M5 e M5 Pro, 24...
Tineco Floor One Station S9 Artist: il s...
Raggiunte nuove altitudine e velocit&agr...
Apple Watch Series 11 GPS a 339€ su Amaz...
Come un MacBook, ma con la RTX 5070: MSI...
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: 23:33.


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