Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Dimitar Stefanov

Páginas: 1 2 [3] 4 5 6 7 8 ... 30
41
Buenos días, Ogramar.

Gracias por tu tiempo y por el ejercicio corregido. Real mente la función por si sólo sirve para verificar si el número es divisible por 2. Todo el código es para sacar los números primos. ¿O me estoy equivocando?

Saludos.

42
Buenos días. Dejo una posible solución de la entrega CU00553F del curso elemental de programación en lenguaje C desde cero.

Citar
EJERCICIO

a) Busca información sobre qué es un struct en programación C. Explica el concepto tratando de poner un ejemplo de la vida real de algo que pueda ser similar a un struct en programación.

En la creacion de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que serian muy dificil de describir en los tipos de datos primitivos, esta es la situacion en la que debemos aprovecharnos de las caracteristicas que hacen al lenguaje C especial, o sea el uso de estructuras, uniones y punteros.

Una estructura contiene varios datos. La forma de definir una estructura es haciendo uso de la palabra clave struct.

Un ejemplo de declarar una estructura sería el siguiente:

Código: [Seleccionar]
struct mystruct
  {
      int int_member;
      double double_member;
      char string_member[25];
  } variable;

"variable" es una instancia de "mystruct" y no es necesario ponerla aquí. Se podria omitir de la declaracion de "mystruct" y más tarde declararla usando:

Código: [Seleccionar]
struct mystruct variable;
La estructura misma no tiene nombre (por la ausencia de nombre en la primera linea), pero tiene de alias "Mystruct". Entonces se puede usar así:

Código: [Seleccionar]

  Mystruct variable;

Note que es una convencion, y una buena costumbre usar mayúscula en la primera letra de un sinónimo de tipo.

Un comparación de la vida real, para explicar un struct en programación, podría ser con una marca comercial. Por ejemplo, la marca "bosch" fabrica: neveras, batidoras, planchas de pelo, etc. "bosch" sería la estructura (struct) y todo lo que pertenece a esa marca: neveras, batidoras, planchas de pelo, serían las variables dentro de la misma. Para referirnos a todos esos electrodomésticos utilizaríamos la marca, la estructura (struct).

Citar
b) Busca información sobre qué es un puntero en programación. Explica el concepto tratando de poner un ejemplo de la vida real de algo que pueda ser similar a un puntero en programación.

Un puntero es una variable que contiene la dirección de memoria de un dato o de otra variable que contiene al dato en un arreglo. Ésto quiere decir, que el puntero apunta al espacio físico donde está el dato o la variable. Un puntero puede apuntar a un objeto de cualquier tipo, como por ejemplo, a una estructura o una función. Los punteros se pueden utilizar para referencia y manipular estructuras de datos, para referenciar bloques de memoria asignados dinamicamente y para proveer el paso de argumentos por referencias en las llamadas a funciones.

Muchas de las funciones estandares de C, trabajan con punteros, como es el caso del scanf o strcpy. Estas reciben o devuelve un valor que es un puntero. Por Ej. A scanf se le pasa la dirección de memoria del dato a leer (esto es un puntero)...

Para explicar lo que es puntero con un ejemplo de la vida real podríamos utilizar el símil de una llave para un apartamento. Para vender un piso no hace falta coger el piso y entregarlo (literalmete) sino con las entregas de las llaves ya basta. Jugando a poquer con unos amigos, si queremos apostar el piso, no hace falta dejar encima de la mesa el piso, sino que puniendo las llaves del piso ya se sabe a que "apuntan" las mismas, apuntan al piso en sí, al espacio físico.

Unos comentarios sobre el curso "lenguaje C desde cero".

Quería expresar mi más sincero agradecimiento a todo el equipo de aprenderaprogramar.com por ofrecernos la gran oportunidad de adquirir una conocimientos sólidos en programación, a Mario R. Rancel por impartir el curso presente y por su tiempo y dedicacion, y a todos los campañeros que han ido corregiéndome y aconsejándome durante el curso.

