Está en la página 1de 5

INTRODUCCIÓN A LA COMPUTACIÓN BIC01-I

SOLUCIONARIO EXAMEN FINAL – Semestre 2021-2

Pregunta 1.1

#include<stdio.h>
int main(){
int i,j,k,f,c,num;
int a[11][11];

FILE *p;
p=fopen("sudoku.txt","r");

for(i=1;i<=9;i++){
for(j=1;j<=9;j++) fscanf(p,"%d", &a[i][j]);
}
printf("SUDOKU\n");
for(i=1;i<=9;i++){
for(j=1;j<=9;j++) {
printf("%9d", a[i][j]);
}
printf("\n");
}

printf("\n\n");

printf("Ingresar datos en las casillas del SUDOKU\n");


printf("\n");
printf("Ingresar ubicacion:\n");
printf("fila(del 1 al 9):\n"); scanf("%d",&f);
printf("columna (del 1 al 9):\n"); scanf("%d",&c);

if(a[f][c]<0.01) { printf("Ingresar dato(del 1 al 9) en la casilla


[%d][%d]\n",f,c);
scanf("%d",&num);
for(j=1;j<=9;j++)
if(a[f][j]==num) { printf("El valor ingresado se repite en la misma
fila\n");
}

for(i=1;i<=9;i++)
if(a[i][c]==num) { printf("El valor ingresado se repite en la misma
columna\n");
}
}
else { printf("Casilla [%d][%d] OCUPADA \n",f,c);}

printf("Ingresar otra ubicacion:\n");


} // Solución tomada de 20215020K SUELDO ORTEGA, FREDDY MIGUEL

Pregunta 1.2

#include<stdio.h>
main(){
int o=0,e=0,i,j;
int f,c;
int x[10][10];
FILE *a;
a=fopen("SUDOKU.txt","r");
for (i=1;i<=9;i++){
for(j=1;j<=9;j++) {
fscanf(a,"%d",&x[i][j]);
}
}
//Análisis por filas
for(f=1;f<=9;f++) for (i=1;i<=9;i++){
for(j=1;j<=9;j++) {
if(i!=j){
if(x[f][i]==x[f][j]){
//printf("error:%d=%d\n%d,%d\n",x[f][i],x[f][j],i,j);
x[f][i]=0;
e++;
}
}
}
}
//Análisis por columnas
for(c=1;c<=9;c++) for (i=1;i<=9;i++){
for(j=1;j<=9;j++) {
if(i!=j){
if(x[i][c]==x[j][c]){
//printf("error:%d=%d\n%d,%d\n",x[i][c],x[j][c],i,j);
x[j][c]=0;
e++;
}
}
}
}
if(e%2==0) e=e/2;
else e=(e+1)/2+1;
printf("LOS ERRORES FUERON CORREGIDOS CON 0\n");
printf("Numero de numeros errados: %d\n",e);
for (i=1;i<=9;i++){
for(j=1;j<=9;j++) {
printf("%d\t",x[i][j]);
o++;
if(o==9) printf("\n");
if(j==9) o=0;
}
}
} // Solución tomada de 20202052F REYNOSO TORPOCO, GERALDINE FIORELLA
Pregunta 2.1

Algoritmo de solución
Para resolver la pregunta hay que tener presente que los números son de
hasta 20 dígitos y por lo mismo no pueden almacenarse en un solo número.

1. Con la información de la cantidad de números datos se realiza la


lectura de cada número
2. Como se conoce cuantos dígitos cuenta cada número, este es no menor
que 15.
3. Paso siguiente, hay que leer los números en tres partes. Para ello se
ha inicializado tres vectores int a1[21],a2[21],a3[21]. Cada uno de
estos vectores almacena las partes de los números. Es decir, para el
caso del número: 823456783784590234 Así:
A1[1] <- 82 a2[1] <- 34567837 a3[1] <- 84590234
4. Luego ordenar de mayor a menor el arreglo a1 y realizar los cambios
respectivos también en los arreglos a2 y a3.
5. El programa finalizará aquí si no hay valores idénticos sucesivos
entre los valores del arreglo a1. Si no hay idénticos, entonces se
puede imprimir los números como sigue:
for(i=1;i<=n;i++) printf(“%d%d%d\n”,a1[i],a2[i],a3[i]);
6. Si hay valores idénticos sucesivos en a1; se debe ordenar en estos
valores idénticos sucesivos de forma descendente a los valores a2.
Debe acompañar en el nuevo orden también los elementos de a3.
7. Finalmente, se imprime los números cono se ha indicado en el paso 5.
8. De ser el caso, que hay números consecutivos de a2, se repite el paso
6 y finalmente el paso 5.
Pregunta 2.2

#include<stdio.h>
#include<math.h>
int main(){
int a[40],b[21],c[40],n1,n2=0,r[30],i,j,k,m,t;
FILE *f;
f=fopen("multiplicar.dat","r");
fscanf(f,"%d",&n1);
for(j=1;j<=30;j++) a[j]=0;
for(i=n1;i>=1;i--) fscanf(f,"%d",&a[i]);
for(i=4;i>=1;i--) fscanf(f,"%d",&b[i]);
for(i=4;i>=1;i--) n2=n2+b[i]*pow(10,i-1);
k=0;
r[0]=0;
printf("primer numero: ");
for(i=n1;i>=1;i--) printf("%d",a[i]);
printf("\n");
printf("segundo numero: ");
printf("%d\n",n2);
for(i=1;i<=30;i++) c[i]=0;
for(i=1;i<=30;i++){
k++;
c[k]=(r[k-1]+a[i]*n2)%10;
r[k]=(r[k-1]+a[i]*n2-c[k])/10;
}
t=0;
while(t==0){
k--;
if(c[k]!=0) {
t=1;
m=k;
}
}
printf("resultado: ");
for(j=m;j>=1;j--) printf("%d",c[j]);
return 0;
} // Solución tomada de 20200067F MARIN AQUINO, AXEL EDUARDO

También podría gustarte