Newsgroup: it.comp.lang.c
Titolo: aiuto programma C

 
          Ciao a tutto il NG.
Cercavo qualcuno che mi aiutasse nell'elaborare un programma.
Vi scrivo di seguito il prog che nn riesco a risolvere in c:
II gioco del Sudoku si gioca su di una matrice n^2 x n^2 divisa in n^2
riquadri di n x n elementi. Ciascun elemento della matrice è un numero
intero compreso fra 1 e n2 e una soluzione al gioco del Sudoku è una matrice
nelle cui righe, colonne e riquadri, non compaiono ripetizioni dello stesso
numero. Un esempio di una matrice valida per n = 2 è riportato di seguito
sulla sinistra. La matrice riportata sulla destra, invece, non è una,
soluzione corretta perché contiene alcune ripetizioni di riga, di colonna e
di riquadro (il numero ripetuto è evidenziato in grassetto, le violazioni in
grigio).
 
 Matrice corretta
3 6 9 2 1 8 4 7
8 9 4 1 6 3 2 0
1 2 3 8 7 5 6 5
7 5 0 6 2 4 8 9
matrice sbagliata(il 6 si ripete sulla prima riga, sulla settima colonna e
sul secondo riquadro)
3 6 9 2 1 8 6 7
8 9 4 1 6 3 2 0
1 2 3 8 7 5 6 5
7 5 0 6 2 4 8 9
Si scriva una funzione C che prenda come parametri il valore n (assumendo n
<= 5) e il nome di un file di input contenente una matrice "Sudoku"
memorizzata per righe (in cui, cioè, ciascuna delle righe del file contiene
gli elementi di una riga della matrice, separati da spazi) e restituisca il
valore 1 se la matrice è una matrice Sudoku corretta e, in caso contrario,
restituisca il valore 0.
aiutatemi, E' URGENTE
Grazie
Vitto
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 
<cut>
Posta la parte di codice che hai scritto e non funziona.
Sicuramente troverai qualcuno che ti da una mano.
-- 
---
Ciao
Giuseppe
-----------------------------------
http://digilander.libero.it/nokappa

 Sicuramente troverai qualcuno che ti da una mano.
Non sono troppo a mio agio con questo linguaggio ma ci provo:
#include <stdio.h>
int Funzione(char NomeFile[], int n);
int main ()
{
int a;
a= Funzione ("sudoku.txt, 3);
printf("\nLa funzione restituisce %d",a);
}
int Funzione (char NomeFile[], int n)
{
int Risultato,nxn,ContaRighe=0,ContaColonne=0;
nxn = n*n
Risultato = 1;
int Matrice[nxn] [nxn];
FILE * fp;
fp = fopen (NomeFile, "r");
qui nn so più andare avanti...

praticamente mi serve una funzione che legga dentro il file la matrice con i
numeri, che invece di essere messi in una tabella sono messi riga per riga
con lo stesso ordine della tabella ma senza le linee di una tabella. Con la
funzione dovrei leggere prima le righe e vedere se ci sono numeri doppi, poi
le colonne e vedere se ci sono numeri doppi e poi controllare se nei
riquadri 4x4 ci sono numeri ripetuti...
come faccio?




    ^^^^^^^^^^
come mai la descrizione del tuo problema e' in terza persona ?


 come mai la descrizione del tuo problema e' in terza persona ?
Perchč stň imparando il linguaggio C da una dispensa che un mio collega mi
ha prestato

Sarà anche una str****ta, ma ho scommesso una cena con una ragazza, se fossi
stato capace di risolvere questo CAVOLO di problema...
...nn fatemi fare la figure dell'idiota!

 stato capace di risolvere questo CAVOLO di problema...
Capito.  Lasciate perdere, è un troll.

 stato capace di risolvere questo CAVOLO di problema...
Allora devi risolverlo da te e non chiedere aiuto ad altri...
altrimenti la scommessa non e` valida :)
Saluti,
Marco
PS. Il testo e` praticamente identico a quello di un esercizio
di un esame, solo che il linguaggio da usare era Java e le matrici
erano 3x3
-- 
To email me, remove the no_ and _spam from my address.

 erano 3x3
Ma è tanto diverso Java da C? Non è che potrebbe inviarmi quello scritto in
linguaggio Java?
grazie

 fossi stato capace di risolvere questo CAVOLO di problema...
Mi pare evidente che tu la scommessa l'abbia persa. Lascia stare il C e 
offri la cena a 'sta benedetta ragazza, ché magari ti diverti anche di più. 
Altrimenti, la chiave per trovare ciò che cerchi è: "GIYF". 
Max



Sintatticamente non troppo dato che la sintassi di Java deriva da quella
del C++ che a sua volta deriva da quella del C. Concettualmente e a
livello di programmazione c'e` un abisso.
Se non conosci il C trovo difficile che tu riesca a portare del codice
da Java a C. Inoltre nella mia universita` non sono soliti lasciar portare
a casa i compiti d'esame. In genere li tengono i professori, cosi` da
poterli correggere.
Comunque, come ho gia` detto, se si tratta di una scommessa allora devi
farcela da solo.
L'esercizio e` concettualmente banale, basta rifletterci un po'. Se il
tuo problema riguarda solo il C, allora non posso che consigliarti di
studiartelo.
Saluti,
Marco


 offri la cena a 'sta benedetta ragazza, ché magari ti diverti anche di
piů.
Hai raggggggggione!

Dato che nn mi do per vinto e dato che ho ancora un pò di tmpo da perdere ho
continuato a sbattere la testa su un muro...alla fine qualcosa ha
ceduto...forse la mia testa..COMUNQUE....
Sno riuscito a mettere ciò che sta dentro al file in una matrice... ora però
mi sono bloccato...come faccio a vedere se all'interno di un riquadro(vedi
post precedenti) un numero si ripete? Risparmiatemi un pò di tempo per
favore...  :((((

On Tue, 19 Jul 2005, vitto wrote:

Rapidamente. Dichiari un array di interi con tanti elementi quanti sono i
numeri che possono comparire in un riquadro. Inizializzi l'array con zeri.
Guardi un riquadro alla volta e per ogni numero che leggi vai a guardare
la posizione corrispondente nell'array. Se trovi 0, vuol dire che il
ancora non hai trovato il numero, quindi lo sostituisci con 1. Se trovi
1, vuol dire che il numero lo hai gia` visto.
Semplice, no?


 Semplice, no?
Credo sia più facile a dirsi che a farsi...cmq da come me lo hai spiegato
credo di averci capito qualcosa...grazie!
Saluti
V