En una funcion nunca debe ir cout y cin??

Iniciado por cristofermil, 21 Enero 2017, 23:00 PM

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

cristofermil

Mi profesor me explico que nunca dentro de una función debe ir cout y cin , digamos un ejemplo : este es para hallar el máximo común divisor de 2 números , si se fijan al ultimo del void puse cout , pero dicen que la funcion void no devuelve nada , si no devuelve nada como rayos me va a botar el compilador algo :¬¬ :¬¬ ?? , entonces para que me sirviria , expliquenme :silbar: :silbar: detalladamente porfavor ;) :3
Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;
void MCD(int a, int b) {
int m;
if(a>b){
m=a%b;
}
else if(b>a){
m=b%a;
}
else if(a==b){
m=1;
}
cout<<"el maximo comun divisior es :"<<m;
}
int main(){
int p,q;
cout<<"ingrese el primer valor :"; cin>>p;
cout<<"ingrese el segundo valor :"; cin>>q;
MCD(p,q);

}


engel lex

probablemente sacas un poco de contexto a tu profesor, con eso de cin y cout... solo que el ejemplo no es para hacerlo así...
simplemente cambia void en el MCD por int y en lugar de usar cout, usas return (claro que sin <<) y listo, puedes hacer

Código (cpp) [Seleccionar]
cout << MCD(p,q);
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivancea96

Para concretar:
Una función es, o un trozo de código que quieres "encapsular", también llamado sub-rutina o sub-programa, o, como una función matemática, a la que tú le das unos valores de entrada y ella te da unos valores de salida.

En el primer caso, usar cout/cin o cualquier otro método de entrada o salida es totalmente válido (mientras sea coherente, claro, generelizar es complicado).
En el segundo caso, rara vez querrás hacer eso.

Tu ejemplo claramente es del "segundo tipo". Tú le das unos valores de entrada (a, b), y ella te da un valor de retorno que ella calcula (MCD). La forma de usar esa función es como dijo engel lex.

Imagínate que el MCD no lo quieres sacar por pantalla con cout, sino que quieres guardarlo en un archivo. Tendrías que modificar la función para lograrlo, mientras que haciendo que retorne el valor, sería tan simple como:
Código (cpp) [Seleccionar]
archivo << MCD(5,8);
U otro ejemplo:
Código (cpp) [Seleccionar]
int n = 50 / MCD(50, 25);
for(int i=0; i<n; i++){
    // ...
}