elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ejercicios con Funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicios con Funciones  (Leído 2,217 veces)
foreground

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Ejercicios con Funciones
« en: 23 Abril 2013, 22:12 pm »

Buenas noches a todos, el caso es que hemos empezado a dar funciones en clase (mi temario prácticamente es el de Informática de ingeniería industrial) y tengo muchísimas dudas.

Tengo dos enunciados que no se plantear los cuales son:

Citar
Escribir un programa que lea tres números enteros y diga si están ordenados de menor a mayor o no. Usar una función que dados dos valores retorne true si el primero es mayor que el segundo y false en caso contrario

Citar
Se tienen dos ficheros que contienen números enteros. Los ficheros son “entrada1.txt” “entrada2.txt”. Se quiere obtener un fichero de salida que contenga la suma de los números que se encuentran en la misma fila. Si alguno de los ficheros se termina, se copia el resto del otro fichero
directamente.

Escribir dos funciones:
• Función que lee los dos ficheros de entrada y crea el fichero de salida.
• Esta función retorna 1 si todo el proceso ha sido correcto y 0 en caso contrario.
• Los nombres de los ficheros de entrada son: entrada1.txt y entrada2.txt.
• El nombre del fichero de salida es “salida.txt”.
• Función que muestra por pantalla el fichero de salida.

Me gustaría saber si alguien sabe resolverlos y si alguien conoce un enlace que explique con algo más de detalle este tema así como el concepto de parámetros por referencia el cual tampoco entiendo muy bien.

Saludos y gracias de antemano


En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Ejercicios con Funciones
« Respuesta #1 en: 23 Abril 2013, 23:45 pm »

Aquí tienes una calculadora echa con funciones y comentado todo el proceso con comentarios. Te puede servir, y si no entiendes algo coméntalo. http://foro.elhacker.net/programacion_cc/reto_para_los_que_estan_aprendiendo_c-t388743.0.html

Mira en esta página, lo tienes todo. http://c.conclase.net/ Si no entiendes mucho de funciones dale al curso C++ y tienes todo muy bien explicado.
Si quieres un resumen de como se usa una función es muy sencillo. Primero haces el prototipo (lo que viene siendo una declaración de una variable a la que le pones parámetros entre paréntesis)
Después de cerrar el main declaras la función. Y en el main la llamas.
Un ejemplo sencillo para que entiendas:
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. int funcionSuma(int,int);
  6. int resultado = 0;
  7. int sumando = 0;
  8. int segundoSumando = 0;
  9.  
  10. int main()
  11. {
  12.     cout << "introduzca el primer sumando" << endl;
  13.   cin >> sumando;
  14.   cout << "introduzca el segundo sumando"<< endl;
  15.   cin >> segundoSumando;
  16. cout << "El resultado es: " << resultado << endl;
  17. funcionSuma(sumando,segundoSumando);
  18. cout << "El resultado es: " << resultado << endl;
  19. getchar();
  20. getchar();
  21. return 0;
  22. }
  23.  
  24. int funcionSuma(int sumando,int segundoSumando)
  25. {
  26.  
  27. resultado = sumando + segundoSumando;
  28.  
  29. return resultado;
  30. }

Compila y ejecuta el programa y verás como antes de que se llame a la función el resultado es 0 y después de llamarla es la suma de los números.
Fíjate en el prototipo de la función arriba de todo junto a la declaración de variables. En el prototipo se declara el tipo de función. En este caso "int" porque devolverá un numero entero, es decir, el resultado. Se le pone que tipo de parámetros va a tener. En este caso 2 int al lado de la función"(int,int)".
El siguiente paso es ir abajo del main y hacer la declaración. Igual que en main. Ahí es donde tienes que poner lo que va a hacer la función y lo que va a devolver. Ahora ya está, solo te falta llamar a la función en el main cuando la necesites de la manera que te pongo en el código.
Espero que te sirva, un saludo.


En línea

I like to test things.
85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Ejercicios con Funciones
« Respuesta #2 en: 24 Abril 2013, 04:13 am »

parámetro por referencia, permite la modificación del valor del parámetro.

Código
  1. void func(int& arg){// Parámetro por referencia
  2.  
  3. arg=5;
  4. }
  5.  
  6. int main(){
  7.  
  8. int var=0;
  9.  
  10. // var vale 0
  11.  
  12. func(var);
  13.  
  14. // var vale 5
  15.  
  16.  
  17. return 0;
  18. }

En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Ejercicios con Funciones
« Respuesta #3 en: 24 Abril 2013, 11:49 am »

¿No es mejor usar un puntero de parámetro? Así puedes controlar la memoria y a la vez cambiar el valor.
En línea

I like to test things.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ejercicios con Funciones
« Respuesta #4 en: 24 Abril 2013, 14:25 pm »

Me gustaría saber si alguien sabe resolverlos
Supongo que si pero la política de los foros es no hacer tareas. En su lugar publica los avances que llevas del programa mas las dudas que tengas y alguien te ayudara a terminarlo.

También debes publicar toda la información que ayude a ayudarte, por ejemplo el lenguaje de programación, compilador y sistema operativo que utilizan en clase.

----

¿No es mejor usar un puntero de parámetro? Así puedes controlar la memoria y a la vez cambiar el valor.
Depende del lenguaje.

En C no hay otra forma de emular el paso por referencia.
En C++ no es necesario, en su lugar se utiliza una referencia, ello se explica en el mensaje de 85.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
foreground

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Ejercicios con Funciones
« Respuesta #5 en: 25 Abril 2013, 23:27 pm »

