Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: pedro,, en 07 de Julio 2016, 01:29

Título: C Paso de parámetros arrays ¿por valor, o referencia? (LenguajeC) CU00550F
Publicado por: pedro,, en 07 de Julio 2016, 01:29
Buenas, dejo una posible solución a este ejercicio (CU00550F del curso para aprender a programar en lenguaje C).

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 entraDatos(); double calculaRaiz(int num); int calcularSumatorio(int num);
int main() {
    int num = entraDatos();
    printf("La ra\xA1z cuadradada de %d es: %lf\n", num, calculaRaiz(num));
    printf("El sumatorio de %d es: %d", num, calcularSumatorio(num));
    return 0;
}

int entraDatos() {
    int dato = 0;
    do {
        printf("\nPor favor introduzca numero entero entre 0 y 100: ");
        scanf("%d", &dato);
    } while (dato<0 || dato>100);
    return dato;
}

double calculaRaiz(int num){
    double resultado;
    resultado = sqrt(num);
    return resultado;
}

int calcularSumatorio(int num) {
    int resultado = num;
    int i = num -1;
    for (i; i>0; i--) {
        resultado = resultado + i;
    }
    return resultado;
}

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 no se considera parte de la biblioteca estándar de C.

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

Saludos. ;D
Título: Re:C (LenguajeC) Paso de parámetros, por valor, por defecto o referencia. CU00550F
Publicado por: Ogramar en 08 de Julio 2016, 19:19
Buenas igual bien otra vez Creo que el segundo ejercicio lo que pretende es demostrar cómo en C el paso de arrays a funciones permite la manipulación del contenido del array dentro de la función.

Salu2
Título: Re:C Paso de parámetros arrays ¿por valor, o referencia? (LenguajeC) CU00550F
Publicado por: pedro,, en 08 de Julio 2016, 20:09
Gracias otra vez.

Saludos.