Después de acabar unos cuantos cursos (de modo gratuito), a parte de sentirme muy agradecido, hacia el equipo de aprenderaprogramar.com,  por haberme brindado la oportunidad de estudiar de este modo, me siento seguro programando. Sé que me faltan muchos conceptos y prácticas más por aprender pero sin los conociementos básicos adquiridos aquí sería poco probable haber llegado al nivel que estoy.

Atentamente,

Dimitar (dimiste).

43
Buenas, cigarzonl.

Un ejercicio ejemplar. Felicidades.

Saludos.

44
Buenas noches, Ogramar.

Gracias por tu tiempo y por corregirme el ejercicio. Entonces, ¿debería declarar la variable cadena así: char cadena[]? Pero creo que le tendría que especificar un índice, ¿no?

Saludos.

45
Buenas, Ogramar.

Gracias por tu aportación también. Ok, me ha quedado claro que tengo que declarar (evidentemente) y inicializar todas las variabes/atributos.

Gracias a tí y a Pandemia por la aportación en este hilo.

Saludos.

46
Buenas noches. Presento una posible solución del ejercicio CU00552F del curso programación en lenguaje C desde cero.

Citar
EJERCICIO

Reescribe el programa anterior para que todas las funciones tengan un tipo de retorno y que los mensajes no sean mostrados por las distintas funciones, sino que la muestra de mensajes sea realizada exclusivamente por la función main. Esto se corresponde con reorganizar o reescribir un código para mejorarlo, y a esto se le suele denominar “refactorización del código”.

Código del programa anterior:

Código: [Seleccionar]
//Programa cálculos con impares02
#include <stdio.h>
#include <stdlib.h>

#define NMAX 19
int obtenerValorParaCalculo(); void resolverSumatorio (int numeroItemsSum);
void resolverProducto (int numeroItemsProd);

int main() {
    int valorParaCalculo=0;    int opcionUsuario = 1;
    while (opcionUsuario!=4) {
        printf("\n\n1: Introducir valor\n2: Calcular serie 1+3+5...\n");
        printf("3: Calcular serie 1*3*5...\n4: Salir\n\nElija opcion: ");
        scanf("%d", &opcionUsuario);
        if (opcionUsuario==1) {
            valorParaCalculo =  obtenerValorParaCalculo();
        }

        if (opcionUsuario==2) {
            if (valorParaCalculo!=0) {
                resolverSumatorio(valorParaCalculo);
            } else {
                printf("No hay un valor para calculo que permita obtener sumatorio 1+3+5+...");
            }
        }

        if (opcionUsuario==3) {
            if (valorParaCalculo!=0) {
                resolverProducto(valorParaCalculo);
            } else {
                printf("No hay un valor para calculo que permita obtener resultado 1*3*5*...");
            }
        }
    }
    return 0;
}


int obtenerValorParaCalculo() {
    int imparElegido = 0;
    do {
        printf("\nPor favor introduzca numero entero impar entre 1 y 19: ");
        scanf("%d", &imparElegido);
    } while (imparElegido<=0 || imparElegido>NMAX ||imparElegido%2==0);
    return imparElegido; // Ejercicios resueltos de programación aprenderaprogramar.com
}

void resolverSumatorio (int valorCalculoSum) {
    int impar = -1;      long resultadoSum =0;
    do {
        impar = impar + 2;
        resultadoSum = resultadoSum + impar;
    } while (impar < valorCalculoSum);
    printf("n = %d El valor del sumatorio es: %ld", valorCalculoSum, resultadoSum);
}

void resolverProducto (int valorCalculoProd) {
    int impar = -1;     long resultadoProd = 1;
    do {
        impar = impar + 2;
        resultadoProd = resultadoProd * impar;
    } while (impar < valorCalculoProd);
    printf("n = %d El valor del producto es: %ld", valorCalculoProd, resultadoProd);
}

El código refactorizado:

Código: [Seleccionar]
//Programa cálculos con impares02
#include <stdio.h>
#include <stdlib.h>

#define NMAX 19
long resolverSumatorio (int numeroItemsSum);
long resolverProducto (int numeroItemsProd);

