[ Foro de C++ ]

funcion para sumar

27-Aug-2013 17:36
juan carlos rebate
7 Respuestas

buenas, tras descubrir que no se puede hacer compilacion cruzada con pascal y dado que tu portal no tiene curso desde cero con c++ he buscado y encontrado un libro que supuestamente enseña desde cero, pero este libro debe estar mal ya que el ejercicio 1 esta mal, copio el codigo tal cual esta en la pagina 12 del libro y da 2 errores, dudo que sea error aproposito, no se si tu sistema php acepta las etiquetas code pero aqui pongo el codigo tal cual esta en el libro


#include <iostream>
int suma(int primero, int segundo);
{
	std::cout <<"has coloado" <<primero <<" y" << segundo <<"\n";
	return(primero + segundo);
}
int main()
{
	using std::cout;
	using std::cin;
	cout << "escribe dos numeros\n";
	int a,b,c;
	cin >> a;
	cin >> b;
	c=suma(a,b);
	cout << "el resultado es" << c;
	cout << "\n";
	return 0;
}


mingw se empeña en decir que se esperaba sin reservas { pero { ya esta colocado, visual c se empeña en decirme que se esperaba una declaracion pero esa declaracion ya esta hecha segun el libro luego dice que no se encontro el identificador, pero ya esta indicado, que solucion hy con esto?


27-Aug-2013 18:19
Nacho Cabanes (+84)

Cuatro cosas... ;-)

Por un parte, me parece buena idea lo de pasarte a C++ en cuanto empieces a hacer proyectos serios. Hoy en día, es un lenguaje con mucho más mercado y mucho más aplicable que Pascal.

Por otra parte, sí se permiten etiquetas "code" para que la sintaxis se vea en colores y se use tipo de letra de ancho fijo. Las etiquetas reservadas del sistema (que son pocas) se indican entre corchetes. La apariencia, pero usando corchetes ([ y ]) en vez de llaves, sería:

{code cpp}
(... tu fuente ...)
{/code}

(insisto, entre corchetes cuadrados, no llaves).

En tercer lugar, tengo un curso de C++ para gente que conoce C, pero claro, las órdenes de entrada y salida de C++ son distintas de las de C, con lo que si empiezas con C, notarás diferencias desde los primeros ejemplos. He empezado a crear uno de C++ que sí parte desde cero (aunque es menos exhaustivo que el de C y el de C#), a petición de algún ex-alumno mío, pero no lo he hecho público aún. Si quieres, lo puedo ir poniendo aquí, y así tú ganas el tener un segundo sitio desde el que aprender y yo gano un betatester que me avise en caso de que el curso tenga algún fallo. ;-)

En cuarto lugar, no he llegado a "copiar y pegar" tu fuente para probarlo: en un primer vistazo, me temo que coincido con mingw, porque sobra el "punto y coma" de la segunda línea: si una declaración de función termina en "punto y coma", estás diciendo que no vas a dar los detalles en ese momento, y entonces le desconcertará que pongas una llave a continuación.


27-Aug-2013 19:00
Nacho Cabanes (+84)

Confirmado: en la línea 3 (la de la primera llave) da el error:

sumas.cpp:3:1: error: expected unqualified-id before ?{? token

Si quitas el "punto y coma" del final de la línea 2, compilará correctamente.  ;-)


27-Aug-2013 20:35
juan carlos rebate

si quito la ; de esa linea el compilador no sabra que ahi termina la linea eso es legal? osea la linea en donde indico <code cpp> cout <<"has colocado" << primero <<"y" <<segundo;</code>


27-Aug-2013 20:39
Nacho Cabanes (+84)

Te estás complicando: simplemente es que la segunda línea debe ser


int suma(int primero, int segundo)


en vez de


int suma(int primero, int segundo);


(sobra el "punto y coma" del final, porque sí estás dando todos los detalles de cómo es la función).


27-Aug-2013 20:40
juan carlos rebate

y si seria excelente que publicases tu curso


27-Aug-2013 21:02
juan carlos rebate

confirmado compila perfecto osea que las funciones nunca usan ; al final de los () apesar de que el libro diga que si, mejor espero a tu curso y gracias por salvarme me volvia ya loco


28-Aug-2013 11:54
Nacho Cabanes (+84)

No es tan sencillo (en C++ casi nada es tan sencillo como parece).

Si añades un punto y coma después de los paréntesis, estás diciendo "esta función existe, pero ya te daré los detalles más adelante" (y en ese caso, no debería haber llaves con el cuerpo de la función). Por el contrario, si en vez del punto y coma, abres una llave, se da por sentado que es que en ese punto es donde vas realmente a declarar la función.

Por cierto, puedes ir echando un vistazo a esto:

http://www.aprendeaprogramar.com/course/view.php?id=27






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)