0% encontró este documento útil (0 votos)
19 vistas3 páginas

Práctica 6: Funciones en C: Objetivo

La práctica tiene como objetivo profundizar en el uso de funciones en C mediante ejercicios sobre cadenas de caracteres y matrices. Se proponen dos ejercicios: uno para concatenar cadenas y otro para verificar condiciones de un sudoku en una matriz 9x9. Los alumnos deben implementar las soluciones en C y entregarlas en el sistema Doctus.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas3 páginas

Práctica 6: Funciones en C: Objetivo

La práctica tiene como objetivo profundizar en el uso de funciones en C mediante ejercicios sobre cadenas de caracteres y matrices. Se proponen dos ejercicios: uno para concatenar cadenas y otro para verificar condiciones de un sudoku en una matriz 9x9. Los alumnos deben implementar las soluciones en C y entregarlas en el sistema Doctus.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Universidad de Sevilla

Escuela Superior de Ingenieros


Dpto. de Ingeniería de Sistemas y Automática
Camino de los Descubrimientos, s/n
41092 SEVILLA

Práctica 6: Funciones en C

Objetivo

El objetivo de esta práctica es la de profundizar en el uso de funciones en


lenguaje C. Para ello, se llevarán a cabo ejercicios básicos que de cadenas de
caracteres y de manejo de matices en C.

Se realizará la entrega al sistema Doctus de los ejercicios codificados en C.

Metodología

Se propone al alumno diseñar el programa en lenguaje C que resuelva los


ejercicios propuestos. El profesor de práctica analizará y detallará la solución de
estos ejercicios en colaboración con los alumnos en la clase.

Se recomienda el alumno repasar los conceptos de funciones, vectores, cadenas


de caracteres y matrices vistos en clase.

Ejercicios propuestos

 Ejercicio 1. Implementar una función en lenguaje C llamada


“concatena_cadena”. Esta función recibe dos cadenas de caracteres “cad1”
y “cad2”, y crea una nueva cadena “res” que contiene las dos cadenas de
entrada separadas por el carácter espacio ‘ ’.

El prototipo de la función debe ser el siguiente:


void concatena_cadena(char *cad1, char *cad2, char *res)

Ejemplo:
cad1=”hola” cad2=”mundo”  res=”hola mundo”
cad1=”como” cad2=”estas?”  res=”como estas?”
cad1=”estoy” cad2=”bien”  res=”estoy bien”

Se pide la codificación en C del programa y la entrega en el sistema Doctus.


El alumno debe adaptar su solución al siguiente código C, su solución DEBE
hacer uso de las variables especificadas.
#include "stdafx.h"

#define N 100

void concatena_cadena(char *, char *, char *);

int main(void)
{
/* DECLARACIÓN DE VARIABLES */
char cad1[N], cad2[N], resultado[N];

/* LECTURA DE DATOS */
printf("Introduzca primera cadena: ");
scanf("%s", cad1);
printf("Introduzca segunda cadena: ");
scanf("%s", cad2);

/* LLAMADA A LA FUNCION */
concatena_cadena(cad1, cad2, resultado);

/* ESCRITURA DE RESULTADOS */
printf("Cadena resultante: %s\n", resultado);

return 0;
}

void concatena_cadena(char *cad1, char *cad2, char *res)


{
int i, j;

/*************INICIO CODIGO DE ALUMNO*****************/

/***************FIN CODIGO DE ALUMNO******************/


}

 Ejercicio 2. Una matriz 9x9 es un sudoku si se cumplen las siguientes


condiciones:
a) Ningún valor se repite en la misma fila.
b) Ningún valor se repite en la misma columna.
c) Ningún valor se repite dentro de cada submatriz 3x3 del sudoku (9
submatrices).
d) Todos los elementos de la matriz están comprendidos entre 1 y 9.

Realice una función que compruebe si la posición i, j de una matriz 9x9 dada
como parámetro no está repetida en su correspondiente submatriz y que su
valor está entre el 1 y el 9. Si se cumplen ambas condiciones, la función
devolverá el valor entero 1, en caso contrario devolverá 0.

Se pide la codificación en C del programa y la entrega en el sistema Doctus.


El alumno debe adaptar su solución al siguiente código C, su solución DEBE
hacer uso de las variables especificadas.
#include "stdafx.h"

#define N 9

int test_sudoku(int, int, int [N][N]);

int main(void)
{
int M[N][N] =
/* 0 3 6 */
/*0*/{ { 1,6,2, 8,5,7, 4,9,3 },
{ 5,3,4, 1,2,9, 6,7,8 },
{ 7,8,9, 6,4,3, 5,2,1 },

/*3*/ { 4,7,5, 3,1,2, 9,8,6 },


{ 9,1,3, 5,8,6, 7,4,2 },
{ 6,2,8, 7,9,4, 1,3,5 },

/*6*/ { 3,5,6, 4,7,8, 2,1,9 },


{ 2,4,1, 9,3,5, 8,6,7 },
{ 8,9,7, 2,6,1, 3,5,4 } };
int i, j;
int res; /* vale 1 si es sudoku, 0 si no lo es*/

/* LECTURA DE DATOS */
printf("\nIntroduzca la fila: ");
scanf("%d", &i);
printf("Introduzca la columna: ");
scanf("%d", &j);

/* VERIFICA EL SUDOKU EN i,j */


res = test_sudoku(i, j, M);

/* ESCRITURA DE RESULTADOS */
if (res == 1)
printf("\n El elemento %d,%d cumple las condiciones", i, j);
else
printf("\n El elemento %d,%d no cumple las condiciones", i, j);

return 0;
}

int test_sudoku(int fil, int col, int mat[N][N])


{
int i, j; /* Para recorrer la matrix */
int ofil, ocol; /* Origen del bloque de sudoku actual */
int res; /* Resultado */
int val; /* Valor en la matriz en la posicion fil,col */

/*************INICIO CODIGO DE ALUMNO*****************/


/***************FIN CODIGO DE ALUMNO******************/

return res;
}

También podría gustarte