Multiplos del 5 con modulares en C

Iniciado por estudiante_1, 18 Julio 2015, 18:54 PM

0 Miembros y 1 Visitante están viendo este tema.

estudiante_1

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 (cpp) [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
  int multiplos(int i,int r){
   for(i=1;i<=20;i++){

       r=5*i;
   }
  return (r);


  }

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

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

 }


Mod: los códigos deben ir en etiquetas GeSHi

user-marcos

#1
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?

int multiplos(int i,int r){
   for(i=1;i<=20;i++){



#include<stdio.h>
#include<stdlib.h>

const int MULTIPLO = 5;
const int RANGO = 20;

void multiplos()
{
 for(int i=0 ; i < RANGO; i++)
 {    
   printf("%i\n", i*MULTIPLO);
 }  
}

int main()
{
 multiplos();
}

estudiante_1

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?

ivancea96

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?

estudiante_1

Sí, pero este ejercicio me lo pide sin arreglos. Repito, se puede hacer lo que hizo user-marcos sin printf en el subprograma?

ivancea96

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

estudiante_1

Gracias lo intentaré y ya os cuento. Muchas gracias.

v4char

#7
Si te vale esto
#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;
}


user-marcos

#8
Esta es una solución según las restricciones que tienes, pero te la he hecho en c++.

Código (cpp) [Seleccionar]

#include <iostream>
#include <sstream>
#include <cstring>
using namespace std;

const int MULTIPLO = 5;
const int RANGO = 20;

string multiplos()
{
 stringstream flujo;
 for(int i=0 ; i < RANGO; i++)
 {
   if(i < RANGO-1)
     flujo << i*MULTIPLO << ", ";
   else flujo << i*MULTIPLO << '.';
 }
 return flujo.str();
}

int main()
{
 cout << multiplos() << endl;
}


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 (cpp) [Seleccionar]

#include <iostream>
#include <vector>
using namespace std;

const int MULTIPLO = 5;
const int RANGO = 20;

vector <int> multiplos()
{
 vector <int> NumMult;
 
 for(int i = 0 ; i < RANGO; i++)
 {
   NumMult.push_back(MULTIPLO*i);
 }
 return NumMult;  
}

int main()
{
 for (int i = 0; i < multiplos().size(); i++)
 {
   cout << multiplos()[i] << endl;
 }
}


Si estas empezando con la programación creo que la mejor solución es:
Cita de: v4char en 20 Julio 2015, 01:56 AM
Si te vale esto
#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;
}



v4char

Cita de: 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 (cpp) [Seleccionar]

#include <iostream>
#include <sstream>
#include <cstring>
using namespace std;

const int MULTIPLO = 5;
const int RANGO = 20;

string multiplos()
{
 stringstream flujo;
 for(int i=0 ; i < RANGO; i++)
 {
   if(i < RANGO-1)
     flujo << i*MULTIPLO << ", ";
   else flujo << i*MULTIPLO << '.';
 }
 return flujo.str();
}

int main()
{
 cout << multiplos() << endl;
}


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 (cpp) [Seleccionar]

#include <iostream>
#include <vector>
using namespace std;

const int MULTIPLO = 5;
const int RANGO = 20;

vector <int> multiplos()
{
 vector <int> NumMult;
 
 for(int i = 0 ; i < RANGO; i++)
 {
   NumMult.push_back(MULTIPLO*i);
 }
 return NumMult;  
}

int main()
{
 for (int i = 0; i < multiplos().size(); i++)
 {
   cout << multiplos()[i] << endl;
 }
}



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