Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: estudiante_1 en 18 Julio 2015, 18:54 pm



Título: Multiplos del 5 con modulares en C
Publicado por: estudiante_1 en 18 Julio 2015, 18:54 pm
Hola, quisiera hacer un programa que me muestre los 20 primeros multiplos del 5. Sé hacerlo en el main pero a la hora de hacerlo con modulares no me sale, alguien puede ayudarme por favor? :D. Esto es lo que yo he hecho:
Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.   int multiplos(int i,int r){
  4.    for(i=1;i<=20;i++){
  5.  
  6.        r=5*i;
  7.    }
  8.   return (r);
  9.  
  10.  
  11.   }
  12.  
  13.  int main(void){
  14.  int i,r;
  15.  printf("%d\n",multiplos(i,r));
  16.  
  17.  system("pause");
  18.  return(0);
  19.  
  20.  }
  21.  

Mod: los códigos deben ir en etiquetas GeSHi


Título: Re: Multiplos del 5 con modulares en C
Publicado por: user-marcos en 18 Julio 2015, 23:53 pm
Tienes varios fallos, por ejemplo multiplos recibe el valor de i, pero luego en el for le asignas el valor 1, entonces ¿Para que usas la variable i?
Código
  1. int multiplos(int i,int r){
  2.    for(i=1;i<=20;i++){
  3.  

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. const int MULTIPLO = 5;
  5. const int RANGO = 20;
  6.  
  7. void multiplos()
  8. {
  9.  for(int i=0 ; i < RANGO; i++)
  10.  {    
  11.    printf("%i\n", i*MULTIPLO);
  12.  }  
  13. }
  14.  
  15. int main()
  16. {
  17.  multiplos();
  18. }
  19.  


Título: Re: Multiplos del 5 con modulares en C
Publicado por: estudiante_1 en 19 Julio 2015, 19:15 pm
Uum vale lo entiendo, ahora bien, mi profesor nos dijo que no quiere ver ningún printf en ningún subprograma. Se puede hacer en el programa de los múltiplos?


Título: Re: Multiplos del 5 con modulares en C
Publicado por: ivancea96 en 19 Julio 2015, 21:22 pm
La forma lógica de hacerlo es trabajando con arreglos. Le pasas un arreglo de 20 int a la función, y que lo rellene. ¿Trabajásteis con arreglos?


Título: Re: Multiplos del 5 con modulares en C
Publicado por: estudiante_1 en 19 Julio 2015, 23:39 pm
Sí, pero este ejercicio me lo pide sin arreglos. Repito, se puede hacer lo que hizo user-marcos sin printf en el subprograma?


Título: Re: Multiplos del 5 con modulares en C
Publicado por: ivancea96 en 19 Julio 2015, 23:43 pm
La única forma sería convertir todos los números a una cadena del tipo "5 10 15 20 ...", e imprimirla fuera. Pero sin arreglos, vectores, algún método de guardar los valores en general...


Título: Re: Multiplos del 5 con modulares en C
Publicado por: estudiante_1 en 20 Julio 2015, 01:39 am
Gracias lo intentaré y ya os cuento. Muchas gracias.


Título: Re: Multiplos del 5 con modulares en C
Publicado por: v4char en 20 Julio 2015, 01:56 am
Si te vale esto
Código:
#include <stdio.h>

#define MULTIPLOS 20
#define TOMADOS 5

int multiplos(int paso)
{
    return (paso*TOMADOS);
}

int main()
{
    int i,paso;
    paso = 1;
    for(i=0;i<MULTIPLOS;i++)
    {
        printf("%i\n" ,multiplos(paso));
        paso++;
    }
    return 0;
}


Título: Re: Multiplos del 5 con modulares en C
Publicado por: user-marcos en 20 Julio 2015, 12:03 pm
Esta es una solución según las restricciones que tienes, pero te la he hecho en c++.

Código
  1. #include <iostream>
  2. #include <sstream>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. const int MULTIPLO = 5;
  7. const int RANGO = 20;
  8.  
  9. string multiplos()
  10. {
  11.  stringstream flujo;
  12.  for(int i=0 ; i < RANGO; i++)
  13.  {
  14.    if(i < RANGO-1)
  15.      flujo << i*MULTIPLO << ", ";
  16.    else flujo << i*MULTIPLO << '.';
  17.  }
  18.  return flujo.str();
  19. }
  20.  
  21. int main()
  22. {
  23.  cout << multiplos() << endl;
  24. }
  25.  

Hay otra manera de hacerlo, mediante el uso de vectores. que tiene mucha relación con los registros, creo que no te dejarán usarlo pero te lo pongo de igual modo.
Código
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. const int MULTIPLO = 5;
  6. const int RANGO = 20;
  7.  
  8. vector <int> multiplos()
  9. {
  10.  vector <int> NumMult;
  11.  
  12.  for(int i = 0 ; i < RANGO; i++)
  13.  {
  14.    NumMult.push_back(MULTIPLO*i);
  15.  }
  16.  return NumMult;  
  17. }
  18.  
  19. int main()
  20. {
  21.  for (int i = 0; i < multiplos().size(); i++)
  22.  {
  23.    cout << multiplos()[i] << endl;
  24.  }
  25. }
  26.  

Si estas empezando con la programación creo que la mejor solución es:
 
Si te vale esto
Código:
#include <stdio.h>

#define MULTIPLOS 20
#define TOMADOS 5

int multiplos(int paso)
{
    return (paso*TOMADOS);
}

int main()
{
    int i,paso;
    paso = 1;
    for(i=0;i<MULTIPLOS;i++)
    {
        printf("%i\n" ,multiplos(paso));
        paso++;
    }
    return 0;
}



Título: Re: Multiplos del 5 con modulares en C
Publicado por: v4char en 20 Julio 2015, 12:12 pm
Esta es una solución según las restricciones que tienes, pero te la he hecho en c++.

Código
  1. #include <iostream>
  2. #include <sstream>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. const int MULTIPLO = 5;
  7. const int RANGO = 20;
  8.  
  9. string multiplos()
  10. {
  11.  stringstream flujo;
  12.  for(int i=0 ; i < RANGO; i++)
  13.  {
  14.    if(i < RANGO-1)
  15.      flujo << i*MULTIPLO << ", ";
  16.    else flujo << i*MULTIPLO << '.';
  17.  }
  18.  return flujo.str();
  19. }
  20.  
  21. int main()
  22. {
  23.  cout << multiplos() << endl;
  24. }
  25.  

Hay otra manera de hacerlo, mediante el uso de vectores. que tiene mucha relación con los registros, creo que no te dejarán usarlo pero te lo pongo de igual modo.
Código
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. const int MULTIPLO = 5;
  6. const int RANGO = 20;
  7.  
  8. vector <int> multiplos()
  9. {
  10.  vector <int> NumMult;
  11.  
  12.  for(int i = 0 ; i < RANGO; i++)
  13.  {
  14.    NumMult.push_back(MULTIPLO*i);
  15.  }
  16.  return NumMult;  
  17. }
  18.  
  19. int main()
  20. {
  21.  for (int i = 0; i < multiplos().size(); i++)
  22.  {
  23.    cout << multiplos()[i] << endl;
  24.  }
  25. }
  26.  


Yo a tanto no llego. Eso es demasiado nivel para mi.


Título: Re: Multiplos del 5 con modulares en C
Publicado por: Flakito81 en 20 Julio 2015, 14:15 pm
Mi aportacion:

limite = 5 * 20; // 5 = múltiplo, 20 = número de repeticiones
for (i=0; i < limite; i+=5)
.... printf("%d\n", i); // en C++: std:cout << i << std:endl;


NOTA: Cuantas menos operaciones hagas (multiplicaciones en tu caso) mas rápido y eficiente será el programa.

NOTA 2: Ya verás tu si el bucle empieza en 0 o en 1, y si la condición de parada es "i < limite" o "i <= limite"


Título: Re: Multiplos del 5 con modulares en C
Publicado por: estudiante_1 en 20 Julio 2015, 16:59 pm
Gracias a todos por vuestras respuestas. Me habéis ayudado mucho. ;D ::)