 |
|
 |
| Precedente :: Successivo |
Autore |
Messaggio |
|
|
garfa Bravino
Registrato: 09/06/09 15:48 Messaggi: 14
|
Inviato: Lun Giu 22, 2009 11:16 pm Oggetto: [C] hitori problema con cambiamento valori nella matrice |
|
|
Ho modificato decisamente l'intenzione sul progetto, e lo sto cercando di risolvere tramite matrici,
questo è il codice:
| Codice: |
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef int** TMatrice; /* tipo matrice, vettore di puntatori */
/*============================ Dichiarazione delle funzioni (prototipi) ===============================*/
TMatrice alloca_matrice(int n); /* Alloca memoria per una matrice */
void libera_matrice(TMatrice *matrice, int n); /* Libera la memoria allocata */
void inserimento(TMatrice matrice, int n);
void stampa_matrice (TMatrice matrice , int n);
void panino_imbottitorighe(TMatrice matrice, int n);
void panino_imbottitocolonne(TMatrice matrice, int n);
/*=====================================================================================================*/
/*==================== MAIN ===================== */
int main()
{
TMatrice matrice;
int n;
printf("Dimensione griglia?\n");
scanf("%d" , &n);
matrice = alloca_matrice(n);
inserimento(matrice, n);
panino_imbottitorighe(matrice,n);
panino_imbottitocolonne(matrice,n);
printf("\n");
stampa_matrice(matrice, n);
libera_matrice(&matrice, n);
return 0;
}
/*
Alloca la memoria per una matrice di dimensione n e ne restituisce
un puntatore.
*/
TMatrice alloca_matrice(int n)
{
TMatrice matrice;
int i;
/* alloco il vettore delle righe. Ogni elemento di questo vettore è un puntatore */
if(!(matrice = (TMatrice) malloc (n * sizeof(int *)))) {
fprintf(stderr,"Errore di allocazione per la matrice\n");
return 0;
}
/* per ogni riga alloco le colonne */
for (i=0; i<n; i++) {
if(!(matrice[i] = (int *) malloc (n * sizeof(int)))) {
fprintf(stderr,"Errore di allocazione per la i-esima posizione \"%d\"\n",i);
return 0;
}
}
return matrice;
}
/* Libera la memoria allocata da alloca_matrice */
void libera_matrice(TMatrice *matrice, int n)
{
int i;
for (i=0; i<n; i++)
free((*matrice)[i]);
free(*matrice);
}
/* Inserimento dei valori all'interno della matrice*/
void inserimento(TMatrice matrice, int n){
int i,j;
for(i=0 ; i<n ; i++)
for(j=0 ; j<n ; j++)
{
scanf("%d",&matrice[i][j]);
}
printf("\n");
}
/* stampa del risultato della matrice */
/* in realtà alla fine dovrà stampare la metrice con degli zero che corrispondono alle caselle annerite*/
void stampa_matrice(TMatrice matrice, int n){
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
printf("%d ", matrice[i][j]);
printf("\n");
}
}
/*===================== implementazione dell tecniche di risoluzione ================*/
/* numero non annerito = -1- */
/* numero annerito = *1* */
/* numero che non si sa ancora se annerito o no = 1 */
/* [PI] PANINO IMBOTIITO*/
void panino_imbottitorighe(TMatrice matrice, int n) {
int i,j;
for (i=0; i<n; i++)
for(j=0; (j+2)<n; j++)
if(matrice[i][j] == matrice[i][j+2]) /* controlla se i valori inseriti sono uguali sulle righe*/
printf("%s%d%s%d%s", "no (" , i , ", " , j+1,") : PI\n");
}
void panino_imbottitocolonne(TMatrice matrice, int n){
int i,j;
for(j=0; j<n; j++)
for(i=0;(i+2)<n;i++)
if(matrice[i][j] == matrice[i+2][j]) /* controlla se i valori inseriti sono uguali sulle colonne*/
printf("%s%d%s%d%s", "no (" , i+1 , ", " , j,") : PI\n");
}
|
Adesso mi sono un po bloccato sull'implementazione di una funzione che devo trovare eventuali valori uguali su righe e colonne dopo aver eseguito la funzioni PI.
Cioè se trovo valori uguali a un numero che non deve essere annerito sulla stessa riga e stessa colonna questi vanno anneriti. (si chiama : SB)
Tra l'altro servirebbe una funzione annerisci e una non_annerire che devo vedere come fare. |
|
Top |
|
 |
|
|
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|