Вы находитесь на странице: 1из 28

TAREA: DOCUMENTACIÓN DEL PROYECTO

“SUDOKU”
ALUMNO:
OMAR ELIER VELASCO BECERRA
JUAN ANTONIO BARRIOS VELAZQUEZ
KENNETH HUMBERTO HERNANDEZ LOPEZ
MATERIA: PROGRAMACION

SEMESTRE: 3
Temas investigados para la realización del proyecto.

Funciones en el Lenguaje C

Una función es una rutina o conjunto de sentencias que realiza unadeterminada labor. En C todas
las funciones devuelven un valor, que pordefecto es un entero. Las funciones admiten
argumentos, que son datos que lepasan a la función las sentencias que la llaman.

1.- Definición de una función.

La sintaxis habitual en la definición de una función es: tipo identificador(lista_de_argumentos)

/* bloque de código */

Donde:

• tipo es el tipo de datos devuelto por la función

• identificador es el nombre de la función. Debe ser un

identificador valido.

• lista_de_argumentos es una lista de variables, separadas porcomas, que conforman los datos
que le pasamos a la función.El tipo y la lista de argumentos son opcionales. Si omitimos el tipo, la
funciónpor defecto devolver un entero. Muchas veces el valor devuelto por la funciónes ignorado
en el programa.La lista de argumentos es también opcional. Un ejemplo es la función main(),que
en principio no tiene argumentos. Podemos escribir como ejemplo:

hola()

printf(“hola\n”);

que simplemente es una función que cuando es llamada imprime en pantalla un mensaje de
saludo. Cuando el programa al ejecutarse alcanza la llave de cierre ‘}’ de la función, esta finaliza y
devuelve el control al punto del programa que la llamó.

2.- Retorno de valores

Cuando la función finaliza hemos dicho que se devuelve un valor. Este valor en

principio no está definido, es decir, puede devolver cualquier cosa.


Para obligar a la función a retornar un determinado valor se utiliza la sentencia

return, seguida del valor a retornar. Como todas las sentencias en C se debe

acabar con un ‘;’. Por ejemplo:

lista()

return 1;

devuelve el entero 1 cada vez que es llamada. En C podemos devolver

cualquier tipo de datos de los llamados escalares. Los tipos de datos escalaresson los punteros,
tipos numéricos y el tipo carácter. En C no se puedendevolver matrices ni estructuras.

3.- Paso de parámetros a una función

Utilizando la lista de argumentos podemos pasar parámetros a una función.En la lista de


parámetros se suele colocar un conjunto de identificadores,separados por comas, que
representarán cada uno de ellos a uno de losparámetros de la función (parámetros formales).
Observar que el orden de losparámetros es importante. Para llamar a la función habrá que colocar
losparámetros en el orden en que la función los espera (Parámetros reales).Cada parámetro puede
tener un tipo diferente.

Asi:

imprime(int numero, char letra)

printf(“%d, %c\n”, numero, letra);

es una función que admite dos variables, una entera y otra de tipo carácter.Un ejemplo de llamada
a dicha función dería:

Imprime(5, ‘a’);

4.- Paso de parámetros por valor y por referencia

En los lenguajes de programación estructurada hay dos formas de pasarvariables a una función:
por referencia o por valor. Cuando la variable se pasapor referencia, la función puede acceder a la
variable original. Este enfoque eshabitual en lenguajes como el Pascal. En C sin embargo todos los
parámetros se pasan por valor. La función recibeuna copia de los parámetros y variables, y no
puede acceder a las variablesoriginales. Cualquier modificación que efectuemos sobre un
parámetro no sereflejará en la variable original. Esto hace que no podamos alterar el valor de
lavariable por equivocación.Sin embargo, en determinadas ocasiones necesitaremos alterar el
valor de lavariable que le pasamos a una función. Para ello en el C se emplea elmecanismo de los
punteros.Un puntero es una variable que guarda la dirección de memoria donde estaguardada
otra variable. Por lo tanto para crear parámetros de entrada-salida(paso de parámetros por
referencia) es necesario declarar la función utilizandopunteros como parámetros.Ejemplo: Vamos
a declarar un procedimiento (función de tipo void) queintercambia dos valores.

Void intercambiar(int *a,int *b)