Lo sé rir3760 pero es que no tenia ni idea de verdad, bueno muchas gracias por las respuestas al final propuse estas dos soluciones ya que en verdad el único que tenia miga era el 2.

Ej 1

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #define T 1
  5. #define F 0
  6.  
  7. int comprobar (int x, int y)
  8. {
  9.    if(y>x)
  10.    return T;
  11.    else
  12.    return F;
  13. }
  14.  
  15. int main()
  16. {
  17.    int na,nb,nc;
  18.    printf("Introduzca tres valores: ");
  19.    scanf("%d%d%d", &na,&nb,&nc);
  20.  
  21.    if((na<nb) && (nb<c))
  22.    printf("Ordenados de menor a mayor\n");
  23.    else
  24.    printf("Ordenados de mayor a menor\n");
  25.  
  26.    system("PAUSE");
  27.    return 0;
  28. }
  29.  
  30.  

Ej 2

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4.  
  5. int leer()
  6. {
  7.    FILE *f1,*f2,*f3;
  8.    int a,b,suma=0;
  9.  
  10.    f1=fopen("entrada1.txt","r");
  11.     if(f1==NULL){
  12.      printf("Error con el fichero entrada 1 \n");
  13.      system ("PAUSE");
  14.      return 0;
  15.      }
  16.    f2=fopen("entrada2.txt","r");
  17.     if(f2==NULL){
  18.      fclose(f1);
  19.      printf("Error con el fichero 2 \n");
  20.      system ("PAUSE");
  21.      return 0;
  22.      }
  23.    f3=fopen("salida.txt","w");
  24.     if(f3==NULL){
  25.      fclose(f1);
  26.      fclose(f2);
  27.      printf("Error con el fichero 3 \n");
  28.      system ("PAUSE");
  29.      return 0;
  30.      }
  31.  
  32.    while ((fscanf(f1,"%d",&a)!=EOF) && (fscanf(f2,"%d",&b)!=EOF))
  33.    {
  34.    suma=a+b;
  35.    fprintf(f3,"%d\n ",suma);
  36.    }
  37.    while((fscanf(f1,"%d",&a))!=EOF)
  38.    fprintf(f3,"%d\n ",a);
  39.    while((fscanf(f2,"%d",&b))!=EOF)
  40.    fprintf(f3,"%d\n ",b);
  41.  
  42.  
  43.    fclose(f1);
  44.    fclose(f2);
  45.    fclose(f3);
  46.    return 1;
  47. }
  48. void mostrar()
  49. {
  50.     int a;
  51.     FILE *f3;
  52.  
  53.     f3=fopen("salida.txt","r");
  54.      if(f3==NULL){
  55.       printf("Error con el fichero 3 \n");
  56.       system("PAUSE");
  57.       }
  58.  
  59.     while(fscanf(f3,"%d",&a)!=EOF){
  60.      printf("Sumando... \n");
  61.      sleep(1000);
  62.      printf("%d \n",a);
  63.      }
  64.  
  65.    fclose(f3);
  66.    system("PAUSE");                                    
  67. }
  68. int main ()
  69. {
  70.    leer();
  71.    mostrar();
  72.    return 0;
  73.  
  74. }

Si hay algún error o quieren puntualizar en algo por favor estaré agradecido a sus respuestas. Buenas noches a todos
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ejercicios con Funciones
« Respuesta #6 en: 26 Abril 2013, 03:04 am »

Un problema con el primer programa es que no utilizas la función "comprueba". En ella utilizas el condicional:
Código
  1. if (y > x)
  2.   return T; /* T == 1 */
  3. else
  4.   return F; /* F == 0 */
Ya que los operadores relacionales resultan en uno si se cumple la condición y cero en caso contrario esa parte la puedes reducir a (tenias mal el orden de las variables):
Código
  1. return x > y;

El programa con todos los cambios necesarios:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int mayor(int x, int y);
  5.  
  6. int main(void)
  7. {
  8.   int a;
  9.   int b;
  10.   int c;
  11.  
  12.   puts("Introduce tres valores:");
  13.   if (scanf("%d %d %d", &a,&b,&c) != 3)
  14.      return EXIT_FAILURE;
  15.  
  16.   if (!mayor(a, b) && !mayor(b, c))
  17.      puts("Ordenados de menor a mayor");
  18.   else
  19.      puts("No estan ordenados de menor a mayor");
  20.  
  21.   return EXIT_SUCCESS;
  22. }
  23.  
  24. int mayor(int x, int y)
  25. {
  26.   return x > y;
  27. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pantallazos de ejercicios ejercicios 1 y 2 « 1 2 3 »
Ejercicios
soplo 25 97,716 Último mensaje 21 Marzo 2011, 21:15 pm
por hackvj
Ejercicios en C
Ejercicios
soplo 0 64,834 Último mensaje 2 Julio 2004, 00:28 am
por soplo
Ejercicios C++
Ejercicios
soplo 0 91,182 Último mensaje 5 Julio 2004, 06:08 am
por soplo
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
‭lipman 9 23,585 Último mensaje 19 Mayo 2011, 23:39 pm
por Littlehorse
AYUDA EJERCICIOS FUNCIONES PHP
PHP
dlm91 5 3,352 Último mensaje 11 Noviembre 2012, 17:09 pm
por ‭lipman
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines