Comunidad PHPeros
Lenguajes => C / C++ => Mensaje iniciado por: G2K en 11 de Noviembre de 2007, 22:45:56 pm
-
Bueno pues nada... veo que nadie se interesa en hacer ningún pequeño codigo... puede que sea porque no saben interpretar mi manual? bueno pues os dejo un ejemplo de una simple suma:
#include <iostream.h>
void main()
{
float numero1,numero2,resultado;
cout<<"Dime un numero a sumar\n";
cin>>numero1;
cout<<"\nDime otro numero a sumar\n";
cin>>numero2;
resultado=numero1+numero2;
cout<<"La suma de "<<numero1<<" y "<<numero2<<" es igual a "<<resultado;
}
-
Yo estoy haciendo un "juego" basado en tiles en vc++.
Contiene DirectX (DirectDraw en particular) y ahora estoy investigando para que tenga DirectDraw y Direct3D y asi agilizar el proceso.
Cuando avance un poco mas, seguro que cae un tutorial.
Saludos
-
Perfecto ;)
-
G2K a ver... mmm
como compilo ese programa?
yo uso el Dev-C++ y no se que tengo que hacer con ese codigo, lo entiendo pero no se compilarlo.
-
Dev-C++ tengo entendido que es parecido al Turbo C++
Yo lo que hago en el Turbo C++ es guardar el CPP en algun directorio y le doy al "rayo" (el simbolo de la barra superior) y si no hay ningún error o advertencia se crea los .obj (OBJETOS) y el .exe (EJECUTABLE) y automaticamente se abre solo el .exe ;)
-
Pero que tipo es? Window Aplication, Console,...?
-
Naveda, sino me equivoco es de tipo console.
En el main.cpp pones ese codigo, y luego pulsas F9 (Generar y ejecutar) Y como su nombre indica, lo compilara y lo ejecutara.
Saludos!
-
2 C:\Dev-Cpp\include\c++\3.4.2\backward\iostream.h:31, from main.cpp In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31, from main.cpp
32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
5 C:\Documents and Settings\Naveda\main.cpp `main' must return `int'
C:\Documents and Settings\Naveda\Makefile.win [Build Error] [main.o] Error 1
Ya me direis porque no me compila...!
-
Ni idea... a mi en el Turbo C++ no me da ningun problema
-
Depende mucho de el compilador utilizado, pero bueno, naveda tu primer error puede deberse a que tu libreria iostream.h esta anticuada o corrupta, buscando en google seguro que encuentras otra, que debes poner en C:/DevCpp/Includes
El segundo error es solo una warning, asi que no hay problema, y el tercer error, como he dicho, depende del compilador utilizado.
La funcion main, normalmente es de tipo int. En una funcion, sea cual sea, el tipo de la funcion tiene que coincidir con el resultado que la funcion va a retornar. En la funcion main de g2k, no retorna ningun caracter (void significa indefinido, o que no retornara nada) y por eso te da error, pero claro, todo esto dependiendo de los compiladores.
Prueba a cambiar void main, por int main, y añade return 1; al final de la funcion, y ese error deberia desaparecer.
Un saludo
-
Gracias TLX ya ha compilado y ejecutado aunque sigue mostrando unos errores sin importancia ;)
Ya puedo decir que he compilado un programa C jajaja
-
jajajaj ;)
-
Ey hola gente, hace tiempo que no estoy por aquí, quería decir que el codigo no te compilo naveda porque creo que deberias quitar el ".h" del include de iostream, yo lo haria asi
#include <iostream>
int main()
{
float numero1, numero2, resultado;
cout << "Dime un numero a sumar\n";
cin >> numero1;
cout << "\nDime otro numero a sumar\n";
cin >> numero2;
resultado = numero1 + numero2;
cout <<"La suma de " << numero1 << " y " << numero2 << " es igual a " << resultado << endl;
return 0;
}
Siempre he oido que el main debe ser de tipo int pero no se, asi lo haria yo!
Un saludo!
Nota: Porque no se me colorea el codigo?
-
Exacto, el tipo debe ser int, puesto que siempre returna 0, o 1. (Mirad el return 0;)
Y ahora que caigo es muy posible que no le funcionara por el .h, pues es cierto, creo que es sin .h
No se te colorea porque la funcion Code no esta hecha para codigo C++, sino para codigo HTML y tal.
Saludos
-
Me imagine que no se colorease por eso, pero entonces G2K lo coloreo a mano? ;D
jeje!!
-
Lo coloreo con la opcion de colorear PHP.
Saludos
-
Exacto ;)
-
Ah ok jeje!! Yo tambien pondre algun ejemplo por aquí para ir aprendiendo poco a poco C++!!
-
Una vez compilado el archivo, no me lo abre. ???
-
Si lo estas compilando con el dev-cpp, si te fijas ahi un boton para "compilar", otro para "ejecutar", y otro para "compilar y ejecutar", o puedes ir directamente al archivo creado que tiene formato .exe y ejecutarlo, ten en cuenta que el ejemplo no tiene ninguna instruccion para que se pare, por lo tanto una vez introduzcas los dos numeros se mostrara el resultado pero no te dara tiempo de verlo ya que se cerrara el programa, puedes ejecutarlo por la terminal o poner al final system("PAUSE") (creo que era asi). un saludo
-
Bueno os voy a poner el mismo ejemplo de la suma en c, pero orientado a objetos. Primero debemos crear un archivo con la extension .h que sera donde estará la definicion de la clase:
suma.h
#ifndef SUMA_H
#define SUMA_H
#include <iostream>
using namespace std;
class Suma
{
private:
int _Valor1;
int _Valor2;
int _Resultado;
public:
Suma();
void FijarValores(int valor1, int valor2);
void FijarResultado(int resultado);
int ObtenerValor1() const;
int ObtenerValor2() const;
int ObtenerResultado() const;
void Sumar();
};
#endif
Ahora debemos crear un archivo .c que contendra la implementacion y el programa principal.
suma.c
#include <iostream>
#include "suma.h"
using namespace std;
Suma::Suma() {}
void Suma::FijarValores(int valor1, int valor2) {
_Valor1 = valor1;
_Valor2 = valor2;
}
void Suma::FijarResultado(int resultado) {
_Resultado = resultado;
}
int Suma::ObtenerValor1() const {
return _Valor1;
}
int Suma::ObtenerValor2() const {
return _Valor2;
}
int Suma::ObtenerResultado() const {
return _Resultado;
}
void Suma::Sumar() {
int resultado = ObtenerValor1() + ObtenerValor2();
FijarResultado(resultado);
}
int main() {
cout << "Sumar dos numeros" << endl;
cout << "Valor 1: ";
int v1;
cin >> v1;
cout << "Valor 2: ";
int v2;
cin >> v2;
Suma S;
S.FijarValores(v1, v2);
S.Sumar();
cout << "Resultado de la suma: " << S.ObtenerResultado() << endl;
return 0;
}
Si alguien no entiende algo que lo pregunte que yo contestare ;)
-
podrías explicar el código :P
-
Si C-ChacK explicalo paso a paso si no es mucho pedir ;)
-
Esta orientado a objetos pero usas algunas funciones innecesarios, muchas innecesarias.
Poniendo como public Valor1 y Valor2, sera mucho mas facil obtener los datos y modificarlos, y solo se necesitaria una funcion constructura, una para obtener el resultado y ya esta.
Saludos
-
Bueno aquí pongo el código explicado:
suma.h
#ifndef SUMA_H // Definimos el archivo .h
#define SUMA_H
#include <iostream> // Incluimos la libreria iostream
using namespace std; // Usamos las rutinas estandar, ej: cout, endl...
class Suma // Definimos la clase Suma
{
private: // Atributos privados de la clase
int _Valor1; // Variable de tipo entero que almacena el valor del primer numero
int _Valor2; // Variable de tipo entero que almacena el valor del segundo numero
int _Resultado; // Variable de tipo entero que almacena el valor del resultado
public: // Metodos de la clase
Suma(); // Constructor por defecto
void FijarValores(int valor1, int valor2); // Funcion que se encarga de fijar los valores de los valores a sumar
void FijarResultado(int resultado); // Funcion que se encarga de fijar el resultado final
int ObtenerValor1() const; // Funcion que devuelve el valor1
int ObtenerValor2() const; // Funcion que devuelve el valor2
int ObtenerResultado() const; // Funcion que devuelve el resultado
void Sumar(); // Funcion que suma los dos valores
};
#endif // Cerramos la definicion de la clase
suma.c
#include <iostream>
// Incluimos la definicion de nuestra clase, en este caso la clase Suma
#include "suma.h"
using namespace std;
// Constructor por defecto
Suma::Suma() {
FijarValores(0, 0); // Inicializamos a 0
FijarResultado(0); // inicializamos a 0
}
// Funcion a la que se le pasa por parametro los valores 1 y 2 para fijarlos en los atributos privados
void Suma::FijarValores(int valor1, int valor2) {
_Valor1 = valor1;
_Valor2 = valor2;
}
// Funcion a la que se le pasa por parametro el valor del resultado para fijarlo en el atributo privado
void Suma::FijarResultado(int resultado) {
_Resultado = resultado;
}
// Funcion que devuelve el valor1
// Es una funcion constante porque no vamos a modificar el valor
int Suma::ObtenerValor1() const {
return _Valor1;
}
// Funcion que devuelve el valor2
// Es una funcion constante porque no vamos a modificar el valor
int Suma::ObtenerValor2() const {
return _Valor2;
}
// Funcion que devuelve el resultado
// Es una funcion constante porque no vamos a modificar el valor del resultado
int Suma::ObtenerResultado() const {
return _Resultado;
}
// Funcion que suma los dos valores y los asigna en una variable creada dentro de la funcion
// Luego fijamos el resultado en el atributo privado
void Suma::Sumar() {
int resultado = ObtenerValor1() + ObtenerValor2();
FijarResultado(resultado);
}
// Programa principal de tipo entero (int) que devuelve un cero (return 0)
int main() {
cout << "Sumar dos numeros" << endl;
cout << "Valor 1: ";
int v1; // Definimos una variable para el primer resultado
cin >> v1; // Le asignamos el valor 1;
cout << "Valor 2: ";
int v2; // Definimos una variable para el primer resultado
cin >> v2; // Le asignamos el valor 2;
Suma S; // Creamos un objeto de la clase Suma
S.FijarValores(v1, v2); // Fijamos los valores
S.Sumar(); // Llamada a la funcion para sumar
cout << "Resultado de la suma: " << S.ObtenerResultado() << endl; // Mostramos el resultado
return 0;
}
Claramente se podria hacer todo con una funcion constructora, pero cuando haya que hacer una programa mucho mas grande tan solo con la funcion del constructor no se podra hacer, lo he hecho asi para hacernos una idea de como funciona la programacion orientada a objetos y poco a poco ir desarrollando programas mas grandes. ;)
-
Solo un apunte...
#ifndef SUMA_H
Eso en realidad lo que hace es comprobar si esta definido SUMA_H, y si no lo esta, ejecuta el codigo entre eso y #endif.
Como entre #ifndef y #endif defines SUMA_H con #define SUMA_H, consigues que este archivo solo se incluya una vez en todo el documento, evitando las mismas definiciones una y otra vez, que devuelven tantos errores.
Tu codigo esta muy bien, es bueno empezar a usar la POO :P
Saludos!
-
Si tienes razon TLX pero supe explicarme, jeje! Al fin y al cabo la mayoria de aplicaciones estan orientadas a objetos por no decir todas!! Poco a poco pondre algun ejemplo sencillo de POO (Programación Orientada a Objetos). ;)
-
C-ChacK para reconocer tu esfuerzo te doy un karma+ y espero ese tuto de POO :P
Saludos
-
Gracias! Se agradece el karma, la verdad que ultimamente no estoy mucho por aquí, estoy liado con las clases y eso pero bueno siempre hay algun momento para escribir algo jeje!! Un saludo!
-
jeje no hay de que ;)
Tu tranquilo... tomate tu tiempo... además esta semana me voy a ausentar de manera considerable... tengo los examenes trimestrales con el temario desde setiembre hasta ahora de todas las asignaturas :S
-
Jajaja pues suerte, si yo tambien tengo examen, y entrega de practicas todas las semanas jeje!!