Pauta Examen de Repetición-2

Anuncio
07 Enero, 2003
Pauta Examen de Repetición de Lenguaje de Programación
1.
Suponga que tiene dos cadenas de caracteres de igual longitud máxima, de acuerdo a un número que proporcione el
usuario, escriba un programa en el cual una función separe las cadenas en ese punto y cree dos nuevas cadenas. Por
ejemplo si sus cadenas son:
Cadena1: Bienvenido
Cadena2: Caballero
Y el usuario le dice 4, las cadenas resultantes deberán ser:
Cadena1: Bienllero
Cadena2: Cabavenido
Su programa principal deberá también leer dichas cadenas. El prototipo de la función será:
void funcion(char *, char *, char *, char *, int);
50 puntos
10 Puntos por Análisis completo del problema.
20 Puntos por el programa principal distribuidos de la siguiente forma:
5 Puntos por leer las cadenas.
5 Puntos por leer el numero de corte, validándolo que sea mayor que cero y menor o igual que el máximo
numero de caracteres de la cadena mas pequeña.
5 Puntos por la llamada de la función de forma correcta.
5 Puntos por imprimir las 4 cadenas resultantes.
20 Puntos por la Función distribuidos de la siguiente forma.
10 Puntos por el Prototipo y el encabezado de la función de forma correcta.
10 Puntos por crear las dos nuevas cadenas sin utilizar las funciones preestablecidas por el lenguaje.
5 Puntos menos si utilizaron las funciones preestablecidas por el lenguaje.
Código:
#include <stdio.h>
#define MAX 15
void funcion(char *c1,char *c2,char *c3,char *c4,int n);
main()
{
char c1[MAX],c2[MAX],c3[MAX],c4[MAX];
int num, len;
printf("\nDame la primer cadena: ");
gets(c1);
printf("\nDame la segunda cadena: ");
gets(c2);
if(strlen(c1)>strlen(c2)) len=strlen(c2);
else len=strlen(c1);
printf("Dame un numer entero menor o igual que %d: ",len);
do{
scanf("%d",&num);
}while(num<0||num>len);
funcion(c1,c2,c3,c4,num);
printf("\nLas cadenas originales son: %s y %s",c1,c2);
printf("\nEl punto de corte es: %d",num);
printf("\nLas nuevas cadenas son: %s y %s",c3,c4);
getche();
return 0;
}//fin main.
07 Enero, 2003
void funcion(char *c1,char *c2,char *c3,char *c4,int n)
{char *p;
int i;
for(i=0;i<n;i++)
{
c3[i]=c1[i];
c4[i]=c2[i];
}
for(i=n;i<MAX;i++)
{
c3[i]=c2[i];
c4[i]=c1[i];
}
}//fin función
2.
Dado el siguiente código, haga un seguimiento para determinar lo que hace. Y escriba las funciones de meter y sacar de
tal forma que el programa se comporte como una pila.
50 Puntos
10 Puntos por un seguimiento claro y correcto.
20 Puntos por determinar que el programa almacena n números enteros en un archivo de texto de nombre
“examen.txt” de forma vertical, en cada línea agrega un salto de línea (excepto en la ultima).
Para mas adelante obtener esos numero y guardarlos en un arreglo y por ultimo sacarlos del
arreglo para imprimirlos.
10 Puntos por la función meter.
10 Puntos por la función sacar.
Si las funciones no se comportan como una pila entonces se omitirán dichos puntos.
void meter(int *num, int valor)
{
if(elem==tope) printf("No hay espacio disponible");
else{
num[elem]=valor;
elem++;
}
}
int sacar(int num[])
{
if(elem<=0) printf("No hay elementos que sacar");
else
{ elem--;
return num[elem];
}
}
Descargar