|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - jpastor
Páginas: [1]
1
« en: Lunes 22 de Abril de 2002, 15:47 »
Bueno, en realidad yo acabe diciendo que si tiene sentido. Aca va un ejemplo:
int ArrayDeEnteros[] = {1, 2, 3, 2, 1}; int iNumElementos = sizeof (ArrayDeEnteros);
De lo otro no tengo mucha idea, solo decir que la declaracion de ArrayDeEnteros que he hecho reserva una zona de memoria determinada en tiempo de compilacion por lo que luego no puede variar.
Un puntero como:
BYTE *pArray = (BYTE *)malloc(40);
se comporta como un array pudiendo acceder a cada elemento con el operador [].
2
« en: Viernes 12 de Abril de 2002, 21:05 »
Bueno, me paso por aqui antes de irme a casa para corregir la gilipollez que dije ayer.
Si tenemos un array como el siguiente:
int datos[40];
podemos saber la memoria total que ocupa con:
sizeof (datos);
por lo que el numero de elementos seria:
sizeof (datos)/sizeof(int);
Por cierto olla, la pregunta no es tan absurda y lo comentado de sizeof se usa de vez en cuando.
3
« en: Jueves 11 de Abril de 2002, 16:23 »
Errr, me acabo de acordar de que si te da ese fallo cuando usas allegro en Windows no es por lo de la librerias.
Tienes que poner:
END_OF_MAIN();
despues de la función main. Esta macro incluira en tu codigo la funcion WinMain y la captura de los argumentos en el formato que usa tu función main.
4
« en: Jueves 11 de Abril de 2002, 16:02 »
Supongamos un tipo de datos como el siguiente (y dos datos de ese tipo): typedef struct { int numero; char cadena[80]; } mi_estructura; mi_estructura uno, dos;
La cosa se hace igual que con dos enteros o con dos cadenas por separado, accediendo a: uno.numero y dos.numerouno.cadena y dos.cadena
5
« en: Jueves 11 de Abril de 2002, 15:56 »
Como ha dicho olla al ser estaticos lo defines tu y es de ahi por donde lo puedes saber.
Por otro lado, además de esto no hay forma de saberlo directamente.
Si quieres poder trabajar con arrays sin tener que ir llevando controlado en tamaño a todas partes, podrías meterle un valor especial en el ultimo elemento.
6
« en: Jueves 11 de Abril de 2002, 15:48 »
Bueno, por lo que parece a simple vista están intentando compilar una aplicación nativa windows sin haber definido el tipico WinMain. (Es como no poner función main en un programa C para dos).
¿Estás intentando hacer algo con Allegro? Si es asi, creo que te falta indicarle al compilador que enlace la libreria (osea, el .LIB).
7
« en: Martes 26 de Marzo de 2002, 18:42 »
pregunta! pregunta! a ver si podemos ayudar.
8
« en: Viernes 22 de Marzo de 2002, 20:14 »
Pues primero necesitaras saber como están los datos almacenados en el fichero y sobre todo el tipo de datos que son. Suponiendo que sean tres enteros y el fichero de texto tenga la forma: 1 50 -10
El programa podría ser: int dat1, dat2, dat3; FILE *fichero; fichero = fopen ("archivo.txt", "r"); fscanf (fichero, "%d %d %d", &dat1, &dat2, &dat3);
9
« en: Viernes 22 de Febrero de 2002, 16:11 »
¿Alguien conoce algunas páginas (en castellano) dedicadas a la programación de un juegos de ajedrez?
Gracias.
10
« en: Viernes 22 de Febrero de 2002, 15:49 »
Si estas pensando que me pase con el tamaño (100) de numero_str tienes razón, ningun número dentro de rango tiene tantos dígitos. Es solo la costumbre.
11
« en: Viernes 22 de Febrero de 2002, 15:44 »
ok amigos, me acorde de una forma muy rápida y sencilla de hacerlo:
char numero_str[100]; int numero = 12345;
sprintf (numero_str, "%d", numero);
12
« en: Jueves 21 de Febrero de 2002, 14:09 »
ahh, otra cosa, lo de que t=a no se puede hacer es verdad, aunque no es fallo de rafael.
El puso t=a[ i] pero el sistema de foros lo interpreta como el inicio de la letra cursiva y no lo escribe.
13
« en: Jueves 21 de Febrero de 2002, 14:04 »
Hola de nuevo tenesor, lo de que x sea un array (en el segundo ejemplo que pusistes) es necesarior porque un char simple solo sirve para almacenar un caracter y tu necesitas obtener una cadena de caracteres.
La funcion scanf ("%s", x); te guarda cada caracter de la cadena que le metas en cada posicion de x: x[0] x[1] ...
En cuanto a reservar memoria tambien es necesario. Puede que cuando lo compiles y ejecutes no te de problema pero aun asi no esta bien. y[0] y[1] ... se almacenaran a la memoria donde apunte *y. Y si no reservas la memoria puede que este siendo ocupada por otros datos importantes o que otros datos la utilicen mas tarde y te borren lo que tienes.
14
« en: Miércoles 20 de Febrero de 2002, 21:35 »
Lo único que he visto es esto:
mens=ecriptacion(&mens);
mens es un puntero por lo que no tienes que poner el operador &. Además el retorno de la funcion en un char y no un puntero a char.
15
« en: Miércoles 20 de Febrero de 2002, 17:46 »
OK, como lo cuentas es muy simple: ----------------------------------------- int x; // Donde se almacenara el numero int y[4]; // El array que almacenara las 5 cifras (0,1,2,3,4) int cont; // Una variable contador para el bucle
printf("Introduce un entero de 5 cifras: "); scanf("%i",x); // Guardamos el numero en 'x'
lo correcto si queremos obtener el número sería: scanf ("%i", &x); do{ // Aqui el bucle culpable de todo:) y[cont]=x; // guardamos 'x' en la variable 'cont' del array. La primera vez que entra, cont = 0, por lo tanto y[0] cont++; // Luego le sumamos uno a 'cont' y empezamos de nuevo }while(cont != 4); // a no ser que lleguemos a 4 (Quinta cifra)
¿todos lo elementos de y no sería iguales y de valor x? Por supuesto, esto funciona si sabes que te han metido 5 cifras o menos (si te meten 4 la 5ª = 0...)
Si quieres controlarlo mejor, deberias hacer esto: -----------------------------------------
char x,*y;
hay que definir x como un array: char x[80]; por ejemplo. int cont, numlon;
printf("Introduce un numero: "); scanf("%s",x);
numlon = strlen(x);
tienes que reservar la memoria que quieres para y: y = (char *)malloc(sizeof(char) * numlon); do{ y[cont] = x; cont ++; }while(cont != numlon);
creo que tendria que ser: y[cont] = x[cont]; [Modificado el 2/20/02 por jpastor]
16
« en: Lunes 18 de Febrero de 2002, 21:34 »
siempre puedes usar una variable para saber en cada momento el tamaño del arreglo, y pasarsela a la funcion como argumento.
o incluso usar el primer elemento (vector[0]) para almacenar el tamaño en vez de un valor ... aunque reconozco q no se lo he visto hacer a nadie creo que lenguajes como modula2 usan algo parecido
17
« en: Lunes 18 de Febrero de 2002, 15:54 »
La función rand devuelve un numero aleatorio solo en parte, ya que realmente es imposible predecir el numero que saldrá, pero siempre saldra el mismo.
Para solucionar el problema tienes que usar la funcion srand que sirve para indicar una semilla que luego se utilizara para crear los numero.
Si llamamos a srand con alguna variable como el tiempo (antes de intentar obtener un numero con rand) obtendrás numero totalmente aleatorios:
srand (time(NULL));
18
« en: Lunes 18 de Febrero de 2002, 15:49 »
El codigo está bien, pero es que el tamaño de un vector no se puede saber.
19
« en: Viernes 15 de Febrero de 2002, 16:49 »
Las clases de C++ son como las estructuras en C pero con algunas propiedades y usos que las hacen bastante superiores. C++ se basa en el uso de clases y en cualquier manual/libro/loquesea encontrarás como se usan.
Los punteros son muy importantes para la creación de cualquier programa. Si quieres usar memoria dinamicamente por ejemplo tendrás que usarlos. Al principio son algo "molesto" pero cuando les coges el truco los usaras para todo.
Las listas enlazadas son estructuras dinamicas de dados. Te permiten tener una lista de objetos con la que trabajar flexiblemente. Borrar o añadir un elemento en cualquier posición y el número de elementos que tienen puede ser variable, por lo que son más flexibles que los arrays. Los punteros son imprescindibles para poder hacer listas.
Páginas: [1]
|
|
|