El asterisco nos permite declarar un puntero. Si a es un puntero, hay que teneren cuenta que su
valor es una dirección de memoria. Por lo tanto para ontenerel contenido de la variable a la que
apunta hay que utilizar *a.La llamada a esta función sera como sigue:

Inta;Intb;a=2;b=4;inctercambiar(&a,&b);

Si recordamos la función scanf (que también recibe una dirección de memoria)tenemos que
utilizar el operador &, que indica dirección de memoria de lavariable indicada.

5.- Declaración y comprobación de tipos

Al igual que para las variables, cuando una función se va a usar en unprograma antes del lugar
donde se define, o cuando una función se define enotro fichero (funciones externas), la función se
debe declarar.La declaración de una función consiste en especificar el tipo de datos que va
aretornar la función. Esto es obligatorio cuando vamos a usar una función queno devuelve un
entero. Además en la declaración se puede especificar elnúmero de argumentos y su tipo. Una
declaración típica de función es: tipo identificador( lista_de_argumentos_con_tipo );Esto avisa al
compilador de que la función ya existe, o que la vamos a definirdespués.La lista de argumentos
con tipo difiere de la lista de argumentos antespresentada en que el tipo de cada argumento se
coloca dentro de la lista,antes de su correspondiente identificador, como hacíamos en la definición
devariables. Por ejemplo:

char print(int numero, int letra);

declara una función que devuelve un carácter y tiene dos parámetros, unentero y un carácter.La
lista de argumentos permite al compilador hacer comprobación de tipos, yaque el tipo y número
de argumentos debe coincidir en la declaración, definicióny llamada a una función.
FORTALEZAS DEBILIDADES

LAS RESTRICCIONES PARA MUY POCA GENTE TIENE C++


INGRESAR UN NUMERO SON
MUY ESTRICTAS

OCUPA MUY POCA MEMORIA, ES MUY TARDADO Y TEDIOSO EL


POR QUE SOLO SE UTILIZAN 2 LLENADO DEL SUDOKU
MATRICES

FACILIDAD DE TRABAJO PARA LA IMPRESIÓN DEL


MEDIANTE FUNCIONES SUDOKU SE OCUPAN MUCHAS
LINEAS

PUEDES GUARDAR Y NO COLOCAMOS GRAFICOS


CONTINUAR EL JUEGO

ES FACIL DE ENTENDER PARA EL SOLO CUENTA CON UN NIVEL


USUARIO DEL SUDOKU
CONCLUCIONES
JUAN ANTONIO BARRIOS

Todos los temas vistos en este semestre fueron de una gran ayuda en la
realización de este proyecto. Desde como declarar variables, funciones, las
sintaxis de los ciclos y condiciones. Todo lo visto durante el semestre, fue utilizado
en la realización de nuestro proyecto. Este proyecto nos será de gran ayuda y
como una pequeña introducción para lo más complicado que está por venir en la
programación. esto fue una gran base para una introducción en la programación

OMAR ELIER VELASCO BECERRA

Este proyecto me sirvió de mucho para conocer mis habilidades como


programador en c y también me sirvió mucho lo visto en clases para la realización
de este proyecto sobre todo las funciones que todavía no me quedan tan claro y
me sirvió para aclarar mis dudas sobre la carrera y se que esto me va a servir de
base para mis siguientes proyectos. La realización del sudoku en verdad surgió un
buen reto hacerlo.

KENNETH HUMBERTO HERNANDEZ LOPEZ

Este curso fue la principal base para desarrollar la logica y sintaxis en la


programación la cual nos sirvio demasiado en este proyecto final y que nos servirá
en los próximos cursos donde aprenderemos cosas nuevas para seguir mejorando

Referencias consultadas

http://www.josedomingo.org/web/mod/resource/view.php?id=832

http://www.slideshare.net/gugaslide/funciones-lenguaje-c-presentation
CODIGO DEL PROGRAMA

#include<cstdlib>

#include<iostream>

void principal();

void continuar();

int comprobacion();

int llenado();

char matriz['9']['9'],f,c,num;

using namespace std;

int main(int argc, char *argv[])

int op,p,c;

char regresar;

