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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Cómo crear una función?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo crear una función?  (Leído 3,101 veces)
SergioT

Desconectado Desconectado

Mensajes: 5


Ver Perfil
¿Cómo crear una función?
« en: 26 Noviembre 2020, 15:25 pm »

Hola, ¿qué tal? soy nuevo en el foro. Estoy teniendo un inconveniente con un trabajo práctico. Quiero generar una función para que me traiga los meses al main, pero, no me toma el for directamente. Es decir, a la hora de compilar y correr el programa, no me permite cargar los 12 datos que corresponderían a los 12 meses.

Si alguien pudiera ayudarme, lo agradecería mucho.

Código
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <string>
  4. #include <conio.h>
  5. #include <stdlib.h>
  6. using namespace std;
  7. string meses(string)
  8. {
  9. string meses[12];
  10.  
  11. meses[1]="Enero";
  12. meses[2]="Febrero";
  13. meses[3]="Marzo";
  14. meses[4]="Abril";
  15. meses[5]="Mayo";
  16. meses[6]="Junio";
  17. meses[7]="Julio";
  18. meses[8]="Agosto";
  19. meses[9]="Septiembre";
  20. meses[10]="Octubre";
  21. meses[11]="Noviembre";
  22. meses[12]="Diciembre";
  23.  
  24. }
  25. main ()
  26. {
  27. string meses(string);
  28. int dulces[12], Totaldulces;
  29. char i, j;
  30.  
  31. cout<<"Bienvenidos a la fabrica de produccion."<<endl;
  32. for (i=1;i>=12;i++)
  33. {
  34. for (j=1;j>=12;j++)
  35. {
  36. cout<<"Ingrese la cantidad de dulces producidos el mes " << meses[j] <<endl;
  37. cin>>dulces[i];
  38. Totaldulces=Totaldulces+dulces[i];
  39. cout<<"El acumulo es de: $"<<Totaldulces;
  40. }
  41. }
  42. cout<<"El monto total producido para los dulces es de: $"<<Totaldulces<<endl;
  43.  
  44. ;}



Mod: GeSHi obligatorio.


« Última modificación: 26 Noviembre 2020, 16:05 pm por #!drvy » En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: ¿Cómo crear una función?
« Respuesta #1 en: 26 Noviembre 2020, 15:43 pm »

Antes que nada los arreglos se empiezan a contar desde 0.