int main() {
    int valorParaCalculo=0;
    int opcionUsuario = 1;
    long resultadoSum=0;
    long resultadoProd=0;

    while (opcionUsuario!=4) {
        printf("\n\n1: Introducir valor\n2: Calcular serie 1+3+5...\n");
        printf("3: Calcular serie 1*3*5...\n4: Salir\n\nElija opcion: ");
        scanf("%d", &opcionUsuario);
        if (opcionUsuario==1) {
            do {
                printf("\nPor favor introduzca numero entero impar entre 1 y 19: ");
                scanf("%d", &valorParaCalculo);
            } while (valorParaCalculo<=0 || valorParaCalculo>NMAX ||valorParaCalculo%2==0);
        }

        if (opcionUsuario==2) {
            if (valorParaCalculo!=0) {
                resultadoSum = resolverSumatorio(valorParaCalculo);
                printf("n = %d El valor del sumatorio es: %ld", valorParaCalculo, resultadoSum);
            } else {
                printf("No hay un valor para calculo que permita obtener sumatorio 1+3+5+...");
            }
        }

        if (opcionUsuario==3) {
            if (valorParaCalculo!=0) {
                resultadoProd = resolverProducto(valorParaCalculo);
                printf("n = %d El valor del producto es: %ld", valorParaCalculo, resultadoProd);
            } else {
                printf("No hay un valor para calculo que permita obtener resultado 1*3*5*...");
            }
        }
    }
    return 0;
}

long resolverSumatorio (int valorCalculoSum) {
    int impar = -1;
    long resultadoSum =0;
    do {
        impar = impar + 2;
        resultadoSum = resultadoSum + impar;
    } while (impar < valorCalculoSum);
    return resultadoSum;
}

long resolverProducto (int valorCalculoProd) {
    int impar = -1;
    long resultadoProd = 1;
    do {
        impar = impar + 2;
        resultadoProd = resultadoProd * impar;
    } while (impar < valorCalculoProd);
    return resultadoProd;
}

Gracias.

47
Hola. Expongo una posible solución del ejercicio CU00551F del taller de programación en lenguaje C desde cero.

Citar
EJERCICIO

Crea un programa en C que pida una cadena al usuario y muestre por pantalla la cadena invertida.

Por ejemplo, si la cadena introducida es calor, deberá mostrarse por pantalla rolac. Si la cadena introducida es aprenderaprogramar.com deberá mostrarse por pantalla moc.ramargorparednerpa

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main() {
    char cadena[50];
    int i=0;
    printf("Introduzca una cadena: ");
    gets(cadena);
    printf("La cadena invertida es: ");
    for(i=strlen(cadena);i>=0;i--){
        printf("%c",cadena[i]);
    }

    return 0;

}

Gracias.


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

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("\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;
    }
}


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>, 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().

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

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

Citar
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

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

49
Buenas tardes, Pedro.

Gracias por corregirme el ejercicio.

Sí, tienes razón, ahora cuando ví tu corrección me acordé de lo que me dijiste ayer en una de las otras correcciones y del hilo:

https://www.aprenderaprogramar.com/foros/index.php?topic=4726.msg19246#msg19246

jeje. No lo tendré que olvidar.

Saludos.

50
Buenas tardes. Dejo una posible solución de los ejercicios de la entrega CU00549F del tutorial de programador en lenguaje C desde cero.

Citar
EJERCICIO Nº1

Escribe una función que use un bucle for para calcular la potencia de un número al que denominaremos base sobre otro número al que denominaremos exponente, ambos recibidos como parámetros.

Ejemplo: la función recibe como base el 4 y como exponente el 3. El resultado devuelto debe ser el resultado de multiplicar la base por sí misma 3 veces, en este ejemplo 4*4*4 = 64.

Escribe un programa donde se pida al usuario base y exponente y se muestre el resultado de calcular la potencia (base elevada al exponente). Tras esto, se debe pedir al usuario si quiere repetir con otros datos o no (s/n). En caso de que el usuario elija s se le volverá a pedir base y exponente, y en caso contrario el programa debe finalizar.

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int potencia(int base, int exponente);

