Disciplinas relacionadas con la matemática => Temas de computación => Mensaje iniciado por: Estudiantee en 15 Julio, 2015, 11:55



Título: Tabla de multiplicar C
Publicado por: Estudiantee en 15 Julio, 2015, 11:55
Sé hacer el problema en el main sin modulares, ahora bien quiero aprender a hacerlo con modulares. Este es el programa pero solo me sale 100 al compilar.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
   int multiplos(int r){
   int i;
   for(i=1;i<=20;i++){
   r=5*i;
   }
   for(i=1;i<=20;i++){

    return(r);
   }




   }





   int main(void){
   int r,i;
   printf("%d\n",multiplos(r));



   system("pause");
   return(0);

   }
 


Título: Re: Tabla de multiplicar C
Publicado por: ingmarov en 15 Julio, 2015, 13:19
Hola

Veo varios problemas

En la función principal declaras la variable "i" y nunca la usas.

Nunca asignas un valor a "r". ¿O sí? yo no lo veo.
En el módulo

Quieres que el módulo retorne varios valores y creo que solo podrá retornar un valor.
Puedes hacer varias cosas
Poner el segundo ciclo for en la función principal y que allí se llame a la función modular cuantas veces quieras.
O puedes hacer que la función multiplos imprima lo que quieras.


Título: Re: Tabla de multiplicar C
Publicado por: Estudiantee en 16 Julio, 2015, 06:48
     He intentado lo que me has explicado, pero sigue sin salirme.


Título: Re: Tabla de multiplicar C
Publicado por: ingmarov en 16 Julio, 2015, 10:44
Mira ese programa hecho en python (tablas de multilicar del 1 al 12)

Código:
def multi(n):                                           %Esta es la función secundaria
for i in range(10):                            %Este ciclo for es similar al tuyo solo que este asigna valores a i desde cero a "diez"   
print(n,"x",i+1,"=",n*(i+1))

for j in range(12):         %Esta la función principal
multi(j+1)


Y la salida del programa
Spoiler (click para mostrar u ocultar)

Revísalo, leer python es fácil.


Título: Re: Tabla de multiplicar C
Publicado por: luis en 16 Julio, 2015, 11:12
¿sabes lo que hace el return? devuelve el valor, y corta la ejecución. al ponerlo dentro de una iteración estás, en cierto sentido, destruyendo la iteración.



Título: Re: Tabla de multiplicar C
Publicado por: Estudiantee en 17 Julio, 2015, 11:18
Pero si quito el return no me va a devolver nada. Lo que quiero es que me devuelva los 10 valores.


Título: Re: Tabla de multiplicar C
Publicado por: luis en 17 Julio, 2015, 11:24
Pero si quito el return no me va a devolver nada. Lo que quiero es que me devuelva los 10 valores.

Una función (digamos, pirulo()) comienza a ejecutarse cuando la invocás (ponés en alguna parte de tu texto "pirulo()"), y al encontrar un return devuelve algo, y termina de ejecutarse. es decir, solamente se ejecuta una vez. al ponerlo adentro de una iteración, solamente se ejecuta la primera iteración en forma parcial.

luis


Título: Re: Tabla de multiplicar C
Publicado por: Estudiantee en 17 Julio, 2015, 11:53
Entonces hago que la función no devuelva nada y la llamo mediante un bucle for para que me devuelva 10 valores?


Título: Re: Tabla de multiplicar C
Publicado por: ingmarov en 17 Julio, 2015, 11:57
Entonces hago que la funcion no devuelva nada y la llamo mediante un bucle for para que me devuelva 10 valores?

Si devuelve nada (si es tipo void) ¿cómo te devolverá 10 valores?

Llámala con un ciclo "for"  de diez pasos desde la función principal y que en cada llamada te devuelva un valor




Pd. Cuida los tildes, también aplica para mí, a veces también me olvido a alguno.


Título: Re: Tabla de multiplicar C
Publicado por: Estudiantee en 17 Julio, 2015, 12:10
Crees que este ejercicio se puede hacer con funciones?



Procura en adelante no borrar todo tu mensaje, ponlo en un spoiler si quieres pero no lo borres.


Título: Re: Tabla de multiplicar C
Publicado por: ingmarov en 17 Julio, 2015, 12:24
Te comento el programa

Lo estoy intentando, he pensado hacerlo así, pero no da resultado:
 int multiplos(int r){
   int i;
   for(i=1;i<=20;i++){                /*Este ciclo for asigna a r los valores 5,10,15,...,95,100     pero no devuelve cada uno, no entiendo lo que quieres hacer. /*
   r=5*i;
   }
   for(i=1;i<=20;i++) return(r);  /*Solo devuelve el último valor de r (r=100), una vez y luego vuelve a la función principal/*
   }










   int main(void){
   int r,i;
   for(i=1;i<=20;i++){             /*Esto sí puede servir, pero con lo que tienes en la función múltiplos creo que solo obtienes 100,100,100,... (20 cienes)/*
   printf("%d\n",multiplos(r));
   }


   system("pause");
   return(0);

   }
 


¿Puede mostrarme el tipo de salida que buscas en este programa?

Me deja pensando la linea   donde escribes   r=5*i



El programa es bastante fácil, y sí se puede hacer con funciones. Pero debo entender ¿qué quieres hacer con el programa?

 Quiero decir ¿Que quieres que el programa haga?


Título: Re: Tabla de multiplicar C
Publicado por: Estudiantee en 17 Julio, 2015, 12:59
Quiero que el programa me muestre los primeros 20 múltiplos de 5. (Y sí me sale 100 20 veces).


Título: Re: Tabla de multiplicar C
Publicado por: pierrot en 17 Julio, 2015, 13:10
Quiero que el programa me muestre los primeros 20 múltiplos de 5.

En Perl, un posible one-liner para hacer esa tarea sería éste:

$ perl -e 'print join"\n", map 5*$_,1..20'

o también:

$ perl -e 'print 5*$_,"\n" for 1..20'


Título: Re: Tabla de multiplicar C
Publicado por: ingmarov en 17 Julio, 2015, 13:20
¿Te han enseñado a hacer pruebas de escritorio? si no investiga

Prueba el programa siguiente, es una forma de hacerlo.


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
  void multiplos(int r){
   int i, int n;
   for(i=1;i<=20;i++){
   n=r*i;
      printf("%d\n",n);
    }
return(0);
 }
  int main(void){
   int r=5;
 
   multiplos(r);

   system("pause");
   return(0);

   }
 
Ah tienes razón Estudiante, había olvidado el return de la función.


Título: Re: Tabla de multiplicar C
Publicado por: Estudiantee en 17 Julio, 2015, 13:26
 ¿por qué no pones return?


Título: Re: Tabla de multiplicar C
Publicado por: ingmarov en 17 Julio, 2015, 14:12
¿por qué no pones return?

Sí, tienes razón, ya lo he editado.


Título: Re: Tabla de multiplicar C
Publicado por: argentinator en 17 Julio, 2015, 15:20


  Pero debo entender ¿qué quieres hacer con el programa?

 Quiero decir ¿Que quieres que el programa haga?

Más aún, yo diría que expresar esto es la parte más importante de un programa.
Esto puede hacerse en el mismo programa, usando comentarios, por ejemplo:


  // Este programa imprime una tabla de multiplicar.

  // Entrada: Números r, n.
  // Salida:   Por pantalla: mostrar la tabla de multiplicar de números hasta r filas y n columnas.
  // Método: Subrutina (o función void), iteraciones con for, uso de printf().

  int main(void)
  {
     //  ........................
  }