Ir al contenido

publicidad
publicidad

Foto

Aprender a programar c++ dudas sobre la marcha


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
29 respuestas en este tema

    srg_nightmare

  • EXPULSADO
  • vida restante: 0%
  • Registrado: 24 abr 2008
  • Mensajes: 3.112
#16

Escrito 27 agosto 2009 - 14:53

Me puede alguien explicar que hace el getch() ??

Saludos

  • davidlie

  • TERRESTRIS VERITAS

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 26.266
#17

Escrito 27 agosto 2009 - 14:54

te venia con intencion de ayudarte pero es que yo con el printf me lio mucho,. no se por que la gente no usa cout que es mucho mas sencillo

[code:1]#include

using namespace std;

int main()
{
int a, b, c;
float x;
a = 1;
b = 5;
c = 2;
x = (b*b) - (4*a*c) / 2 * a;
printf("x vale %f\n", x);
return 0;
}[/code]


seria asi

y cuidado con los parentesis, no se como lo qurras hacer pero ten en cuenta que hay primero hace la division seria...

5*5 - (4*1*2) /2*1

25 -8/2 *1
25 -4 *1

21

y creo que lo que quieres hacer es

(5*5 - (4*1*2)) /(2*1)
si me equivoco y querias hacer lo otro lo siento XD

por parentesis que no falte

Era lo segundo que has dicho de la ecuacion, gracias por corregirme, encuanto al error me sigue saliendo, pero es que el compilador que uso me da bastantes fallos, creo que voy a buscar mas

Gracias a todos por molestaros en responderme

Y una duda, para hacer que te salga el texto centrado con printf como se hace??

Graias


añade un system("pause"); al final antes del return 0
en algunos compiladores no hace falta pero ponlo

----------------------------------------------------------------------------- Imagen Enviada

entra en el clan de ps3 last unit assault, todos los juegos disponibles, si no esta create tu clan LUA(recien empezamos) pinchen aqui



    srg_nightmare

  • EXPULSADO
  • vida restante: 0%
  • Registrado: 24 abr 2008
  • Mensajes: 3.112
#18

Escrito 31 agosto 2009 - 14:47

Hola, tengo una pequeña duda, ayer encontre en un codigo (lo colgare mas tarde si eso)
En el que se creaba una enumeracion, y al poner printfusaba %ld, y he estado uscando pero google es muy limitado cuando pones caracteres especiales (tambien probe entre comillas)

Asi que me gustaria, si alguien es tan amable, que me explique los distintos tipos de "%"

Muchas graciasy un cordial saludo

#19

Escrito 31 agosto 2009 - 21:48

Los especificadores de formato tienen la siguiente forma:

% [flags] [width] [prec] [F|N|h|l|L] type_char

Todos empiezan por el símbolo del porcentaje %

[flags] : es opcional, incluye la justificación de la salida, signos numéricos, puntos decimales, ceros de relleno, prefijos octales y hexadecimales.

[width]: es opcional, incluye el número mínimo de caracteres a imprimir, rellenos con espacios en blanco o ceros.

[prec]: es opcional, incluye el número máximo de caracteres a imprimir, para los enteros será el mínimo número de dígitos a imprimir.

[F|N|h|l|L] : opcional, modificador del tamaño de la entrada. Sobreescribe el tamaño por defecto del siguiente argumento de la entrada.
N = near pointer
F = far pointer
h = short int
l = long
L = long double

type_char : (necesario) son los siguientes:

[code:1]Numéricos:
d Integer signed decimal integer
i Integer signed decimal integer
o Integer unsigned octal integer
u Integer unsigned decimal integer
x Integer unsigned hexadecimal int (with a, b, c, d, e, f)
X Integer unsigned hexadecimal int (with A, B, C, D, E, F)
f Floating point signed value of the form [-]dddd.dddd.
e Floating point signed value of the form [-]d.dddd or e[+/-]ddd
g Floating point signed value in either e or f form, based on given value and precision. Trailing zeros and the decimal point are printed if necessary.
E Floating point Same as e; with E for exponent.
G Floating point Same as g; with E for exponent if e format used

Caracteres:
c Character Single character
s String pointer Prints characters until a null-terminator is pressed or precision is reached
% None Prints the % character

Punteros
n Pointer to int Stores (in the location pointed to by the input argument) a count of the chars written so far.
p Pointer Prints the input argument as a pointer; format depends on which memory model was used. It will be either XXXX:YYYY or YYYY (offset only).[/code]

    srg_nightmare

  • EXPULSADO
  • vida restante: 0%
  • Registrado: 24 abr 2008
  • Mensajes: 3.112
#20

Escrito 31 agosto 2009 - 23:48

Ya pero es que a ver la cosa es que en printf he visto "%ld" "%tb" y "%tc" y queria saber significaban

Pero tu respuesta tambien me ayuda

Gracias ;)

#21

Escrito 01 septiembre 2009 - 14:35

%tb y %tc creo que sirven para formatos de fechas. Los he encontrado en código fuente de Java, no se si tendrán el mismo uso en C.

    srg_nightmare

  • EXPULSADO
  • vida restante: 0%
  • Registrado: 24 abr 2008
  • Mensajes: 3.112
#22

Escrito 04 septiembre 2009 - 12:50

es que el printf es un follo tio, tengo la sensacion de que hay mil %x, asi que eso lo dejo aparcado

Una duda en los prototipos de funciones, si yo escribo convertir(int c), luego a la hora de llamar a la funcion podria escribir convertir(int gecent)??

Gracias

#23