int main() {
    int base;
    int exponente;
    char respuesta = 's';
    while (respuesta=='s' || respuesta=='S') {
        printf("Introduce la base: ");
        scanf("%d",&base);
        printf("Introduce el exponenete: ");
        scanf("%d",&exponente);
        printf("%d elevado a %d es: %d\n\n", base, exponente, potencia(base,exponente));
        printf("Quiere repetir con otros datos o no (s/n)?: ");
        scanf("%*c%c%*c", &respuesta);
    }

    return 0;

}

int potencia(int base, int exponente){
    int resultado=1;
    int i;
    for(i=0; i<exponente; i++){
        resultado=resultado*base;
    }

    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>
// Ejercicios curso C aprenderaprogramar.com
void stars2 (int n) {
    int i;
    for (i=1; i<=n; ++i) {
        printf ("*");
    }
    printf ("\n");
}

int main (void) {
    int a;
    a=10;
    stars2 (20);
    stars2 (a);
    stars2 (a+2);
    return (0);
}

Citar
a) ¿Cuántas funciones se declaran en este código? ¿Es main una función?

Se declaran 2 funciónes. Sí, main es la función principal del código.

Citar
b) Explica cuántos parámetros reciben y de qué tipo son los parámetros para cada una de las funciones que existan en este código.

La función stars2(int n) recibe un parámetro cuyo argumento es de tipo int. La función main() no recibe ningún parámetro, su parámetro está vacío (void).

Citar
c) ¿Cuántas veces se invoca la función stars2 en el código? ¿Qué ocurre con cada una de esas invocaciones? ¿Cuál es el valor devuelto por la función stars2?

La función stars2 se invoca 3 veces en la función main. En la primera invocación se le pasa un parámetro con valor 20, en la segunda se le pasa un parámetro con valor una variable de tipo int (es el tipo que espera la función stars2) y tiene un valor 10. En la tercera invocación se le pasa un parámetro con valor 12 (a+2). Según que valor recibe la función stars2 mediante el parámetro de tipo int tantas veces se repite el bucle for dentro de la misma. La función stars2 no devuelve ningún valor porque es un precedimiento (procedure). En su declaración no se define ningún valor para devolver, sino "void" lo que quere decir que no devolverá nada dicha función.

Citar
d) ¿Qué ocurre si escribimos stars2(0)? ¿Por qué?

Cuando a la función stars2 se le pasa un parámetro con valor 0 no se imprimirá nada, sólo una nueva línea (\n). Esto ocurre porque el parámetro sirve para condición de la salida del bucle for en la función stars2. Pero como el valor iniciar del bucle es i=1 y si la condición es: "i<=0" ya no entraría en el bucle con lo cual no se ejecutarán las intrucciones en el mismo.


51
Buenas noches, cigarzonl.

Procedo a la corrección:

a) Incorrecto. No se puede llamar a un método externo que ha sido declarado pero no creado.

b) Correcto. Aunque su constructor esté vacío, el mismo define unos valores a las variables por defecto.

c) Correcto. Es una llamada a un método externo. El método pow() está declarado y creado en la clase Math.

Si quieres, puedes leer la solución del mismo ejercicio en el hilo:

https://www.aprenderaprogramar.com/foros/index.php?topic=1272.msg6947#msg6947

Es un ejercicio calificado como "solución ejemplar".

Saludos.

52
Buenas noches, duvier.

Ejercicio correcto.

Sólo comentarte que cuando se define nombre de método, de funciones o de variables normalemnte se usa el método la primera palabra es en minúscula y cada siguiente con mayúscula. Tal y como has definido la variable "numeroDocumentoIdentidad". Es decir, el método "setnombre()" es aconsejable que lo declares "setNombre()". Ya te digo, no es algo obligatorio pero ayuda en la lectura y comprensión del código.

Saludos

53
Buenas, Pedro.

