Buenas amigos, Aquí les dejo una posible solución al ejercicio CU00550F del curso de programación aprenda C como si estuviera en primero.
EJERCICIO Nº1
Refactoriza el código que hemos visto como ejercicio resuelto para que cumpla con estos requisitos:
a) La función entraDatos deberá tener como tipo de retorno int en lugar de void, de modo que devolverá el valor introducido por el usuario.
b) La función proceso ya no existirá y en su lugar tendremos dos funciones: calcularRaiz(int num) y calcularSumatorio (int num)
c) La función resultados ya no existirá y su cometido será realizado dentro del main.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int dato = 0;
double raiz01, raiz02;
double suce = 0.0;
int entraDato();
void calcularRaiz(int num);
void calcularSumatorio(int num);
int main()
{
int opcionUsuario=1;
while(opcionUsuario != 2)
{
printf("\n1: Calculo\n2: Salir\n\nElija opcion: ");
scanf("%d", &opcionUsuario);
if(opcionUsuario == 1)
{
entraDato();
calcularRaiz(dato);
calcularSumatorio(dato);
printf("\nDato base: %d",dato);
printf("\nRa%cz01=%lf Ra%cz02=%lf", 161,161,raiz01,raiz02);
printf("\nValor sucesi%cn: %lf", 162,suce);
}
}
return 0;
}
int entraDato()
{
do
{
printf("\nPor favor, introduzca n%cmero entero entre 0 y 100: ", 163);
scanf("%d",&dato);
}
while(dato<0 || dato>100);
return dato;
}
void calcularRaiz(int num)
{
suce=0.0; //Borrado dato valor suce
raiz01=sqrt(num);
raiz02=-raiz01;
}
void calcularSumatorio(int num)
{
suce=0.0;
while(num>=0)
{
suce=suce+sqrt(num);
num=num-1;
}
}
EJERCICIO Nº 2
Estudia el siguiente código y responde a las preguntas:
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
// Ejercicios curso C aprenderaprogramar.com
//---------------------------------
void fun(int arr[]) {
int i;
for(i=0;i< 5;i++)
arr[i] = arr[i] + 10;
}
//--------------------------------
void main() {
int arr[5],i;
clrscr();
printf("\nEnter the array elements : ");
for(i=0;i< 5;i++)
scanf("%d",&arr[i]);
printf("\nPassing entire array .....");
fun(arr); // Pass only name of array
for(i=0;i< 5;i++)
printf("\nAfter Function call a[%d] : %d",i,arr[i]);
getch();
}
a) Busca información sobre conio.h, clrscr() y getch() ¿Forman parte del estándar de C?
No. La librería conio.h pertenece a borland por lo que no es estándar y no la encontraremos - o no al menos totalmente en otros muchos compiladores y mas importante en otros sistemas lo que reduce la portabilidad de tu código. Es una biblioteca de entrada salida de datos en la consola del sistema dos que se la considera obsoleta y es posible que alguna de las funciones que incluye no funcionen, o lo hagan incorrectamente. No es estrictamente necesaria para programar.
clrscr(): Se borran todos los datos de la pantalla de forma automática.
getch(): El programa se cierra hasta que no se pulse una tecla.
b) Si el programa no te funciona, reescríbelo para que funcione.
#include <stdio.h>
#include <stdlib.h>
//---------------------------------
void fun(int arr[])
{
int i;
for(i=0; i< 5; i++)
arr[i] = arr[i] + 10;
}
//--------------------------------
void main()
{
int arr[5],i;
printf("\nEnter the array elements : ");
for(i=0; i< 5; i++)
scanf("%d",&arr[i]);
printf("\nPassing entire array .....");
fun(arr); // Pass only name of array
for(i=0; i< 5; i++)
printf("\nAfter Function call a[%d] : %d",i,arr[i]);
}
c) ¿Qué objetivo tiene este programa? ¿Qué resultado debe devolver si se introducen los números 1, 2, 3, 4, 5?
Introducimos valores en un array de enteros de 5 elementos, luego cambiamos los valores de cada elemntos sumandole 10 a cada uno y luego lo mostramos por pantalla.
Passing entire array .....
After Function call a[0] : 11
After Function call a[1] : 12
After Function call a[2] : 13
After Function call a[3] : 14
After Function call a[4] : 15
d) ¿Es válido un bucle for sin llaves delimitadoras { … } de las instrucciones a ejecutar?
Si. Aunque no es aconsejable para unos buenos hábitos de programación.