Академический Документы
Профессиональный Документы
Культура Документы
“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.
/* bloque de código */
Donde:
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ó.
Cuando la función finaliza hemos dicho que se devuelve un valor. Este valor en
return, seguida del valor a retornar. Como todas las sentencias en C se debe
lista()
return 1;
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.
Asi:
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’);
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.
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.
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:
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
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
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;
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;
system("cls");
}while(regresar=='5');
system("PAUSE");
return EXIT_SUCCESS;
void principal()
char resp,resp1,resp2;
intcont=0,v=0,x;
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
if (matriz[f][c]!='0')
else
cout<<" | ";}//si no imprime el borde izquierdo con dos espacios(para no alterar el ancho de la
casilla)
if (matriz[f][c]!='0')
else
cout<<" | ";}
if (matriz[f][c]!='0')
elsecout<<" || ";
if (matriz[f][c]!='0')
cout<<matriz[f][c]<<" | ";
else
cout<<" | ";}
x++;
cout<<x;
if (matriz[f][c]!='0')
cout<<" | "<<matriz[f][c];
else
cout<<" | ";}
cout<<" || ";
if (matriz[f][c]!='0')
cout<<matriz[f][c]<<" | ";
else
cout<<" | ";}
if (matriz[f][c]!='0')
cout<<matriz[f][c]<<" || ";
else
cout<<" || ";
if (matriz[f][c]!='0')
cout<<matriz[f][c]<<" | ";
else
cout<<" | ";}
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]<<" | ";
x++;
cout<<x;
if (matriz[f][c]!='0')
cout<<" | "<<matriz[f][c];
else
cout<<" | ";}
cout<<" || ";
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<<" || ";
if (matriz[f][c]!='0')
cout<<matriz[f][c]<<" | ";
else
cout<<" | ";}
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;
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;
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){
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
if (matriz[f][c]!='0')
else
cout<<" | ";}//si no imprime el borde izquierdo con dos espacios(para no alterar el ancho de la
casilla)
if (matriz[f][c]!='0')
else
cout<<" | ";}
if (matriz[f][c]!='0')
elsecout<<" || ";
cout<<matriz[f][c]<<" | ";
else
cout<<" | ";}
x++;
cout<<x;
if (matriz[f][c]!='0')
cout<<" | "<<matriz[f][c];
else
cout<<" | ";}
cout<<" || ";
if (matriz[f][c]!='0')
cout<<matriz[f][c]<<" | ";
else
cout<<" | ";}
if (matriz[f][c]!='0')
cout<<matriz[f][c]<<" || ";
else
cout<<" || ";
cout<<matriz[f][c]<<" | ";
else
cout<<" | ";}
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]<<" | ";
x++;
cout<<x;
if (matriz[f][c]!='0')
cout<<" | "<<matriz[f][c];
else
cout<<" | ";}
cout<<" || ";
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<<" || ";
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
cin>>resp1;
if (resp1=='s' || resp1=='S')
break;
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;
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){
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++;
for (n='0';n<'3';n++){
for (m='0';m<'3';m++){
if (matriz[n][m]==num)
cont++;
for (n='0';n<'2';n++){
for (m='3';m<'6';m++){
if (matriz[n][m]==num)
cont++;
for (n='0';n<'3';n++){
for (m='6';m<'9';m++){
if (matriz[n][m]==num)
cont++;
for (n='3';n<'6';n++){
for (m='0';m<'3';m++){
if (matriz[n][m]==num)
cont++;
for (n='3';n<'6';n++){
for (m='3';m<'6';m++){
if (matriz[n][m]==num)
cont++;
for (n='3';n<'6';n++){
for (m='6';m<'9';m++){
if (matriz[n][m]==num)
cont++;
for (m='0';m<'3';m++){
if (matriz[n][m]==num)
cont++;
for (n='6';n<'9';n++){
for (m='3';m<'6';m++){
if (matriz[n][m]==num)
cont++;
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);