Gracias por corregirme otro ejercicio más. Por eso puse "Cuantas filas quieres que tenga tu rombo para arriba", es decir, de la mitad para arriba. Quizás no me expresé bien.

Saludos. 

54
Buenas noches, Pedro.

Gracias por la corrección y por la aportación del hilo. Veo que a tí te pasó lo mismo, jeje.

Gracias y saludos.

55
Hola, Pedro.

Gracias por el ejercicio corregido. Tienes razón, se me había escapado este detalle. El código corregido será así:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main() {
    int num;
    int i=0;

    while(i<1){
        printf("Intrudzca un numero par entre 100 y 200: ");
        scanf("%d",&num);
        if(num>=100 && num<=200 && num%2==0){i++;}
    }

    for(i=num;i<=200;i=i+2){
        printf("%d\t",i);
    }

    return 0;
}

Gracias.

56
Buenas, Pedro.

Gracias por tu corrección. Entonces el código debería ser así:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main() {
    int num[3], i;
    double media;

    for(i=0; i<3; i++){
        printf("Introduzca un n%cmero entero: ", 163);
        scanf("%d", &num[i]);
    }

    media = (num[0]+num[1]+num[2])/3;

    FILE*fichero;
    fichero = fopen("archivo01.txt","wt");
    fprintf(fichero, "%d\n%d\n%d\n%lf", num[0], num[1], num[2], media);
    fclose(fichero);

    printf("Proceso completo");

    return 0;
}

Gracias y saludos.

57
Buenas noches, Pedro.

Gracias por tu tiempo y por corregir otro ejercicio más. Me he liado en el apartado b) quería poner justamente lo contrario, que "w" crea si no existe y el "r" no crea.

Saludos.

58
Buenas tardes. Expongo una posible solución del ejercicio CU00548F del tutorial de programación C lenguajeC desde cero.

Citar
EJERCICIO

Estudia el código que se muestra más abajo y responde a las preguntas:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int check_prime(int num);

int main(){
   int n1,n2,i,flag;
   printf("Enter two numbers(intervals): ");
   scanf("%d %d",&n1, &n2);
   printf("Prime numbers between %d and %d are: ", n1, n2);
   for(i=n1+1;i<n2;++i)
   {
      flag=check_prime(i);
      if(flag==0)
         printf("%d ",i);
   }
   return 0;
}

int check_prime(int num) {
   int j,flag=0;
   for(j=2;j<=num/2;++j){
        if(num%j==0){
            flag=1;
            break;
        }
   }
   return flag; // Ejercicios aprenderaprogramar.com
}

Citar
a) Sin ejecutar el código (sólo pensando) responde: ¿para qué sirve la función check_prime? ¿Qué resultado devolverá si le pasamos el número 4? ¿Por qué?

Sirve para verificar si el número siguiente al primer entrado por el usuario es divisible por 2. Si le pasaramos 4 devolverá flag=1 y saldrá del bucle debido a la instrucción "break;" porque cumplirá la condición "if(num%j==0)".

Citar
b) En dicha función se usa la siguiente definición de bucle: for(j=2;j<=num/2;++j) ¿Por qué crees que el bucle tiene un valor inicial 2? ¿Por qué crees que el bucle tiene un valor final num/2?

El bucle empieza con un valor inicial 2, porque cada número es divisible por 1 y no tendría sentido, siempre se saldría del bucle entrando en el condicional: "if(num%j==0)". Además los números primos son divisibles por 1, así que dividiendo el número por 1 no comprobaríamos si es primo o no.
También tiene otra razón, comprobamos si el número es divisible por 2 para comprobar primero si es un número par. Todos los números par (menos el 2) no son números primos.

El bucle tiene un valor final num/2 porque si hemos comprobado dividir el num por todos los números hasta su mitad y hemos comprobado que hasta ese momento no tiene un división exacta su otra mitad tampoco lo será. Es decir, si una "cosa" no es exactamente divisible si le añadimos exactamente la misma cantidad de esa "cosa" es como dejarla igual. Nos podemos valer del ejemplo: "2/4=1/2".

