Buenas tardes. Dejo una posible solución de los ejercicios planteados en la entrega CU00550F del curso aprende a programar con lenguaje C desde cero.
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("\n\n1: Calculo\n2: Salir\n\nElija opcion: ");
scanf("%d",&opcionUsuario);
if(opcionUsuario==1){
entraDato();
calcularRaiz(dato);
calcularSumatorio(dato);
printf("\nDato base: %d",dato);
printf("\nRaiz01=%lf Raiz02=%lf",raiz01,raiz02);
printf("\nValor sucesion: %lf",suce);
}
}
return 0;
}
int entraDato(){
do{
printf("\nPor favor, introduzca numero entero entre 0 y 100: ");
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>, es propiedad de Borland y sólo sus compiladores pueden usarla. Por lo tanto significa que conio.h, no es una librería estandar. La función pertenece a la librería conio.h cabe destacar que no es una librería estándar del lenguaje C. Lo mismo podríamos decir sobre la función getch().
b) Si el programa no te funciona, reescríbelo para que funcione.
#include <stdio.h>
#include <stdlib.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;
system("cls");
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]);
getchar();
}
Sabiendo que getchar() nos sirve para capturar un carácter ingresado por medio del teclado, no entiendo el sentido de la invocación de la misma en este código.
c) ¿Qué objetivo tiene este programa? ¿Qué resultado debe devolver si se introducen los números 1, 2, 3, 4, 5?
El objetivo del programa es que el usuario pueda ingresar los valores de los arrays. Si se entran 1, 2, 3, 4 y 5 los arrays se inicializarán con los valores de los números entrados más 10 unidades en cada uno.
El resultado será:
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?
Sí, es válido, pero no aconsejable porque obstruye a la buena compensión del código y su depuración.
Gracias.