Alguien que sepa necesito ayuda!

Iniciado por elkiy, 19 Febrero 2013, 18:28 PM

0 Miembros y 2 Visitantes están viendo este tema.

elkiy

Pues me tira error y no lo puedo solucionar! quiero saber cual es el error aqui los codigos:

MAIN
Código (cpp) [Seleccionar]
#include "LibroCalificaciones.h"

int main()
{
LibroCalificaciones miLibroCalificaciones ("101 Programacion en c++");
miLibroCalificaciones.mostrarMensaje();
miLibroCalificaciones.determinarPromedioClase();
return 0;
}


LibroCalificaciones.cpp

Código (cpp) [Seleccionar]
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::fixed; // asegura que se muestre el punto decimal

#include <iomanip> // manipuladores de flujo parametrizados
using std::setprecision; // establece la precision numerica de salida

// incluye la definicion de la clase LibroCalificaciones de LibroCalificaciones.h
#include "LibroCalificaciones.h"

// el constructor inicializa a nombreCurso con la cadena que se sumistra como argumento

LibroCalificaciones::LibroCalificaciones(string nombre)
{
establecerNombreCurso(nombre); // valida y almacena nombreCurso
}

//funcion para establecer nombre del Curso
//asegura que el nombre del curso tenga cuando mucho 25 caracteres

void LibroCalificaciones::establecerNombreCurso (string nombre)
{
if (nombre.length() <= 25) // si tiene 25 caractere so menos
{
nombreCurso = nombre; // almacena el nombre del curso en el objeto
}
else // si el nombre es mayor de 25 caracteres
{
nombreCurso = nombre.substr (0 , 25); // seleciona los primeros 25 caracteres
cout << "el nombre \"" << nombre << "\" exede la longitud maxima (25).\n"
<< "se limito nombreCurso a los primeros 24 caracteres.\n" << endl;
} // fin de if ... else
} // fin de la funcion establecer NombreCurso

// funcion para obtener el nombre del curso
string LibroCalificaciones::obtenerNombreCurso()
{
return nombreCurso;
} // fin de la funcion obtenerNombreCurso

//muestra un mensaje de bienvenida al usuario de LibroCalificaciones
void LibroCalificaciones::mostrarMensaje()
{
cout << "Bienvenido al libro de calificaciones para\n" << obtenerNombreCurso() << "!\n"
<< endl;
} // fin de la funcion mostrarMensaje

//determina el promedio de la clase con base en las 10 calificaciones escritas por el usuario
void LibroCalificaciones::determinarPromedioClase()
{
int total; // suma de las calificaciones introducidad por el usuario
int contadorCalif; // numero de calificaciones introducidas
int calificacion; // valor de la calificacion
double promedio; // numero con punto decimal para el promedio

//fase de inicializacion
total = 0; // inicializa el total
contadorCalif = 0; // inicializa el contador del ciclo

//fase de procesamiento
//pide la entrada y lee la calificacion del usuario
cout << "Escriba la calificacion o -1 para salir: ";
cin >> calificacion; // recibe como entrada la calificacion o el valor centinela

//itera hasta leer el valor centinela del usuario
while ( calificacion != -1) // mientras calificacion no sea -1
{
total = total + calificacion; // suma la calificacion al total
contadorCalif = contadorCalif + 1; // incrementa el contador

//pide la entrada y lee la siguiente calificacion del usuario
cout << "Escriba la calificacion o -1 para salir: ";
cin >> calificacion; // recibe como entrada la calificacion o el valor centinela
} // fin de while

//fase de terminacion
if ( contadorCalif != 0) // si el usuario introdujo al menos una calificacion....
{
//calcula el promedio de todas las calificaciones introducidas
promedio = static_cast < double > (total) / contadorCalif;

//muestra el total y el promedio (con dos digitos de precision)
cout << "\nEl total de las " << contadorCalif << " calificaciones introducidas es "
<< total << endl;
cout << "El promedio de la clase es " << setprecision(2) << fixed << promedio
<< endl;
} // fin de if
else // no se introdujeron calificaciones , por lo que imprime el mensaje apropiado
cout << "No se introdujeron calificaciones" << endl;
} // fin de la funcion determinarPromedioClase


