Autor Tema: Paso de parámetros argumentos en C. Por valor o referencia LenguajeC CU00550F  (Leído 2398 veces)

Pandemia

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 255
    • Ver Perfil
Buenas amigos, Aquí les dejo una posible solución al ejercicio CU00550F del curso de programación aprenda C como si estuviera en primero.

Citar
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.

 

Código: [Seleccionar]
#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;
    }
}

Citar
EJERCICIO Nº 2

Estudia el siguiente código y responde a las preguntas:

Código: [Seleccionar]

#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();
}


 
Citar
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.



Citar

b) Si el programa no te funciona, reescríbelo para que funcione.

Código: [Seleccionar]
#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]);


}




Citar
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


Citar
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.
« Última modificación: 02 de Agosto 2016, 15:14 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

EJERCICIO 1

He intentado ejecutar con el mismo dato que viene en la entrega pero no me muestra resultados correctos.

Me sale esto:


1: Calculo
2: Salir

Elija opcion: 1

Por favor, introduzca número entero entre 0 y 100: 85

Dato base: 85
Raíz01=0.000000 Rahz02=-9.219544
Valor sucesión: 526.847258
1: Calculo
2: Salir

Elija opcion: 2



Ahí Raíz01 y Raíz02 no están apareciendo correctamente (la sucesión si es correcta)

Tienes que revisar eso


EJERCICIO 2

Has respondido getch(): El programa  se cierra hasta que no se pulse una tecla.

Esto tienes que revisarlo, la función getch no cierra el programa.

Todo lo demás bien!

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".