[Solucionado] Insertar función en codigo

Iniciado por tonilogar, 31 Mayo 2011, 12:58 PM

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

tonilogar

Este es el código de error que aparece, cuando intento añadir una función al código.

K:\programacion\c++\pepeluis03\pepeluisFuente.cpp||In function 'int main()':|
K:\programacion\c++\pepeluis03\pepeluisFuente.cpp|13|error: 'EntraDatos' was not declared in this scope|
||=== Build finished: 1 errors, 0 warnings ===|


Función que quiero añadir:
Código (cpp) [Seleccionar]

void EntraDatos()
{

//Variable de función
string fichero;

do
{
cout << "entra datos";
cout << endl<< endl;
getline (cin,fichero);

}
while (fichero.length()!=0);//Cuando fichero sea diferente a 0 sigue preguntando


[color=navy]He creado la función por separado con el fichero header:[/color]

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

void EntraDatos();

[color=navy]Con el fichero de las funciones.[/color]#

include <iostream>
#include <string>
#include <fstream>
#include <K:\programacion\c++\pepeluis03\pepeluis.h>
using namespace std;

void EntraDatos()
{
//Variable de función
string fichero;

do
{
cout << "entra datos";
cout << endl<< endl;
getline (cin,fichero);

}
while (fichero.length()!=0);//Cuando fichero sea diferente a 0 sigue preguntando

[color=navy]Y el fichero con la función main:[/color]


#include <iostream>
#include <string>
#include <fstream>
using namespace std;
#include <E:\usuaris\a.lopez.g\programacion\c++\pepeluis03\pepeluis.h>



int main()
{

EntraDatos();


cin.get();
return 0;
}


De esta forma la función me funciona "valga la redundancia" correctamente.

Pero cuando la inserto en este código me sale el error antes comentado.



Fichero Header:
//pepeluis.h


Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

string MenuPreguntas();

string ConversorImagenes();

string ImagenesTransformar();

void EntraDatos();

[color=navy]Fichero de funciones:
//pepeluis.cpp[/color]

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

//CUERPO DE FUNCION/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

string MenuPreguntas()
{
//VARIABLES DE FUNCION/////////////////////////////////////////////////////////////////////////
string Elegir;


   while (Elegir!="1" && Elegir!="2" && Elegir!="3" && Elegir!="4" && Elegir!="5" && Elegir!="q") {
cout << endl << endl;
       cout << "-----TRIAR SOFTWAREA A UTILITZAR" << endl << endl;
       cout << "1: Conversor d'imatges" << endl<< endl;
       cout << "2: Crear, tallar mosaics" << endl<< endl;
       cout << "3: Buscar, renombrar, copiar, esborrar, moure fitxers" << endl<< endl;
cout << "4: Mapa de diferencies" << endl<< endl;
cout << "5: Treballar amb canals" << endl<< endl;
cout << "Q: Sortir de l'aplicacio" << endl<< endl;
       cout << "Seleciona opcion :"<< endl<< endl;
       cin >> Elegir;
   if (Elegir == "Q") Elegir="q"; //Si la opcion elegida es Q(mayuscula) pasarla a q(minuscula).

else if (Elegir!="1" && Elegir!="2" && Elegir!="3" && Elegir!="4" && Elegir!="5" && Elegir!="q") cout << endl << "-----LA SELECCIO ES ERRONEA";
}
cout<< endl;
cout<< endl;
return Elegir;
}




//CUERPO DE FUNCION/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

string ConversorImagenes()
{
//VARIABLES DE FUNCION/////////////////////////////////////////////////////////////////////////
string Elegir;


   while (Elegir!="1" && Elegir!="2" && Elegir!="3"&&  Elegir!="a" && Elegir!="q") {
cout << endl << endl;
cout << "-----coversor .RF .TIF .JPG" << endl << endl;
       cout << "-----TRIAR OPCIO" << endl << endl;
       cout << "1: Seleccionar imatges" << endl<< endl;
       cout << "2: Seleccionar llistat d'imatges" << endl<< endl;
cout << "3: Seleccionar directori on es troben les imatges a transformar" << endl<< endl;
cout << "A: Tornar al menu anterior" << endl<< endl;
cout << "Q: Sortir de l'aplicacio" << endl<< endl;
       cout << "Seleciona opcion :"<< endl<< endl;
       cin >> Elegir;
   if (Elegir == "Q") Elegir="q"; //Si la opcion elegida es Q(mayuscula) pasarla a q(minuscula).
else if (Elegir == "A") Elegir="a"; //Si la opcion elegida es A(mayuscula) pasarla a a(minuscula).
else if (Elegir!="1" && Elegir!="2" && Elegir!="3" && Elegir!="a" && Elegir!="q") cout << endl << "-----LA SELECCIO ES ERRONEA";
}
cout<< endl;
cout<< endl;
return Elegir;
}



//CUERPO DE FUNCION/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
void EntraDatos()
{


//VARIABLES DE FUNCION/////////////////////////////////////////////////////////////////////////
string fichero;


do
{
cout << "entra datos";
cout << endl<< endl;
getline (cin,fichero);

}
while (fichero.length()!=0);

}


Fichero de la función main:

pepeluisFuente.cpp


Código (cpp) [Seleccionar]

#include <iostream>
#include <string>
#include <fstream>
#include <K:\programacion\c++\pepeluis02\pepeluis.h>
using namespace std;
string VariableMenuPreguntas;
string VariableConversorImagenes;



int main()
{
EntraDatos();
VariableMenuPreguntas=MenuPreguntas();

if (VariableMenuPreguntas == "1") VariableConversorImagenes=ConversorImagenes();
else if (VariableMenuPreguntas == "2") cout << "VariableMenuPreguntas 2";
else if (VariableMenuPreguntas == "3") cout << "VariableMenuPreguntas 3";
else if (VariableMenuPreguntas == "4") cout << "VariableMenuPreguntas 4";
else if (VariableMenuPreguntas == "5") cout << "VariableMenuPreguntas 5";



if (VariableConversorImagenes == "1") cout << "VariableConversorImagenes 1";
else if (VariableConversorImagenes == "2") cout << "VariableConversorImagenes 2";
else if (VariableConversorImagenes == "3") cout << "VariableConversorImagenes 3";
else if (VariableConversorImagenes == "4") cout << "VariableConversorImagenes 4";
else if (VariableConversorImagenes == "5") cout << "VariableConversorImagenes 5";
else if (VariableConversorImagenes == "a") cout << "VariableConversorImagenes a";


return 0;

}


He probado mil triquiñuelas y no se que es lo que pasa, según el error la función no está declarada ¿norrrrr?

Un saludo y gracias por vuestro tiempo.
No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.

Queta

#1
Antes de todo, veo que tienes los archivos .cpp y .h en diferentes carpetas y cosas por el estilo; sería bueno que los pusieras todos en una misma, así no tendrías que entrar toda la ruta y bueno, lógicamente, es un tema de organización y rapidez.

Tu error es simple: en el código principal incluyes el archivo de cabecera entre los signos <> y lo debes hacer entre comillas dobles (http://en.wikipedia.org/wiki/Header_file). Y ya como plus extra, no hace falta incluir las librerías en esta cabecera, solamente en los .cpp.
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

tonilogar

Gracias Queta, esta noche pruebo y comento.

Un saludo.
No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.

tonilogar

#3
Como decía Queta los includes al fichero de cabecera y al fichero de las definiciones de función, estaban mal.

A parte que algún que otro despropósito del código.

Aquí dejo el código con la funciona en su sitio.



Fichero header:
#ifndef PROYECTOBASE_HPP_INCLUDED//Codigo del editor code::blocks
#define PROYECTOBASE_HPP_INCLUDED//Codigo del editor code::blocks

//Declaracion de funciones
Código (cpp) [Seleccionar]

string MenuPreguntas();

string ConversorImagenes();

void EntraDatos();

#endif // PROYECTOBASE_HPP_INCLUDED//Codigo del editor code::blocks


Fichero definición de funciones
Código (cpp) [Seleccionar]

//CUERPO DE FUNCION/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

string MenuPreguntas()
{
//VARIABLES DE FUNCION/////////////////////////////////////////////////////////////////////////
string Elegir;


   while (Elegir!="1" && Elegir!="2" && Elegir!="3" && Elegir!="4" && Elegir!="5" && Elegir!="q") {
cout << endl << endl;
       cout << "-----TRIAR SOFTWAREA A UTILITZAR" << endl << endl;
       cout << "1: Conversor d'imatges" << endl<< endl;
       cout << "2: Crear, tallar mosaics" << endl<< endl;
       cout << "3: Buscar, renombrar, copiar, esborrar, moure fitxers" << endl<< endl;
cout << "4: Mapa de diferencies" << endl<< endl;
cout << "5: Treballar amb canals" << endl<< endl;
cout << "Q: Sortir de l'aplicacio" << endl<< endl;
       cout << "Seleciona opcion :"<< endl<< endl;
       cin >> Elegir;
   if (Elegir == "Q") Elegir="q"; //Si la opcion elegida es Q(mayuscula) pasarla a q(minuscula).

else if (Elegir!="1" && Elegir!="2" && Elegir!="3" && Elegir!="4" && Elegir!="5" && Elegir!="q") cout << endl << "-----LA SELECCIO ES ERRONEA";
}
cout<< endl;
cout<< endl;
return Elegir;
}

//CUERPO DE FUNCION/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

string ConversorImagenes()
{
//VARIABLES DE FUNCION/////////////////////////////////////////////////////////////////////////
string Elegir;


   while (Elegir!="1" && Elegir!="2" && Elegir!="3"&&  Elegir!="a" && Elegir!="q") {
cout << endl << endl;
cout << "-----coversor .RF .TIF .JPG" << endl << endl;
       cout << "-----TRIAR OPCIO" << endl << endl;
       cout << "1: Seleccionar imatges" << endl<< endl;
       cout << "2: Seleccionar llistat d'imatges" << endl<< endl;
cout << "3: Seleccionar directori on es troben les imatges a transformar" << endl<< endl;
cout << "A: Tornar al menu anterior" << endl<< endl;
cout << "Q: Sortir de l'aplicacio" << endl<< endl;
       cout << "Seleciona opcion :"<< endl<< endl;
       cin >> Elegir;
   if (Elegir == "Q") Elegir="q"; //Si la opcion elegida es Q(mayuscula) pasarla a q(minuscula).
else if (Elegir == "A") Elegir="a"; //Si la opcion elegida es A(mayuscula) pasarla a a(minuscula).
else if (Elegir!="1" && Elegir!="2" && Elegir!="3" && Elegir!="a" && Elegir!="q") cout << endl << "-----LA SELECCIO ES ERRONEA";
}
cout<< endl;
cout<< endl;
return Elegir;
}



//CUERPO DE FUNCION/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
void EntraDatos()
{


//VARIABLES DE FUNCION/////////////////////////////////////////////////////////////////////////
string fichero;


do
{
cout << "entra datos";
cout << endl<< endl;
getline (cin,fichero);

}
while (fichero.length()!=0);
cout << endl<< endl;
cout << fichero;
}


Fichero main
Código (cpp) [Seleccionar]

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
#include "ProyectoBase.hpp"//Fichero header
#include "ProyectoBase.cpp" //Fichero de funciones

//Variables
string VariableMenuPreguntas;
string VariableConversorImagenes;

int main()
{
   VariableMenuPreguntas=MenuPreguntas();

if (VariableMenuPreguntas == "1") VariableConversorImagenes=ConversorImagenes();
else if (VariableMenuPreguntas == "2") cout << "VariableMenuPreguntas 2";
else if (VariableMenuPreguntas == "3") cout << "VariableMenuPreguntas 3";
else if (VariableMenuPreguntas == "4") cout << "VariableMenuPreguntas 4";
else if (VariableMenuPreguntas == "5") cout << "VariableMenuPreguntas 5";

if (VariableConversorImagenes == "1") EntraDatos();
else if (VariableConversorImagenes == "2") cout << "VariableConversorImagenes 2";
else if (VariableConversorImagenes == "3") cout << "VariableConversorImagenes 3";
else if (VariableConversorImagenes == "4") cout << "VariableConversorImagenes 4";
else if (VariableConversorImagenes == "5") cout << "VariableConversorImagenes 5";

   cin.get();
   return 0;

Y ahora a seguir con el programática.

Gracias por vuestro tiempo y ayuda.


No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.

tonilogar

#4
Pues de nuevo con el getline.

La ultima función "void ImagenEntrada();".

Lo único que hace es pedir que entre datos y cuando tecleo return  sale del while.
Probando en un fichero separado va perfecto.

Código (cpp) [Seleccionar]

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main()
{
string fichero;


do
{
cout << "entra datos";
cout << endl<< endl;
getline (cin,fichero);

}
while (fichero.length()!=0);


cin.get();
return 0;
}


Pero a la que lo adjunto en un fichero con mas código.

Cuando entro el primer dato me echa del programa.

Por lo que leído el buffer del cin se queda con algún dato, y tengo que borrar el buffer.
¿me equivoco?

Lo he intentado con flush, ignore, cleaner etc pero no logro dar con el código correcto.

Estoy equivocado y no tiene que ver el buffer de cin.

Aquí dejo el código.



Fichero header:
Código (cpp) [Seleccionar]

#ifndef PROYECTOBASE_HPP_INCLUDED//Codigo del editor code::blocks
#define PROYECTOBASE_HPP_INCLUDED//Codigo del editor code::blocks

//Declaracion de funciones

string MenuPreguntas();

string ConversorImagenes();

void EntraDatos();

#endif // PROYECTOBASE_HPP_INCLUDED//Codigo del editor code::blocks


Fichero definición de funciones
Código (cpp) [Seleccionar]

//CUERPO DE FUNCION/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

string MenuPreguntas()
{
//VARIABLES DE FUNCION/////////////////////////////////////////////////////////////////////////
string Elegir;


   while (Elegir!="1" && Elegir!="2" && Elegir!="3" && Elegir!="4" && Elegir!="5" && Elegir!="q") {
     cout << endl << endl;
       cout << "-----TRIAR SOFTWAREA A UTILITZAR" << endl << endl;
       cout << "1: Conversor d'imatges" << endl<< endl;
       cout << "2: Crear, tallar mosaics" << endl<< endl;
       cout << "3: Buscar, renombrar, copiar, esborrar, moure fitxers" << endl<< endl;
     cout << "4: Mapa de diferencies" << endl<< endl;
     cout << "5: Treballar amb canals" << endl<< endl;
     cout << "Q: Sortir de l'aplicacio" << endl<< endl;
       cout << "Seleciona opcion :"<< endl<< endl;
       cin >> Elegir;
      if (Elegir == "Q") Elegir="q"; //Si la opcion elegida es Q(mayuscula) pasarla a q(minuscula).

     else if (Elegir!="1" && Elegir!="2" && Elegir!="3" && Elegir!="4" && Elegir!="5" && Elegir!="q") cout << endl << "-----LA SELECCIO ES ERRONEA";
}
  cout<< endl;
  cout<< endl;
  return Elegir;
}

//CUERPO DE FUNCION/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////

string ConversorImagenes()
{
//VARIABLES DE FUNCION/////////////////////////////////////////////////////////////////////////
string Elegir;


   while (Elegir!="1" && Elegir!="2" && Elegir!="3"&&  Elegir!="a" && Elegir!="q") {
     cout << endl << endl;
     cout << "-----coversor .RF .TIF .JPG" << endl << endl;
       cout << "-----TRIAR OPCIO" << endl << endl;
       cout << "1: Seleccionar imatges" << endl<< endl;
       cout << "2: Seleccionar llistat d'imatges" << endl<< endl;
     cout << "3: Seleccionar directori on es troben les imatges a transformar" << endl<< endl;
     cout << "A: Tornar al menu anterior" << endl<< endl;
     cout << "Q: Sortir de l'aplicacio" << endl<< endl;
       cout << "Seleciona opcion :"<< endl<< endl;
       cin >> Elegir;
      if (Elegir == "Q") Elegir="q"; //Si la opcion elegida es Q(mayuscula) pasarla a q(minuscula).
     else if (Elegir == "A") Elegir="a"; //Si la opcion elegida es A(mayuscula) pasarla a a(minuscula).
     else if (Elegir!="1" && Elegir!="2" && Elegir!="3" && Elegir!="a" && Elegir!="q") cout << endl << "-----LA SELECCIO ES ERRONEA";
}
  cout<< endl;
  cout<< endl;
  return Elegir;
}



//CUERPO DE FUNCION/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
void EntraDatos()
{


//VARIABLES DE FUNCION/////////////////////////////////////////////////////////////////////////
string fichero;


do
{
cout << "entra datos";
cout << endl<< endl;
getline (cin,fichero);

}
while (fichero.length()!=0);
cout << endl<< endl;
cout << fichero;
}

Fichero main
Código (cpp) [Seleccionar]

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
#include "ProyectoBase.hpp"//Fichero header
#include "ProyectoBase.cpp" //Fichero de funciones

//Variables
string VariableMenuPreguntas;
string VariableConversorImagenes;

int main()
{
   VariableMenuPreguntas=MenuPreguntas();

if (VariableMenuPreguntas == "1") VariableConversorImagenes=ConversorImagenes();
else if (VariableMenuPreguntas == "2") cout << "VariableMenuPreguntas 2";
else if (VariableMenuPreguntas == "3") cout << "VariableMenuPreguntas 3";
else if (VariableMenuPreguntas == "4") cout << "VariableMenuPreguntas 4";
else if (VariableMenuPreguntas == "5") cout << "VariableMenuPreguntas 5";

if (VariableConversorImagenes == "1") EntraDatos();
else if (VariableConversorImagenes == "2") cout << "VariableConversorImagenes 2";
else if (VariableConversorImagenes == "3") cout << "VariableConversorImagenes 3";
else if (VariableConversorImagenes == "4") cout << "VariableConversorImagenes 4";
else if (VariableConversorImagenes == "5") cout << "VariableConversorImagenes 5";

   cin.get();
   return 0;


Un saludo y gracias por vuestro tiempo.
No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.

tonilogar

#5
Arreglado.
Mira que era sencillo.
Poco a poco


Código (cpp) [Seleccionar]

/CUERPO DE FUNCION/////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
void ImagenEntrada()
{
std::cin.ignore();

//VARIABLES DE FUNCION/////////////////////////////////////////////////////////////////////////
string fichero;


do
{
cout << "entra datos";
cout << endl<< endl;
getline (cin,fichero);

}
while (fichero.length()!=0);

}

Un saludo a todos
No porque discrepe de tu opinión intento ofenderte.

Un saludo a todos y gracias por vuestro tiempo.