Código
  1. //Fuera de main
  2. cons char *meses[12] = {"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
  3.  
  4. //En main
  5. for(int i = 0 ; i < 12; i++){
  6. cout<<"Mes "<<i+1<<" "<<meses[i]<<endl;
  7. }

Saludos!


En línea

SergioT

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ¿Cómo crear una función?
« Respuesta #2 en: 26 Noviembre 2020, 15:53 pm »

Cuando quiero aplicar lo que me enviaste, me aparece siempre ENERO, y no pasa a Febrero, marzo, etc. ¿por qué puede suceder? ¿Se puede transformar esta función a un string? Muchas gracias desde ya por la respuesta.
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: ¿Cómo crear una función?
« Respuesta #3 en: 26 Noviembre 2020, 16:04 pm »

El detalle de que no pase de Enero debe se tu codigo por que ejecute el mio y muestra todos los meses.

Sobre si se puede hacer para string claro:

Código
  1. #include<stdio.h>
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5. //Fuera de main
  6. string meses[12] = {"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"};
  7.  
  8. int main () {
  9. for(int i = 0 ; i < 12; i++){
  10. cout<<"Mes "<<i+1<<" "<<meses[i]<<endl;
  11. }
  12. }

Lo ejecuto y muestra

Código:
C:\codigos>g++ meses.cpp -o meses.exe

C:\codigos>meses
Mes 1 Enero
Mes 2 Febrero
Mes 3 Marzo
Mes 4 Abril
Mes 5 Mayo
Mes 6 Junio
Mes 7 Julio
Mes 8 Agosto
Mes 9 Septiembre
Mes 10 Octubre
Mes 11 Noviembre
Mes 12 Diciembre
En línea

SergioT

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: ¿Cómo crear una función?
« Respuesta #4 en: 26 Noviembre 2020, 16:19 pm »

Perfecto, ¡Ahí lo resolví! Muchísimas gracias por tu ayuda.

Un saludo, SergioT.
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: ¿Cómo crear una función?
« Respuesta #5 en: 26 Noviembre 2020, 16:49 pm »

Tienes numerosos fallos en la función.

 El tipo del que declares la función es el tipo de dato que tiene que retornar la función. Ej:
Código
  1. string nombre() {
  2.  /* haces lo que quieras con tu función */
  3.  string nombre = "Paco";
  4.  return nombre;
  5. }
Para llamar a esta función desde otra, por ejemplo main solo necesitas usar el identificador y los paréntesis (no repitas el tipo que retorna la función). En este caso no tiene parámetros la función:
Código
  1. int main() {
  2.  cout << nombre() << endl;
  3.  return 0;
  4. }

Si no quieres que se retorne nada puedes declarar la función como void:
Código
  1. void saludar() {
  2.  cout << "Hola Paco" << endl;
  3. }
  4.  
  5. int main() {
  6.  saludar();
  7.  return 0;
  8. }

Lo usual es hacer que las funciones sean puras, esto significa que se pueda reusar para por ejemplo imprimir distintos nombres en lugar de solo saludar a paco:
Código
  1. void saludar(string nombre) {
  2.  cout << "Hola " << nombre << endl;
  3. }
  4.  
  5. int main() {
  6.  string nombre1 = "Paco";
  7.  string nombre2 = "Lucia";
  8.  saludar(nombre1);
  9.  saludar(nombre2);
  10.  
  11.  return 0;
  12. }

Para que pueden ser útiles las funciones que retornan un tipo? Por ejemplo para unir un vector (es un array que aumenta su tamaño automáticamente):
Código
  1. #include <string>
  2. #include <vector>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. string unir(vector<string> texto, string remplazo) {
  8.  string variableAuxiliar = "";
  9.  for (int i = 0; i < texto.size(); ++i) {
  10.    if (i + 1 != texto.size()) {
  11.      variableAuxiliar += texto[i] + remplazo;
  12.    } else {
  13.      variableAuxiliar += texto[i];
  14.    }
  15.  }
  16.  return variableAuxiliar;
  17. }
  18.  
  19. int main() {
  20.  vector<string> meses = { "enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre" };
  21.  string mesesSeparadosPorGuiones = unir(meses, "-");
  22.  cout << "Meses:" << mesesSeparadosPorGuiones << endl << endl;
  23.  
  24.  cout << "Meses separados por saltos de lineas:" << unir(meses, "\n") << endl;
  25.  return 0;
  26. }

Como ves la llamada a la función unir(vector, "remplazo") esremplazada por el valor que retorna. Asique puedes usarlo desde la función cout, como asignación de valor de un string o en cualquier otro lugar que tenga sentido meter un string, incluso en parámetros de otras funciones.
Entonces podrías hacer algo como:
Código
  1. void imprimir(string cualquierTexto) {
  2.  cout << "El texto introducido es:" << cualquierTexto << endl;
  3. }
  4.  
  5. int main() {
  6.  string saludo = "Hola Paco";
  7.  imprimir(saludo);
  8.  imprimir( unir(meses, "-") );
  9.  return 0;
  10. }

Al poder hacer esto se puede hacer recursividad. Es decir, una llamada que retorna un tipo, si uno de los parámetros es de ese tipo, se puede llamar a si misma.
unir(otroVector, unir(meses, "-") );
Es forma de usar funciones de forma recursiva sirve para conseguir el mismo efecto que con un bucle for o un while. Busca sobre el tema si te interesa.

También hay otro tipo de funciones que se llaman lambdas que son funciones pequeñas que no hace falta que declares fuera de main. Tiene sentido utilizarlas si es para hacer algo que no vas a volver a hacer en el futuro. Puedes echarles un ojo.
« Última modificación: 26 Noviembre 2020, 16:51 pm por @XSStringManolo » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como crear funcion que?
Programación Visual Basic
ricardovinzo 6 3,108 Último mensaje 20 Septiembre 2008, 04:25 am
por cassiani
Como crear una funcion en c++ para alinear el texto a ambos lados a la vez
Programación C/C++
Fraguibo 1 8,332 Último mensaje 25 Septiembre 2013, 16:33 pm
por eferion
como crear la funcion insert de sql con c++??
Programación C/C++
pum6993 0 1,616 Último mensaje 13 Octubre 2016, 05:32 am
por pum6993
¿Cómo hago para crear una funcion que al usarla cree otra?.
Programación C/C++
josue9243 6 3,212 Último mensaje 4 Noviembre 2017, 16:19 pm
por josue9243
no se como crear la funcion BOOL
Programación C/C++
lokiam14 0 1,399 Último mensaje 25 Junio 2018, 03:33 am
por lokiam14
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines