Aiuto!!! per il C
ciao, devo fare un sudoku in c. Qualcuno mi può dare una mano?
Grazie
_Sara_
Grazie
_Sara_
Risposte
Cosa vuoi dire?
Devi fare un programma che risolva il problema del sudoku?
Devi fare un programma che risolva il problema del sudoku?
@farfallazzurra
Ciao e benvenuta Sara,
gli utenti del forum saranno felici di aiutarti.
@cheguevilla
credo che sara' lei a dirci di quale aiuto ha bisogno.
Approposito, sabato sono arrivato a GE in tarda serata, ci si vede il 3 settembre Ok ?
Ciao e benvenuta Sara,
gli utenti del forum saranno felici di aiutarti.
@cheguevilla
credo che sara' lei a dirci di quale aiuto ha bisogno.
Approposito, sabato sono arrivato a GE in tarda serata, ci si vede il 3 settembre Ok ?
devo fare un programma che permette a chi lo usa di "giocare" a sudoku....
non so se così è più chiaro...
non so se così è più chiaro...
"farfallazzurra":
devo fare un programma che permette a chi lo usa di "giocare" a sudoku....
non so se così è più chiaro...
Argh!


Mi sembrava un pò esagerato... in realtà creare sudoku è più difficile che risolverli quindi il tuo programma dovrà avere un bel database con memorizzati un bel pò di sudoku

