19/09/2019, 01:18:43 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: Homenaje a aladan
 
 
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Tabla de multiplicar C  (Leído 4600 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Estudiantee
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 423


Ver Perfil
« : 15/07/2015, 11:55:45 am »

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);

   }
 
En línea

Si alguien me invita a forocoches, se lo agradecería.
ingmarov
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Honduras Honduras

Mensajes: 4.276



Ver Perfil
« Respuesta #1 : 15/07/2015, 01:19:01 pm »

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.
En línea

No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...
Estudiantee
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 423


Ver Perfil
« Respuesta #2 : 16/07/2015, 06:48:07 am »

     He intentado lo que me has explicado, pero sigue sin salirme.
En línea

Si alguien me invita a forocoches, se lo agradecería.
ingmarov
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Honduras Honduras

Mensajes: 4.276



Ver Perfil
« Respuesta #3 : 16/07/2015, 10:44:33 am »

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.
En línea

No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...
luis
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
Uruguay Uruguay

Mensajes: 304


Ver Perfil
« Respuesta #4 : 16/07/2015, 11:12:33 am »

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

En línea
Estudiantee
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 423


Ver Perfil
« Respuesta #5 : 17/07/2015, 11:18:33 am »

Pero si quito el return no me va a devolver nada. Lo que quiero es que me devuelva los 10 valores.
En línea

Si alguien me invita a forocoches, se lo agradecería.
luis
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
Uruguay Uruguay

Mensajes: 304


Ver Perfil
« Respuesta #6 : 17/07/2015, 11:24:11 am »

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
En línea
Estudiantee
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 423


Ver Perfil
« Respuesta #7 : 17/07/2015, 11:53:38 am »

Entonces hago que la función no devuelva nada y la llamo mediante un bucle for para que me devuelva 10 valores?
En línea

Si alguien me invita a forocoches, se lo agradecería.
ingmarov
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Honduras Honduras

Mensajes: 4.276



Ver Perfil
« Respuesta #8 : 17/07/2015, 11:57:38 am »

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.
En línea

No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...
Estudiantee
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 423


Ver Perfil
« Respuesta #9 : 17/07/2015, 12:10:45 pm »

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.
En línea

Si alguien me invita a forocoches, se lo agradecería.
ingmarov
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Honduras Honduras

Mensajes: 4.276



Ver Perfil
« Respuesta #10 : 17/07/2015, 12:24:33 pm »

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?
En línea

No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...
Estudiantee
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 423


Ver Perfil
« Respuesta #11 : 17/07/2015, 12:59:19 pm »

Quiero que el programa me muestre los primeros 20 múltiplos de 5. (Y sí me sale 100 20 veces).
En línea

Si alguien me invita a forocoches, se lo agradecería.
pierrot
pabloN
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Uruguay Uruguay

Mensajes: 3.348


Ver Perfil
« Respuesta #12 : 17/07/2015, 01:10:19 pm »

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'
En línea

$_="loe  hnachaPkr erttes,urJ";$j=0;for($i=0;s/(.)(.{$j})$//;$i++){$_=$2.$_,$j+=1-$i%2,print$1}print
ingmarov
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Honduras Honduras

Mensajes: 4.276



Ver Perfil
« Respuesta #13 : 17/07/2015, 01:20:57 pm »

¿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.
En línea

No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...
Estudiantee
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 423


Ver Perfil
« Respuesta #14 : 17/07/2015, 01:26:30 pm »

 ¿por qué no pones return?
En línea

Si alguien me invita a forocoches, se lo agradecería.
ingmarov
Moderador Global
Pleno*
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Honduras Honduras

Mensajes: 4.276



Ver Perfil
« Respuesta #15 : 17/07/2015, 02:12:45 pm »

¿por qué no pones return?

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

No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...
argentinator
Consultar la FIRMAPEDIA __________________________________________________________________________________________________________________
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 7.275

Vean mis posts activos en mi página personal


Ver Perfil WWW
« Respuesta #16 : 17/07/2015, 03:20:55 pm »



  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)
  {
     //  ........................
  }
En línea

Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.4 | SMF © 2006, Simple Machines LLC XHTML 1.0 válido! CSS válido!