Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C] Gioco del Sudoku

  1. #1

    [C] Sudoku

    sto cercando di fare un programma che faccia questo:
    Scrivere un programma che controlli se una matrice `e una
    soluzione ammissibile per il gioco del Sudoku, Il gioco `e il seguente:
    1. viene data una matrice 9x9, riempita con numeri da 1 a 9.
    2. la matrice `e suddivisa in 9 sottomatrici quadrate 3x3.
    2
    3. occorre verificare che sia rispettato il seguente vincolo: ogni riga, colonna e
    ogni sottomatrice 3x3 deve contenere TUTTI e SOLI i numeri da 1 a 9.
    Input: Il metodo main legger`a 81 interi (compresi tra 1 e 9) da tastiera e li
    inserir`a nella matrice. L’inserimento viene e ettuato scorrendo la matrice riga per
    riga (dalla 0 alla 8) ed ogni riga `e scandita colonna per colonna (dalla 0 alla 8).
    Quindi saranno riempite nell’ordine le caselle (0,0) (0,1) (0,2) . . . (0,8), poi (1,0) (1,1)
    . . . (1,8), e cos`ı via. Verr`a poi richiamata la funzione da implementare che prender`a
    in input tale matrice e restituir`a 1 se la matrice rispetta i vincoli, 0 altrimenti.
    Suggerimento: non dovete inserire ogni volta tutti gli interi, se ad esempio scrivete i
    vostri 81 valori in un file:
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    1 2 3 4 5 6 7 8 9
    potete reindirizzate tale file come input per il vostro programma. Se, dopo la compi-
    lazione, generate il programma sudoku.out ed il vostro file di dati si chiama dati.txt,
    scrivendo:
    ./sudoku.out < dati.txt
    il file dati.txt viene dato in input al vostro programma (come se inseriste gli 81
    elementi da tastiera). Ovviamente sudoku.out e dati.txt devono trovarsi nella stessa
    directory. Questa cosa funziona sotto Linux, non so se potete fare qualcosa del genere
    con DevC++.
    Output: La funzione restituir`a 1 se la matrice rispetta i vincoli, 0 altrimenti.
    Nel metodo main verr`a stampato tale valore.

    Purtroppo il programma che ho fatto non mi stampa ne 0 ne 1. (Inoltre conoscete un metodo più rapido, con dev c++, di inserire 81 numeri?). Qualcuno può dirmi l'errore?
    ecco il programma:

    #include <stdio.h>
    #include <stdlib.h>

    int funzione(int b[9][9]);
    int main()
    {
    int n, r, c;
    int b[9][9];

    for(r = 0; r < 9; r++){
    for(c = 0; c < 9; c++){
    scanf("%d", n);
    b[r][c] = n;
    }}
    int funzione(int b);
    }
    int funzione (int b[9][9])
    {
    int d, e, f, g, h, r, c;
    for(r = 0; r < 9; r++){
    for(c = 0; c < 9; c++){
    if(b[r][c] == b[r + 1][c])
    d++;
    }}

    for(c = 0; c < 9; c++){
    for(r = 0; r < 9; r++){
    if(b[r][c] == b[r][c + 1])
    d++;
    }}

    for (c = 0; c < 3; c++){
    for(r = 0; r < 3; r++){
    if(b[r][c] == b[r][c + 1])
    d++;
    }}

    for (c = 4; c < 6; c++){
    for(r = 0; r < 3; r++){
    if(b[r][c] == b[r][c + 1])
    d++;
    }}

    for (c = 7; c < 9; c++){
    for(r = 0; r < 3; r++){
    if(b[r][c] == b[r][c + 1])
    d++;
    }}

    for (c = 0; c < 3; c++){
    for(r = 4; r < 6; r++){
    if(b[r][c] == b[r][c + 1])
    d++;
    }}

    for (c = 4; c < 6; c++){
    for(r = 4; r < 6; r++){
    if(b[r][c] == b[r][c + 1])
    d++;
    }}

    for (c = 7; c < 9; c++){
    for(r = 4; r < 6; r++){
    if(b[r][c] == b[r][c + 1])
    d++;
    }}

    for (c = 0; c < 3; c++){
    for(r = 7; r < 9; r++){
    if(b[r][c] == b[r][c + 1])
    d++;
    }}

    for (c = 4; c < 6; c++){
    for(r = 7; r < 9; r++){
    if(b[r][c] == b[r][c + 1])
    d++;
    }}

    for (c = 7; c < 9; c++){
    for(r = 7; r < 9; r++){
    if(b[r][c] == b[r][c + 1])
    d++;
    }}

    if(d == 0)
    printf("1");
    else
    printf("0");
    }

  2. #2
    Non ho controllato tutto il programma, ma ci sono canne già dalle prime linee. Ti modifico fino al main() (che è una funzione, non un metodo), in modo che almeno ti richiami la funzione "funzione" (originale con i nomi, neee):

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int funzione(int **b);
    
    int main()
    {
      int n, r, c;
      int b[9][9];
    
      for(r = 0; r < 9; r++){
        for(c = 0; c < 9; c++){
          scanf("%d", &n);
          b[r][c] = n;
        }
      }
    
      funzione(b);
    }
    
    int funzione (int **b)
    ...

  3. #3

    scusate l'intromissione .

    vorrei sapere se è la stessa cosa dire matrice o Array ?

    i linguaggi di programmazione sono uguali ? ActionScript e il [C] ?

  4. #4
    array in italiano è vettore.
    matrice in inglese è matrix
    ciao

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma cosa c'entra collegarsi ad un thread del 2007 ?

    E facendo delle domande slegate tra loro ?

    Una lettura al regolamento .... no?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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