Comunidad PHPeros

Lenguajes => C / C++ => Mensaje iniciado por: G2K en 11 de Noviembre de 2007, 22:45:56 pm

Título: Simple suma en c
Publicado 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;
}
Título: Re: Simple suma en c
Publicado por: CarlosRdrz en 12 de Noviembre de 2007, 07:04:11 am
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
Título: Re: Simple suma en c
Publicado por: G2K en 12 de Noviembre de 2007, 09:37:39 am
Perfecto ;)
Título: Re: Simple suma en c
Publicado por: naveda en 12 de Noviembre de 2007, 16:03:47 pm
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.
Título: Re: Simple suma en c
Publicado por: G2K en 12 de Noviembre de 2007, 16:07:29 pm
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 ;)
Título: Re: Simple suma en c
Publicado por: naveda en 12 de Noviembre de 2007, 16:09:39 pm
Pero que tipo es? Window Aplication, Console,...?
Título: Re: Simple suma en c
Publicado por: CarlosRdrz en 12 de Noviembre de 2007, 16:11:05 pm
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!
Título: Re: Simple suma en c
Publicado por: naveda en 12 de Noviembre de 2007, 16:16:01 pm
Citar
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...!
Título: Re: Simple suma en c
Publicado por: G2K en 12 de Noviembre de 2007, 16:18:06 pm
Ni idea... a mi en el Turbo C++ no me da ningun problema
Título: Re: Simple suma en c
Publicado por: CarlosRdrz en 12 de Noviembre de 2007, 16:34:58 pm
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
Título: Re: Simple suma en c
Publicado por: naveda en 12 de Noviembre de 2007, 16:44:28 pm
Gracias TLX ya ha compilado y ejecutado aunque sigue mostrando unos errores sin importancia ;)
Ya puedo decir que he compilado un programa C jajaja
Título: Re: Simple suma en c
Publicado por: G2K en 12 de Noviembre de 2007, 17:09:11 pm
jajajaj ;)
Título: Re: Simple suma en c
Publicado por: C-ChacK en 19 de Noviembre de 2007, 12:43:24 pm
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
Código: [Seleccionar]
#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?
Título: Re: Simple suma en c
Publicado por: CarlosRdrz en 19 de Noviembre de 2007, 15:35:37 pm
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
Título: Re: Simple suma en c
Publicado por: C-ChacK en 19 de Noviembre de 2007, 18:23:27 pm
Me imagine que no se colorease por eso, pero entonces G2K lo coloreo a mano?  ;D
jeje!!
Título: Re: Simple suma en c
Publicado por: CarlosRdrz en 19 de Noviembre de 2007, 23:24:19 pm
Lo coloreo con la opcion de colorear PHP.
Saludos
Título: Re: Simple suma en c
Publicado por: G2K en 20 de Noviembre de 2007, 09:27:46 am
Exacto ;)
Título: Re: Simple suma en c
Publicado por: C-ChacK en 20 de Noviembre de 2007, 18:23:33 pm
Ah ok jeje!! Yo tambien pondre algun ejemplo por aquí para ir aprendiendo poco a poco C++!!
Título: Re: Simple suma en c
Publicado por: devesa en 21 de Noviembre de 2007, 20:35:35 pm
Una vez compilado el archivo, no me lo abre. ???
Título: Re: Simple suma en c
Publicado por: C-ChacK en 22 de Noviembre de 2007, 16:47:45 pm
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
Título: Re: Simple suma en c (Orientada a objetos)
Publicado por: C-ChacK en 23 de Noviembre de 2007, 20:38:02 pm
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
Código: [Seleccionar]
#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
Código: [Seleccionar]
#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  ;)
Título: Re: Simple suma en c
Publicado por: Revancha en 23 de Noviembre de 2007, 21:43:04 pm
podrías explicar el código :P
Título: Re: Simple suma en c
Publicado por: G2K en 23 de Noviembre de 2007, 23:51:35 pm
Si C-ChacK explicalo paso a paso si no es mucho pedir ;)
Título: Re: Simple suma en c
Publicado por: CarlosRdrz en 24 de Noviembre de 2007, 11:49:38 am
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
Título: Re: Simple suma en c
Publicado por: C-ChacK en 24 de Noviembre de 2007, 16:16:13 pm
Bueno aquí pongo el código explicado:

suma.h
Código: [Seleccionar]
#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
Código: [Seleccionar]
#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.  ;)
Título: Re: Simple suma en c
Publicado por: CarlosRdrz en 24 de Noviembre de 2007, 23:22:48 pm
Solo un apunte...
Código: [Seleccionar]
#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!
Título: Re: Simple suma en c
Publicado por: C-ChacK en 25 de Noviembre de 2007, 19:20:37 pm
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).  ;)
Título: Re: Simple suma en c
Publicado por: G2K en 25 de Noviembre de 2007, 20:26:46 pm
C-ChacK para reconocer tu esfuerzo te doy un karma+ y espero ese tuto de POO :P

Saludos
Título: Re: Simple suma en c
Publicado por: C-ChacK en 25 de Noviembre de 2007, 20:39:43 pm
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!
Título: Re: Simple suma en c
Publicado por: G2K en 26 de Noviembre de 2007, 00:02:22 am
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
Título: Re: Simple suma en c
Publicado por: C-ChacK en 26 de Noviembre de 2007, 11:56:51 am
Jajaja pues suerte, si yo tambien tengo examen, y entrega de practicas todas las semanas jeje!!