Citar
c) ¿La variable flag que se usa en el main es la misma que se usa en la función check_prime? ¿Es posible declarar y usar dos variables con el mismo nombre en la función main? ¿Y declarar y usar dos variables con el mismo nombre en la función main y otra función? ¿Por qué?.

No es la misma variable "flag" que se usa en el "main" que en la función "chek_prime". Son dos variables locales diferentes.

No es posible usar dos variables con el mismo nombre en una misma función.

Es posible declarar y usar dos variables con el mismo nombre en la función "main" y en otra función. Serán dos variables locales diferentes.

Citar
d) Crea una tabla de variables del programa que conste de las siguientes columnas: nombre de variable, ámbito, utilidad. Por ejemplo la variable i tiene nombre de variable i, ámbito la función main, y utilidad servir como índice en el bucle for del main.



Citar
e) Si se introducen como números 11 y 30 ¿Son evaluados 11 y 30? ¿Qué resultado se obtiene? ¿Por qué?

No se evalúa el 11 porque el valor inicial del bucle for de la función "main" ya empieza en: "i=n1+1", con lo cual quiere decir que empezará a partir del 12 y ese valor será el primer parámetro pasado a la función "chech_prime". El 30 tampoco será comprobado porque el bucle de la función "main" sólo se ejecutará hasta que el índice del mismo sea menor que el segundo número entrado por el usuario.

Se optien el resultado: "13 17 19 23 29" porque son los número primos entre 11 y 30 (ambos excluidos de comprobación).

Gracias.


59
Buenas tardes. Dejo una posible solución del ejercicio CU00547F del tutorial de programación en C lenguajeC desde cero.

Citar
EJERCICIO

Estudia el siguiente código:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int max(int num1, int num2);
 
int main () {
   int a = 100;
   int b = 200;
   int ret;
   ret = max(a, b);
   printf( "Max value is : %d\n", ret );
   return 0;
}
 
int max(int num1, int num2) {
   int result;
   if (num1 > num2)
      result = num1;
   else
      result = num2;
   return result; //Ejercicios aprenderaprogramar.com
}

Citar
a) Sin ejecutar el código (sólo pensando) responde: ¿para qué sirve la función max? ¿cuál será el resultado del programa?

La función "max" sirve para comparar los parámetros y devolver el mayor. El resultado sería: "Max value is: 200" devolviendo la función "max" result=num2, es decir, result=200.

Citar
b) ¿En qué línea se produce la llamada a la función max? ¿Qué valor se almacenará en la variable ret y por qué?

La llamada se produce mediante la instrucción: "ret=max(a,b);". La variable "ret" almacenará 200 porque es lo que devuelve la función "max" (result=200) ó sería lo mismo: "result=num2".

Citar
c) Reescribe el código de modo que todos los if lleven corchetes delimitadores { … } tanto para los if como para los else.

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int max(int num1, int num2);

int main() {
    int a=100;
    int b=200;
    int ret;

    ret=max(a,b);

    printf("Max value is: %d\n", ret);

    return 0;
}

int max(int num1, int num2){
    int result;
    if(num1>num2){
        result=num1;
    }else{
        result=num2;
    }

    return result;
}

Citar
d) Crea un programa análogo a este con una función que permita determinar, dados tres números, cuál es el mayor. Invoca la función pasándole como datos 23, 87, 45 y muestra el resultado devuelto por la función por pantalla.

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int max(int num1, int num2, int num3);

int main() {
    int a=23;
    int b=87;
    int c=45;
    int ret;

    ret=max(a,b,c);

    printf("Max value is: %d\n", ret);

    return 0;
}

int max(int num1, int num2, int num3){
    int result;
    if(num1>num2 && num1>num3){
        result=num1;
    }else if(num2>num1 && num2>num3){
        result=num2;
    }else{
        result=num3;
    }

    return result;
}

Gracias.

60
Buenas tardes. Dejo una posible solución de los ejercicios contemplados en la entrega CU00546F del tutorial de programación en lenguaje C desde cero.