LibroCalificaciones.h

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

class LibroCalificaciones
{
public:
LibroCalificaciones(string); // el constructor inicializa el nombre del curso
void establecerNombreCurso (string); //funcion para establecer el nombre del curso
string obtenerNombreCurso (); //funcion para obtener el nombre del curso
void mostrarMensaje(); // muestra un mensaje de bienvenida
void determinarPromedioClase(); // promedia las calificaciones escritas por el usuario
private:
string nombreCurso(); // nombre del curso para este LibroCalificaciones
}; // fin de la clase LibroCalificaciones


ACA esta lo que me aparece en visual c++ 2010
Citar1>------ Operación Generar iniciada: proyecto: dellibro, configuración: Debug Win32 ------
1>  LibroCalificaciones.cpp
1>c:\documents and settings\administrador\mis documentos\visual studio 2010\projects\dellibro\dellibro\librocalificaciones.cpp(27): error C2659: '=' : función como operando izquierdo
1>c:\documents and settings\administrador\mis documentos\visual studio 2010\projects\dellibro\dellibro\librocalificaciones.cpp(31): error C2659: '=' : función como operando izquierdo
1>c:\documents and settings\administrador\mis documentos\visual studio 2010\projects\dellibro\dellibro\librocalificaciones.cpp(40): error C3867: 'LibroCalificaciones::nombreCurso': falta la lista de argumentos de la llamada a la función; utilice '&LibroCalificaciones::nombreCurso' para crear un puntero al miembro
1>c:\documents and settings\administrador\mis documentos\visual studio 2010\projects\dellibro\dellibro\librocalificaciones.cpp(40): error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(const std::basic_string<_Elem,_Traits,_Ax> &)' : no se puede convertir el parámetro 1 de 'std::string (__thiscall LibroCalificaciones::* )(void)' a 'const std::basic_string<_Elem,_Traits,_Ax> &'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>,
1>              _Ax=std::allocator<char>
1>          ]
1>          Razón: no se puede realizar la conversión de 'std::string (__thiscall LibroCalificaciones::* )(void)' a 'const std::basic_string<_Elem,_Traits,_Ax>'
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>,
1>              _Ax=std::allocator<char>
1>          ]
1>          Ningún constructor ha podido aceptar el tipo de origen o bien la resolución de sobrecarga del constructor era ambigua
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========

agradezco la ayuda, pues no puedo seguir estudiando pasando esto por arriba

Miky Gonzalez

¿Porque pones tantos comentarios? Me resulta ilegible. Ponlo entre GeSHI-C++
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:

EN CONSTRUCCIÓN

elkiy

Cita de: Miky Gonzalez en 19 Febrero 2013, 18:49 PM
¿Porque pones tantos comentarios? Me resulta ilegible. Ponlo entre GeSHI-C++

A este codigo lo copié tal cual está en el libro para no tener ningun error, pero me da el mismo error, el private :(

rir3760

El primer error es:
Citar1>c:\documents and settings\administrador\mis documentos\visual studio 2010\projects\dellibro\dellibro\librocalificaciones.cpp(27): error C2659: '=' : función como operando izquierdo
Y se debe a que declaras "nombreCurso" como una función:
Código (cpp) [Seleccionar]
private:
string nombreCurso();

Hay que quitar los paréntesis.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

elkiy

Cita de: rir3760 en 20 Febrero 2013, 02:34 AM
El primer error es:Y se debe a que declaras "nombreCurso" como una función:
Código (cpp) [Seleccionar]
private:
string nombreCurso();

Hay que quitar los paréntesis.

Un saludo

muchas gracias, lo he podido arreglar, es que en el libro que tengo tiene ese error, igual lo recomiendo porque esta muy bueno el libro: es de deitel sexta edición, como programar c++, mas introduccion a la programacion de juegos con ogre3d, lo recomiendo, desde ya nuevamente gracias  ;D