do{

cout<<"Menu"<<endl;

cout<<"1..Juego nuevo"<<endl;

cout<<"2..Continuar"<<endl;

cout<<"3..Salir"<<endl;

cin>>op;

switch (op){

case 1:
system ("cls");

principal();

break;

case 2:

system ("cls");

continuar();

break;

case 3:

system("PAUSE");

return EXIT_SUCCESS;

cout<<"JUEGO FINALIZADO"<<endl;

cout<<"Precione 5 para regresar al memu:";cin>>regresar;

system("cls");

}while(regresar=='5');

system("PAUSE");

return EXIT_SUCCESS;

void principal()

char resp,resp1,resp2;

intcont=0,v=0,x;

//llenado de la matriz (0 significa casilla en blanco o desocupada)


matriz['0']['0']='0';matriz['0']['1']='0';matriz['0']['2']='0';matriz['0']['3']='0';matriz['0']['4']='0';matriz[
'0']['5']='0';matriz['0']['6']='0';matriz['0']['7']='4';matriz['0']['8']='8';

matriz['1']['0']='0';matriz['1']['1']='2';matriz['1']['2']='9';matriz['1']['3']='0';matriz['1']['4']='0';matriz[
'1']['5']='0';matriz['1']['6']='5';matriz['1']['7']='0';matriz['1']['8']='0';

matriz['2']['0']='0';matriz['2']['1']='3';matriz['2']['2']='0';matriz['2']['3']='0';matriz['2']['4']='0';matriz[
'2']['5']='1';matriz['2']['6']='0';matriz['2']['7']='0';matriz['2']['8']='0';

matriz['3']['0']='0';matriz['3']['1']='0';matriz['3']['2']='0';matriz['3']['3']='0';matriz['3']['4']='0';matriz[
'3']['5']='5';matriz['3']['6']='7';matriz['3']['7']='9';matriz['3']['8']='0';

matriz['4']['0']='0';matriz['4']['1']='0';matriz['4']['2']='6';matriz['4']['3']='9';matriz['4']['4']='0';matriz[
'4']['5']='8';matriz['4']['6']='4';matriz['4']['7']='0';matriz['4']['8']='0';

matriz['5']['0']='0';matriz['5']['1']='5';matriz['5']['2']='7';matriz['5']['3']='2';matriz['5']['4']='0';matriz[
'5']['5']='0';matriz['5']['6']='0';matriz['5']['7']='0';matriz['5']['8']='0';

matriz['6']['0']='0';matriz['6']['1']='0';matriz['6']['2']='0';matriz['6']['3']='1';matriz['6']['4']='0';matriz[
'6']['5']='0';matriz['6']['6']='0';matriz['6']['7']='3';matriz['6']['8']='0';

matriz['7']['0']='0';matriz['7']['1']='0';matriz['7']['2']='1';matriz['7']['3']='0';matriz['7']['4']='0';matriz[
'7']['5']='0';matriz['7']['6']='8';matriz['7']['7']='7';matriz['7']['8']='0';

matriz['8']['0']='8';matriz['8']['1']='6';matriz['8']['2']='0';matriz['8']['3']='0';matriz['8']['4']='0';matriz[
'8']['5']='0';matriz['8']['6']='0';matriz['8']['7']='0';matriz['8']['8']='0';

for (;;){

//imprecion de los valores que tiene el sudoku junto con los bordes del mismo

x=0;//variable usada para imprimir los numeros de fila

cout<<" 1 2 3 4 5 6 7 8 9";//imprime los numeros de columna

for (f='0';f<'3';f++){//ciclo para las filas 1-3

cout<<endl<<" ---------------------------------------"<<endl;//imprime el borde superior del sudoku

x++;//contador qe lleva la numeracion de las filas

cout<<x;//imprime contador de la numeracion de las filas


for (c='0';c<'3';c++){//ciclo para las columnas 1-3

if (matriz[f][c]!='0')

cout<<" | "<<matriz[f][c];//si el numero es distinto de 0(casilla ocupada) imprime el borde


izquierdo de la casilla y el numero

else

cout<<" | ";}//si no imprime el borde izquierdo con dos espacios(para no alterar el ancho de la
casilla)

cout<<" || ";//imprime la separacion horizontal entre las columnas 3 y 4

for (c='3';c<'5';c++){//ciclo para las columnas 4-6

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";//como ya se tiene el borde izquierdo de la casilla se imprime el numero


y luego el borde derecho de la casilla

else

cout<<" | ";}

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" || ";//imprime el numero de la casilla 6 y el borde derecho de la casilla

elsecout<<" || ";

for (c='6';c<'9';c++){//ciclo para las columnas 7-9

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}

cout<<endl<<" ======================================="<<endl;//imprime la separacion


vertical de las filas 3 y 4

for (f='3';f<'5';f++){//ciclo para las filas 4-5

x++;
cout<<x;

for (c='0';c<'3';c++){//ciclo para las columnas 1-3

if (matriz[f][c]!='0')

cout<<" | "<<matriz[f][c];

else

cout<<" | ";}

cout<<" || ";

for (c='3';c<'5';c++){//ciclo para las columnas 4-6

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" || ";

else

cout<<" || ";

for (c='6';c<'9';c++){//ciclo para las columnas 7-9

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}

cout<<endl<<" ---------------------------------------"<<endl;//impresion de la linea separadora de las


filas 5 y 6

x++;

cout<<x;
//impresion de la fila 6

for (c='0';c<'3';c++){

if (matriz[f][c]!='0')

cout<<" | "<<matriz[f][c];

else

cout<<" | ";}

cout<<" || ";

for (c='3';c<'5';c++){

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" || ";

elsecout<<" || ";

for (c='6';c<'9';c++){

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

elsecout<<" | ";}//acaba impresion de la fila 6

cout<<endl<<" ======================================="<<endl;//impresion de la linea


separadora de las filas 6 y 7

for (f='6';f<'9';f++){//ciclo de las filas 7-9

x++;

cout<<x;

for (c='0';c<'3';c++){//ciclo de las columnas 1-3

if (matriz[f][c]!='0')
cout<<" | "<<matriz[f][c];

else

cout<<" | ";}

cout<<" || ";

for (c='3';c<'5';c++){//ciclo de las columnas 4-5

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}

if (matriz[f][c]!='0')//impresion de la columna 6

cout<<matriz[f][c]<<" || ";

elsecout<<" || ";

for (c='6';c<'9';c++){//ciclo de las columnas 7-9

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}

cout<<endl<<" ---------------------------------------"<<endl;//imprime la el borde inferior del sudoku

v=llenado();

if(v==0)

break;

//llenado de la matriz
cout<<"Deseas salir del juego?? Si, si ingresa una 's' "<<endl;

cin>>resp1;

if (resp1=='s' || resp1=='S')

break;

cout<<"Dame el numero de la fila"<<endl;

cin>>f;

if ((f!='1') && (f!='2') && (f!='3') && (f!='4') &&(f!='5') && (f!='6') && (f!='7') && (f!='8') && (f!='9'))

cout<<"Caracter invalido"<<endl;

system("PAUSE");

system("cls");

continue;

cout<<"Dame el numero de la columna"<<endl;

cin>>c;

if ((c!='1') && (c!='2') && (c!='3') && (c!='4') &&(c!='5') && (c!='6') && (c!='7') && (c!='8') &&
(c!='9'))

cout<<"Caracter invalido"<<endl;

system("PAUSE");

system("cls");

continue;

f=f-1;

c=c-1;
if ((f=='0' && c=='7') || (f=='0' && c=='8') || (f=='1' && c=='1') || (f=='1' && c=='2') || (f=='1' &&
c=='6') || (f=='2' && c=='1') ||

(f=='2' && c=='5') || (f=='3' && c=='5') || (f=='3' && c=='6') || (f=='3' && c=='7') || (f=='4' &&
c=='2') || (f=='4' && c=='3') ||

(f=='4' && c=='5') || (f=='4' && c=='6') || (f=='5' && c=='1') || (f=='5' && c=='2') || (f=='5' &&
c=='3') || (f=='6' && c=='3') ||

(f=='6' && c=='7') || (f=='7' && c=='2') || (f=='7' && c=='6') || (f=='7' && c=='7') || (f=='8' &&
c=='0') || (f=='8' && c=='1'))

cout<<"Casilla invalida"<<endl;

system("PAUSE");

system("cls");

continue;

cout<<"Dame un numero"<<endl;

cin>>num;

if ((num!='1') && (num!='2') && (num!='3') && (num!='4') &&(num!='5') && (num!='6') &&
(num!='7') && (num!='8') && (num!='9'))

cout<<"Caracter invalido"<<endl;

system("PAUSE");
system("cls");

continue;

cont=comprobacion ();

if (cont!=0){

cout<<"se repite el valor ingresado"<<endl;

system("PAUSE");

system("cls");

continue;

matriz [f][c]=num;

system("cls");

void continuar()

char resp,resp1,resp2;

int v=0,cont=0,x;

for (;;){
//imprecion de los valores que tiene el sudoku junto con los bordes del mismo

x=0;//variable usada para imprimir los numeros de fila

cout<<" 1 2 3 4 5 6 7 8 9";//imprime los numeros de columna

for (f='0';f<'3';f++){//ciclo para las filas 1-3

cout<<endl<<" ---------------------------------------"<<endl;//imprime el borde superior del sudoku

x++;//contador qe lleva la numeracion de las filas

cout<<x;//imprime contador de la numeracion de las filas

for (c='0';c<'3';c++){//ciclo para las columnas 1-3

if (matriz[f][c]!='0')

cout<<" | "<<matriz[f][c];//si el numero es distinto de 0(casilla ocupada) imprime el borde


izquierdo de la casilla y el numero

else

cout<<" | ";}//si no imprime el borde izquierdo con dos espacios(para no alterar el ancho de la
casilla)

cout<<" || ";//imprime la separacion horizontal entre las columnas 3 y 4

for (c='3';c<'5';c++){//ciclo para las columnas 4-6

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";//como ya se tiene el borde izquierdo de la casilla se imprime el numero


y luego el borde derecho de la casilla

else

cout<<" | ";}

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" || ";//imprime el numero de la casilla 6 y el borde derecho de la casilla

elsecout<<" || ";

for (c='6';c<'9';c++){//ciclo para las columnas 7-9


if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}

cout<<endl<<" ======================================="<<endl;//imprime la separacion


vertical de las filas 3 y 4

for (f='3';f<'5';f++){//ciclo para las filas 4-5

x++;

cout<<x;

for (c='0';c<'3';c++){//ciclo para las columnas 1-3

if (matriz[f][c]!='0')

cout<<" | "<<matriz[f][c];

else

cout<<" | ";}

cout<<" || ";

for (c='3';c<'5';c++){//ciclo para las columnas 4-6

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" || ";

else

cout<<" || ";

for (c='6';c<'9';c++){//ciclo para las columnas 7-9


if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}

cout<<endl<<" ---------------------------------------"<<endl;//impresion de la linea separadora de las


filas 5 y 6

x++;

cout<<x;

//impresion de la fila 6

for (c='0';c<'3';c++){

if (matriz[f][c]!='0')

cout<<" | "<<matriz[f][c];

else

cout<<" | ";}

cout<<" || ";

for (c='3';c<'5';c++){

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" || ";

elsecout<<" || ";

for (c='6';c<'9';c++){

if (matriz[f][c]!='0')
cout<<matriz[f][c]<<" | ";

elsecout<<" | ";}//acaba impresion de la fila 6

cout<<endl<<" ======================================="<<endl;//impresion de la linea


separadora de las filas 6 y 7

for (f='6';f<'9';f++){//ciclo de las filas 7-9

x++;

cout<<x;

for (c='0';c<'3';c++){//ciclo de las columnas 1-3

if (matriz[f][c]!='0')

cout<<" | "<<matriz[f][c];

else

cout<<" | ";}

cout<<" || ";

for (c='3';c<'5';c++){//ciclo de las columnas 4-5

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}

if (matriz[f][c]!='0')//impresion de la columna 6

cout<<matriz[f][c]<<" || ";

elsecout<<" || ";

for (c='6';c<'9';c++){//ciclo de las columnas 7-9

if (matriz[f][c]!='0')

cout<<matriz[f][c]<<" | ";

else

cout<<" | ";}
cout<<endl<<" ---------------------------------------"<<endl;//imprime la el borde inferior del sudoku

v=llenado();

if(v==0)

break;

//llenado de la matriz

cout<<"Deseas salir del juego?? Si, si ingresa una 's' "<<endl;

cin>>resp1;

if (resp1=='s' || resp1=='S')

break;

cout<<"Dame el numero de la fila"<<endl;

cin>>f;

if ((f!='1') && (f!='2') && (f!='3') && (f!='4') &&(f!='5') && (f!='6') && (f!='7') && (f!='8') && (f!='9'))

cout<<"Caracter invalido"<<endl;

system("PAUSE");

system("cls");

continue;

cout<<"Dame el numero de la columna"<<endl;

cin>>c;
if ((c!='1') && (c!='2') && (c!='3') && (c!='4') &&(c!='5') && (c!='6') && (c!='7') && (c!='8') &&
(c!='9'))

cout<<"Caracter invalido"<<endl;

system("PAUSE");

system("cls");

continue;

f=f-1;

c=c-1;

if ((f=='0' && c=='7') || (f=='0' && c=='8') || (f=='1' && c=='1') || (f=='1' && c=='2') || (f=='1' &&
c=='6') || (f=='2' && c=='1') ||

(f=='2' && c=='5') || (f=='3' && c=='5') || (f=='3' && c=='6') || (f=='3' && c=='7') || (f=='4' &&
c=='2') || (f=='4' && c=='3') ||

(f=='4' && c=='5') || (f=='4' && c=='6') || (f=='5' && c=='1') || (f=='5' && c=='2') || (f=='5' &&
c=='3') || (f=='6' && c=='3') ||

(f=='6' && c=='7') || (f=='7' && c=='2') || (f=='7' && c=='6') || (f=='7' && c=='7') || (f=='8' &&
c=='0') || (f=='8' && c=='1'))

cout<<"Casilla invalida"<<endl;

system("PAUSE");

system("cls");

continue;

}
cout<<"Dame un numero"<<endl;

cin>>num;

if ((num!='1') && (num!='2') && (num!='3') && (num!='4') &&(num!='5') && (num!='6') &&
(num!='7') && (num!='8') && (num!='9'))

cout<<"Caracter invalido"<<endl;

system("PAUSE");

system("cls");

continue;

cont=comprobacion ();

if (cont!=0){

cout<<"se repite el valor ingresado"<<endl;

system("PAUSE");

system("cls");

continue;

matriz [f][c]=num;

system("cls");

}
}

intcomprobacion(){

charm,n;

intcont;

for (m='0';m<'9';m++){

if (matriz[f][m]==num)

cont++;

//comprobacion columnas

for (n='0';n<'9';n++){

if (matriz[n][c]==num)

cont++;

//comprobacion cuadro 3x3

if (f>='0' && f<='2'){

if (c>='0' && c<='2'){

for (n='0';n<'3';n++){

for (m='0';m<'3';m++){
if (matriz[n][m]==num)

cont++;

if (c>='3' && c<='5'){

for (n='0';n<'2';n++){

for (m='3';m<'6';m++){

if (matriz[n][m]==num)

cont++;

if (c>='6' && c<='8'){

for (n='0';n<'3';n++){

for (m='6';m<'9';m++){

if (matriz[n][m]==num)

cont++;

if (f>='3' && f<='5'){

if (c>='0' && c<='2'){

for (n='3';n<'6';n++){
for (m='0';m<'3';m++){

if (matriz[n][m]==num)

cont++;

if (c>='3' && c<='5'){

for (n='3';n<'6';n++){

for (m='3';m<'6';m++){

if (matriz[n][m]==num)

cont++;

if (c>='6' && c<='8'){

for (n='3';n<'6';n++){

for (m='6';m<'9';m++){

if (matriz[n][m]==num)

cont++;

if (f>='6' && f<='8'){

if (c>='0' && c<='2'){


for (n='6';n<'9';n++){

for (m='0';m<'3';m++){

if (matriz[n][m]==num)

cont++;

if (c>='3' && c<='5'){

for (n='6';n<'9';n++){

for (m='3';m<'6';m++){

if (matriz[n][m]==num)

cont++;

if (c>='6' && c<='8'){

for (n='6';n<'9';n++){

for (m='6';m<'9';m++){

if (matriz[n][m]==num)

cont++;

}
return (cont);

int llenado ()

int v=0;

for (f='0';f<'9';f++){

for (c='0';c<'9';c++){

if (matriz[f][c]=='0')

v++;

return(v);

Вам также может понравиться