Citar
EJERCICIO Nº1

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

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
// Curso de programación C aprenderaprogramar.com
/*  C program to demonstrate the working of goto statement. */

int main(){
   float num,average,sum;
   int i,n;
   printf("Maximum no. of inputs: ");
   scanf("%d",&n);
   for(i=1;i<=n;++i){
       printf("Enter n%d: ",i);
       scanf("%f",&num);
       if(num<0.0)
       goto jump;             /* control of the program with goto */
       sum=sum+num;
}
jump:
  average=sum/(i-1);       
  printf("Average: %.2f",average);
  return 0;
}

Citar
a) Sin ejecutar el código (sólo pensando) responde: ¿para qué sirve este programa? ¿cuál será el resultado del programa si introducimos los números 10, 5 y 2? ¿cuál será el resultado del programa si introducimos los números 10, -5 y 2?

Sirve para calcular la suma de los números entrados por el usuario entre el primer número entrado. Si se entra algún número menor que "0.0" no se tomará por puesto y se saldrá del bucle debido a la instrucción "goto". Si entramos 10,5 y 2 nos imprimirá una media de "5.67". Si entramos 10, -5 y 2 nos dará un resultado de "10.00" porque la instrucción "goto" hará que salgamos del bucle y no tendremos opción de entrar "2".

Citar
b) Ejecutando el código ¿cuál será el resultado del programa si introducimos los números 10, 5 y 2? ¿cuál será el resultado del programa si introducimos los números 10, -5 y 2?

Son los mismos resultados que hemos descrito en el apartado a).

Citar
c) ¿Qué signficado tiene ++i en el contexto de este programa?

Que se incrementa la variable "i" con una unidad. Es lo mismo poner "++i" que "i++" que "i=i+1" que "i+1=i".

Citar
d) ¿Es equivalente escribir      if( num<0.0) goto jump;      y      if( num < 0.0) { goto jump; }  ?

Sí, es lo mismo. Las dos formas son legales.

Citar
e) Haz que el código ofrezca los mismos resultados evitando el uso de goto.

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
// Curso de programación C aprenderaprogramar.com
/*  C program to demonstrate the working of goto statement. */

int main(){
   float num,average,sum;
   int i,n;
   printf("Maximum no. of inputs: ");
   scanf("%d",&n);
   for(i=1;i<=n;++i){
       printf("Enter n%d: ",i);
       scanf("%f",&num);
       if(num<0.0){
            break;
       }
       sum=sum+num;
}
jump:
  average=sum/(i-1);
  printf("Average: %.2f",average);
  return 0;
}

Citar
EJERCICIO Nº2

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

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
// Curso de programación C aprenderaprogramar.com
/*  C program to demonstrate the working of goto statement. */

int main() {
   int age;
   Vote:
     printf("you are eligible for voting");

   NoVote:
     printf("you are not eligible to vote");

   printf("Enter you age:");
   scanf("%d", &age);
   if(age>=18)
        goto Vote;
   else
        goto NoVote;

   return 0;
}

Citar
a) Sin ejecutar el código (sólo pensando) responde: ¿para qué sirve este programa? ¿cuál será el resultado del programa si introducimos el número 22?

A simple vista tendría que servir para responder según que edad entra el usuario si podría votar o no. Pero, nada más ejecutar el programa, me imprime los dos "printf" sin haber entrado ningún dato por consola. Supongo que se debe a que desde que se impartió el curso hasta hoy en día ha cambiado la versión del IDE "Code::Blocks" y no responde de la misma manera con la instrucción "goto".

Citar
b) Crea otro programa equivalente (que produzca los mismos resultados) sin hacer uso de la sentencia goto.

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
// Curso de programación C aprenderaprogramar.com
/*  C program to demonstrate the working of goto statement. */

int main() {
   int age;

   printf("Enter you age:");
   scanf("%d", &age);
   if(age>=18){
        printf("you are eligible for voting");
   }else{
        printf("you are not eligible to vote");
   }

   return 0;
}

Gracias.

Páginas: 1 2 [3] 4 5 6 7 8 ... 30

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