Escrito 04 septiembre 2009 - 22:01

Si haces lo siguiente:

[code:1]#include
#include

int convertir(int c);
float gecent;
int dato;

int main()
{
gecent = 2.4;
dato = convertir( int gecent);
printf("%d", dato);
getch();
}

int convertir(int c)
{
dato = c;
}[/code]

Te dará error.

Puedes probar a ver qué pasa si pones convertir( (int) gecent ).

    srg_nightmare

  • EXPULSADO
  • vida restante: 0%
  • Registrado: 24 abr 2008
  • Mensajes: 3.112
#24

Escrito 08 septiembre 2009 - 14:01

Hola a todos de nuevo, pues vereis, sigo teniendo algunas dudas sobre los prototipos de funciones, y voy a intentar plasmarlas con este ejemplo

[code:1]
#include "stdio.h"

double sumar(double, double);
double restar(double, double);

main()
{
double op1 = 225, op2 = 100, resultado = 0;

// Suma
resultado = sumar(op1, op2);
printf("Suma = %g\n", resultado);

// Resta
resultado = restar(op1, op2);
printf("Resta = %g\n", resultado);
}

double sumar(double x, double y)
{
double z;
z = x + y;
return z;
}

double restar(double x, double y)
{
double z;
z = x - y;
return z;
}
[/code]

Al principio pone dos double dentro del parentesis, tanto en la opcion de sumar como en la de restar, pero lo que no acabo de entender, es si esto tambien trabaja dentro del main o no(que estoy casi seguro que si por los op1, op2)
Otra cosa es si, al cerrar el main, los double x, double y, estan conectados con el primer prototipo de funcion

Seguro que son chorradas pero no veais que quebraderos medan

Ah y una ultima cosa, las definiciones de los prototipos pueden tener distintos nombres a estos??

Muchas gracias de verdad

Saludos

#25

Escrito 08 septiembre 2009 - 14:25

Buenas!

por lo que se, esos primeros prototipos de funciones solo tienen (double, double) para comprobar el prototipo. (Digamos que es como declarar de alguna manera la funcion)

la funcion en si esta creada abajo.

Dentro de main lo unico que haces es llamar a las funciones y pasarles los datos que quieras para que devuelva el resultado.

No se si me he explicado bien, pero al igual que tu estoy aprendiendo muy poquito a poco C++

¡Nos vemos!

#26

Escrito 08 septiembre 2009 - 14:30

Puf, creo que tienes un cacao mental de los grandes con los prototipos. A ver si comentandote el codigo lo entiendes mas o menos


[code:1]
double sumar(double, double);
double restar(double, double);[/code]
Estas dos lienas son los prototipos de las funciones. Indican al compilador que van a existir dos funciones, una llamada "sumar" y otra "restar" que aceptan como argumentos dos doubles y devuleven otro double.

Por que se hace esto? Por que en el main vas a usar estas funciones, y como aun no las tienes definidas, sino que estan al fondo del todo, el compilador daria error y no te dejaria compilar porque no encontraria funciones que coincidiesen con esos nombres

[code:1]main()
{
double op1 = 225, op2 = 100, resultado = 0;

// Suma
resultado = sumar(op1, op2);
printf("Suma = %g\n", resultado);

// Resta
resultado = restar(op1, op2);
printf("Resta = %g\n", resultado);
}
[/code]

Este es el main propiamente dicho. Simplemente define 3 variables. op1, op2 y resultado.
En resultado guarda el resultado de sumar primero y lo muestra por pantalla, y luego el resultado de restar. Como parametros de las funciones restar y sumar le pasa op1 y op2

[code:1]double sumar(double x, double y)
{
double z;
z = x + y;
return z;
}

double restar(double x, double y)
{
double z;
z = x - y;
return z;
} [/code]
Las funciones en si. Aqui es donde las implementas. Al principio de todo has dicho que iban a existir dos dunciones llamads restar y sumar. Pues es aqui donde estan.


Lo que se suele hacer en C++ es crear 3 archivos: uno con los prototipos de funciones y clases, (miprograma.h), otro con las implementaciones (miprograma.cpp) y otro con el main (main.cpp)

De esta forma si que tendria sentido separar la implementacion de los prototipos.

Si tienes mas dudas, pregunta
Un saludo

    srg_nightmare

  • EXPULSADO
  • vida restante: 0%
  • Registrado: 24 abr 2008
  • Mensajes: 3.112
#27

Escrito 08 septiembre 2009 - 16:48

y el compilador sabe que op1 es x y op2 y??

#28

Escrito 08 septiembre 2009 - 17:09

y el compilador sabe que op1 es x y op2 y??


Si, porque en el main, llamas a la funcion como


[code:1] resultado = sumar(op1, op2); [/code]

Entonces le estas diciendo que op1 es X y op2 es Y.
Si quieres restar op2 - op1, tendrias que llamar a la funcion en el main asi

[code:1]resultado = restar(op2, op1);[/code]
Ahora X seria op2 e Y seria op1

    srg_nightmare

  • EXPULSADO
  • vida restante: 0%
  • Registrado: 24 abr 2008
  • Mensajes: 3.112
#29

Escrito 08 septiembre 2009 - 18:40

te quiero mucho, pero que mucho mucho mucho

  • jonaSoft

  • Fledgling

  • vida restante: 100%
  • Registrado: 09 oct 2009
  • Mensajes: 55
#30

Escrito 09 octubre 2009 - 20:12


El mejor sin duda es begging c++ game programing

http://www.megaupload.com/?d=RTDFHPKU


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad
publicidad