"farfallazzurra":
devo fare un programma che permette a chi lo usa di "giocare" a sudoku....
non so se così è più chiaro...
Vedrò di darti una traccia su come fare il programma.
Il programma si troverà in una cartella dove starà anche un file "sudoku.dat" che conterrà una certa quantità di sudoku da risolvere.
Il programma avviato caricherà un sudoku a caso da "sudoku.dat", lo disegnerà in modo alquanto rozzo...poi permetterà all'utente di selezionare una casella del sudoku con le freccette direzionali e inserirci un numero se la casella non è vuota, il programma poi avvertirà l'utente se il numero inserito è già presente nella stessa riga colonna riquadro e in tal caso lo cancellerà.Riempite tutte le caselle il programma si complimenterà con l'utente, in qualsiasi momento l'utente deve poter ricominciare la partita o avviarne una nuova.
Quindi devi sapere:
Aprire un file (all'interno della cartella dove sta il programma) per leggerlo
#include <fstream.h> #include <iostream.h> ifstream miofile; // dichiara la variabile input per il file miofile.open("sudoku.dat",ios::bin); //apre il file, in binario va benissimo char ch; ch=miofile.get(); //prende un carattere dal file miofile.close(); //chiude il file per rendere nuovamente disponibile la variabile miofile
spostare il cursore nella console, nei compilatori Borland basta usare la funzione GotoXY(x,y) che immesse le coordinate sposta il cursore nel medesimo punto, se il tuo compilatore non è Borland devi dichiarare GotoXY
#include <stdio.h> #include <windows.h> void GotoXY(int x, int y) { COORD CursorPos = {x, y}; HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsole, CursorPos); }
capire quando l'utente preme un tasto, e ti basta la funzione GetAsyncKeyState(key) inclusa in windows.h , prende come argomento il codice ascii di un tasto e restituisce 1 se il tasto in questione è premuto altrimenti 0.
Direi che su un bel pò di cose dovresti essere a posto...ora devi cercare di mettere tutto insieme.

Ciao,
volevo ringrazirvi per l 'aiuto che mi state dando. Scusatemi per non averlo fatto prima ma il computer mi si era bloccato ed era dal tecnico....
Ora che mi è tornato il computer posso ricominciare a lavorare il programm. Vi farò sapere quando avrò bisogno di una mano... Grazie!!!
volevo ringrazirvi per l 'aiuto che mi state dando. Scusatemi per non averlo fatto prima ma il computer mi si era bloccato ed era dal tecnico....
Ora che mi è tornato il computer posso ricominciare a lavorare il programm. Vi farò sapere quando avrò bisogno di una mano... Grazie!!!
un database con memorizzati sudoku? nah. meglio una procedura random che dato un punto di partenza con determinate regole permetta di crearlo.
"hypnotizer":
un database con memorizzati sudoku? nah. meglio una procedura random che dato un punto di partenza con determinate regole permetta di crearlo.
questo è gia più "facile", io personalemente non userei in C ma qualcosa che abbia un interfaccia più o meno e che sia più facile da gestire...
In C è più "divertente".
"cheguevilla":
In C è più "divertente".
si d'accordo ma che due *** dai ti complichi la vita per nulla......
Si, principalmente si.
Però a me dà parecchia soddisfazione la programmazione in C, proprio perchè devi saper gestire tutto. Indubbiamente, ai fini pratici, è pesantuccio.
Bisogna vedere se la finalità di farfallazzurra è creare un programma per risolvere quel problema o risolvere quel problema per fare esercizio.
Però a me dà parecchia soddisfazione la programmazione in C, proprio perchè devi saper gestire tutto. Indubbiamente, ai fini pratici, è pesantuccio.
Bisogna vedere se la finalità di farfallazzurra è creare un programma per risolvere quel problema o risolvere quel problema per fare esercizio.
perfettamente d'accordo anche a me piace la programmazione in C ( preferisco pascal e derivati ) ma trovo assurdo provare a risolvere in C puro il sudoku, come esercizio di programmazione strutturata è ottimo ma farlo in C è da panico
LA generazione di una tabella valida nn è un problema, ma quanti numeri è necessario mostrare a chi gioca affinche possa risolverlo?
E questi numeri devono avere una posizione specifica o basta averne un tot perche il sudoku sia sicuramente risolvibile?
E questi numeri devono avere una posizione specifica o basta averne un tot perche il sudoku sia sicuramente risolvibile?
Programmare in C non è proprio la mia passione ma lo devo fare per un esame per cui sono costretta a usarlo.... (purtroppo)
Ciao
_Sara_
Ciao
_Sara_
"farfallazzurra":
Programmare in C non è proprio la mia passione ma lo devo fare per un esame per cui sono costretta a usarlo.... (purtroppo)
Ciao
_Sara_
capisco...
ma proprio il sudoku ???
comunque io "uso" questo manuale
Editore: apogeo
Autori : H. M. Deitel
P. J. Deitel
Titolo: C Corso completo di programmazione
è uno dei migliori manuali per C che esistano poi non so se devi usare un testo specifico
Si, è anche il libro di testo che usiamo (usavo, sigh) al corso di laurea in informatica alla facoltà di Genova per l'esame di programmazione.
Davvero ben fatto.
Davvero ben fatto.
"cheguevilla":
Si, è anche il libro di testo che usiamo (usavo, sigh) al corso di laurea in informatica alla facoltà di Genova per l'esame di programmazione.
Davvero ben fatto.
io lo preso perchè quello di scuola era indecente in 100 pagine scritte grandi ti spiega tutto ( secondo lui )
ciao,
mi avete suggerito questo ma il programma C su cui sto lavorando io non conosce la libreria conio.h....
"#include
#include
void GotoXY(int x, int y) {
COORD CursorPos = {x, y};
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsole, CursorPos); "
Avete qualche suggerimento?
_sara_
mi avete suggerito questo ma il programma C su cui sto lavorando io non conosce la libreria conio.h....
"#include
#include
void GotoXY(int x, int y) {
COORD CursorPos = {x, y};
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsole, CursorPos); "
Avete qualche suggerimento?
_sara_
Vi mando il testo dell'esercizio
_Sara_
2 Progetto di Informatica 1
Il progetto consiste nella progettazione e implementazione di un codice in linguaggio
C in ambiente Linux e gra¯ca XWindow per giocare a Sudoku.
Il programma deve gestire una sessione di gioco da parte di un utente. In altre
parole deve gestire una interazione con l'utente per permettergli di giocare a Sudoku ed
assisterlo nel riempimento dello schema.
Il progetto µe formulato a tre livelli di di±coltµa corrispondenti a tre fasce di valuta-
zione per l'esame ¯nale. Per la precisione chi eseguirµa il solo Livello 1 potrµa aspirare
alla valutazione massima di 24/30, chi eseguirµa i Livelli 1 e 2 potrµa aspirare alla valu-
tazione massima di 27/30 mentre chi eseguirµa tutti e tre i Livelli non avrµa limitazioni
sulla valutazione ¯nale.
Lo svolgimento del progetto µe condizione necessaria per accedere alla prova d'esame.
3 Descrizione del progetto
Ogni richiesta che segue, per ogni Livello, deve obbligatoriamente essere inclusa nella
propria progettazione e implementazione che peraltro µe lasciata estremamente libera.
3.1 Livello 1
1. lo schema di gioco sia realizzato in almeno due possibili dimensioni (normale e
grande) facendo uso di gra¯ca 2D con un'immagine a colori come sfondo.
2. il programma preveda il caricamento di un ¯le con uno o piµu schemi e ne proponga
uno scelto casualmente fra questi. Ogni schema sia codi¯cato nel ¯le in una riga
con il seguente formato
--9---7---4-5-9-1-3---1---2-1--6--7---27-18---5--4--3-7---3---4-8-2-4-6---6---5--
che esempli¯ca lo schema della prima pagina.
3. vengano implementate le seguenti funzioni/comandi di interazione di gioco:
² inserire un numero in una casella vuota;
² cancellare un numero precedentemente inserito;
² chiedere i valori fra 1 e 9 possibili per una casella vuota;
² salvare una situazione di gioco;
² ripristinare/caricare una situazione precedentemente salvata;
4. vengano implementate le seguenti funzioni di controllo e messaggistica:
² correttezza o meno di un valore inserito;
² controllo di ¯ne del gioco e segnalazione di vittoria;
² tempi¯cazione della sessione di gioco;
² messaggistica in caso di errori (si inserisce un valore incompatibile con quel-
li presenti, si vuole inserire un numero in una casella giµa piena, si vuole
cancellare un numero iniziale dello schema, ecc.).
5. sulla ¯nestra gra¯ca sia sempre presente la lista dei comandi che l'utente puµo dare.
_Sara_
2 Progetto di Informatica 1
Il progetto consiste nella progettazione e implementazione di un codice in linguaggio
C in ambiente Linux e gra¯ca XWindow per giocare a Sudoku.
Il programma deve gestire una sessione di gioco da parte di un utente. In altre
parole deve gestire una interazione con l'utente per permettergli di giocare a Sudoku ed
assisterlo nel riempimento dello schema.
Il progetto µe formulato a tre livelli di di±coltµa corrispondenti a tre fasce di valuta-
zione per l'esame ¯nale. Per la precisione chi eseguirµa il solo Livello 1 potrµa aspirare
alla valutazione massima di 24/30, chi eseguirµa i Livelli 1 e 2 potrµa aspirare alla valu-
tazione massima di 27/30 mentre chi eseguirµa tutti e tre i Livelli non avrµa limitazioni
sulla valutazione ¯nale.
Lo svolgimento del progetto µe condizione necessaria per accedere alla prova d'esame.
3 Descrizione del progetto
Ogni richiesta che segue, per ogni Livello, deve obbligatoriamente essere inclusa nella
propria progettazione e implementazione che peraltro µe lasciata estremamente libera.
3.1 Livello 1
1. lo schema di gioco sia realizzato in almeno due possibili dimensioni (normale e
grande) facendo uso di gra¯ca 2D con un'immagine a colori come sfondo.
2. il programma preveda il caricamento di un ¯le con uno o piµu schemi e ne proponga
uno scelto casualmente fra questi. Ogni schema sia codi¯cato nel ¯le in una riga
con il seguente formato
--9---7---4-5-9-1-3---1---2-1--6--7---27-18---5--4--3-7---3---4-8-2-4-6---6---5--
che esempli¯ca lo schema della prima pagina.
3. vengano implementate le seguenti funzioni/comandi di interazione di gioco:
² inserire un numero in una casella vuota;
² cancellare un numero precedentemente inserito;
² chiedere i valori fra 1 e 9 possibili per una casella vuota;
² salvare una situazione di gioco;
² ripristinare/caricare una situazione precedentemente salvata;
4. vengano implementate le seguenti funzioni di controllo e messaggistica:
² correttezza o meno di un valore inserito;
² controllo di ¯ne del gioco e segnalazione di vittoria;
² tempi¯cazione della sessione di gioco;
² messaggistica in caso di errori (si inserisce un valore incompatibile con quel-
li presenti, si vuole inserire un numero in una casella giµa piena, si vuole
cancellare un numero iniziale dello schema, ecc.).
5. sulla ¯nestra gra¯ca sia sempre presente la lista dei comandi che l'utente puµo dare.
"farfallazzurra":
Il progetto consiste nella progettazione e implementazione di un codice in linguaggio
C in ambiente Linux e grafica XWindow per giocare a Sudoku.
Non ho capito: non sai che libreria utilizzare per l'interfaccia? Probabilmente devi usare le primitive della Xlib. Se sbirci comunque tra i sorgenti di XWindows, trovi quelli di molti programmi che possono servire come spunto per realizzare la tua interfaccia.