Vous êtes sur la page 1sur 23

COLEGIO NACIONAL DE EDUCACIN

PROFESIONAL TCNICA
J.REFUGIO ESPARZA REYES

Programacin Orientada a Objetos


TEMA: ARCHIVOS DE DATOS.

Alumna: Diana Stephanie Vzquez Morales.


Especialidad: Profesional Tcnico Bachiller en
Informtica.
GRUPO: 409

TURNO: Matutino.

Maestra: Yolanda Catalina Navarrete Beas.

Aguascalientes, Ags.
Lunes 13 de marzo del 2017.
NDICE:
1. Instrucciones para crear archivos de datos..........3
a) Secuenciales.
b)Directos.
2. A, B Y C..6
3. Guardar y Crear Estructuras en un archivo9
a) Crear.
b)Guardar.
4. Libreras y Otros comandos y tablas de Dev C+
+.14
5. Ejemplo de nmeros aleatorios en Dev C++
..20
6. Referencias22
Instrucciones para crear archivos de datos
a) Secuenciales:
DEFINICIN: La forma ms comn de estructura de archivo es
el archivo secuencial. En este tipo de archivo, un formato fijo
es usado para los registros. Todos los registros tienen el
mismo tamao, constan del mismo nmero de campos de
tamao fijo en un orden particular. Como se conocen la
longitud y la posicin de cada campo, solamente los valores
de los campos se necesitan almacenarse; el nombre del
campo y longitud de cada campo son atributos de la
estructura de archivos.

EJEMPLO:
Declaras una variable
01 L pic 9999.
Apertura.
Open input a-cliente.
CABEZERA.
display spaces line 1 position 1 erase.
display "dNI nombre apellido direccion " line 1 position 1.
MOVE 2 TO L.
Leer. read a-cliente next at end go fin.
IF L > 25 DISPLAY "SIGUIENTE PAGINA" LINE 24 POSITION 1
ACCEPT L LINE 24 POSITION 40
PERFORM CABEZERA.
Display dni line L POSITION 1.
DISPLAY NOM LINE L POSITION 15.
DISPLAY APE1 LINE L POSITION 30.
DISPLAY DIR LINE L POSITION 50.
ADD 1 TO L.
GO LEER.
FIN.CLOSE A-CLIENTE.
EXIT PROGRAM.

B) DIRECTOS:
DEFINICIN: Los datos se colocan y se acceden
aleatoriamente mediante su posicin, es decir, indicando el
lugar relativo que ocupan dentro del conjunto de posiciones
posibles. En esta organizacin se pueden leer y escribir
registros, en cualquier orden y en cualquier lugar.
Inconvenientes: a) Establecer la relacin entre la posicin que
ocupa un registro y su contenido; b) Puede desaprovecharse
parte del espacio destinado al archivo. Ventaja: Rapidez de
acceso a un registro cualquiera.

EJEMPLO Y EXPLICACIN:

Este trozo de cdigo hace justamente eso mismo con nuestro


fichero informtico de la base de datos. Suponemos que el
fichero de nuestra agenda ya est abierto y los tipos de datos
definidos.

numeros = (LOF(1) / LEN(registro))


OPEN "Agenda.tmp" FOR RANDOM AS #2 LEN = LEN(registro)
n1 = 1
n2 = 1
WHILE n1 <= numregS
GET #1, n1, registro
IF registro.nombre <> SPACE$(LEN(registro.nombre)) OR
registro.edad <> 0 THEN
PUT #2, n2, registro
n2 = n2 + 1
END IF
n1 = n1 + 1
WEND

CLOSE

KILL "Agenda.dat"
NAME "Agenda.tmp" AS "Agenda.dat"

OPEN "Agenda.dat" FOR RANDOM AS #1 LEN = LEN(registro)


'Seguimos con el programa...

Vamos a ver como funciona esto:


Lo primero que hacemos, como siempre, es calcular el
nmero de registros que tiene el fichero para saber hasta
dnde podemos llegar.

A continuacin abrimos un fichero llamado "Agenda.tmp"


(La extensin .tmp significa "temporal") y le asignamos
el descriptor #2. Este fichero debe ser abierto con la
misma estructura que el otro y suponemos que no existe
y se crea uno nuevo y vaco al abrirlo.

Antes de entrar en el bucle inicializamos dos contadores


al valor 1, uno nos va a servir para recorrer el fichero
viejo y otro para recorrer el nuevo. Empezamos por 1 que
es el primer registro.

Ahora usamos un bucle "Mientras" para recorrer el


fichero viejo desde el principio hasta el final. Dentro de
este bucle leemos cada registro y si no est
completamente vaco lo copiamos al nuevo fichero e
incrementamos ambos contadores. Si est vaco no
hacemos nada y solo incrementamos el primer contador
para poder seguir recorriendo el fichero viejo.

Para comprobar si el registro est completamente vaco


habr que usar una expresin condicional que puede
llegar a ser muy larga porque hay que comprobar cada
dato miembro. En nuestro ejemplo esta expresin
aparece ocupando dos lneas, pero si la escribes en
QBasic tendr que ser toda seguida en la misma lnea,
aunque sea muy larga. QBasic soporta lneas de hasta
256 caracteres de larga, si sigue sin caber tendrs que
cambiar los nombres de las variables por otros ms
cortos, aunque en esta ocasin sean menos descriptivos.

Una vez que salimos del bucle tendremos el fichero


"Agenda.dat" tal como estaba y el nuevo "Agenda.tmp"
compactado solo con los datos que nos interesan.
Para proceder al intercambio de los nombres de los
ficheros y quedarnos solo con el nuevo podemos seguir
estos pasos

o Cerrar los dos ficheros, usando la orden CLOSE sin


descriptor.

o Borrar "Agenda.dat" usando la orden KILL, que


veremos con detalle ms adelante.

o Cambiarle el nombre a "Agenda.tmp" por


"Agenda.dat" usando la orden NAME, que tambin
veremos en prximos temas.

o Volver a abrir "Agenda.dat" con el descriptor #1


para seguir trabajando con l normalmente desde el
resto del programa.

Esta operacin de mantenimiento la tendr que ejecutar el


usuario de vez en cuando, especialmente despus de haber
borrado muchos registros. En programas mucho ms
sofisticados se podra hacer que se ejecute cada x das o tras
haber borrado un determinado nmero de registros.

A, B Y C
Crear, leer, actualizar y eliminar
En la programacin informtica , crear, leer, actualizar y
eliminar (como un acrnimo CRUD ) son las cuatro funciones
bsicas de almacenamiento persistente . palabras alternativas
se utilizan a veces en la definicin de las cuatro funciones
bsicas de ABM , recuperar en lugar de lectura , modificar en
lugar de la actualizacin , o destruir en lugar
de borrar . ABM tambin se utiliza a veces para describir la
interfaz de usuario convenciones que facilitan la visualizacin,
bsqueda, y el cambio de la informacin ; usando a menudo
basados en computadoras formas y reportes . El trmino fue
popularizado por primera probable James Martin en su libro de
1983 La gestin del entorno de datos-base . El acrnimo se
puede extender a CRUDL para cubrir la lista de grandes
conjuntos de datos que aportan complejidad adicional,
como la paginacin cuando los conjuntos de datos son
demasiado grandes para sostener fcilmente en la memoria.
Otras variaciones de CRUD incluyen pan (Navegar, leer,
editar, aadir, borrar), MADS (modificar, aadir, borrar,
mostrar) y Dave (borrar, aadir, ver, editar).

Aplicaciones de bases de datos


El acrnimo CRUD se refiere a todas las funciones principales
que se implementan en bases de datos
relacionales aplicaciones . Cada letra de la sigla puede asignar
a un estndar SQL declaracin, mtodo HTTP (esto
normalmente se utiliza para construir las API REST [5] )
o DDS operacin:
Operacin SQL HTTP DDS

Crear INSERTAR PUT / POSTAL escribir

Leer SELECCIONA OBTENER leer y /


(Recuperar R o tome
)

Actualizaci ACTUALIZAR PUT / POSTAL / PARC escribir


n HE
(Modificar)

Eliminar BORRAR BORRAR dispone


(destruir) r
La comparacin de las operaciones CRUD base de datos
orientados a HTTP mtodos tiene algunos defectos. En sentido
estricto, tanto PUT y POST puede crear recursos; La diferencia
clave es que la POST se deja para el servidor para decidir en
qu URI para hacer que el nuevo recurso disponible, en tanto
PUT dicta lo URI de usar; URI son, por supuesto, un concepto
que en realidad no se alinea con CRUD. El punto significativo
sobre PUT es que va a sustituir a cualquier recurso de la URI
se refiere al anteriormente con una nueva versin, por lo
tanto, el mtodo PUT se encuentra a la actualizacin
tambin. PUT es una operacin "reemplazar", que se podra
argumentar que no es 'actualizar'.
Aunque una base de datos relacional proporciona un
comn capa de persistencia en aplicaciones de software,
existen numerosas otras capas de persistencia. Funcionalidad
de CRUD puede implementarse con una base de datos de
objeto , una base de datos XML , archivos de texto plano ,
formatos de archivos personalizados, cinta o tarjeta, por
ejemplo.

Interfaz de usuario
ABM tambin es relevante a nivel de interfaz de usuario de la
mayora de las aplicaciones. Por ejemplo, en la libreta de
direcciones de software, la unidad bsica de almacenamiento
es una persona de contacto de entrada . Como mnimo, el
software debe permitir que el usuario

Crear o aadir nuevas entradas

Leer, recuperar, buscar o ver las entradas existentes

Actualizar o editar entradas existentes

Eliminar / desactivar / eliminar entradas existentes


Sin al menos estas cuatro operaciones, el software no puede
considerarse completa. Debido a que estas operaciones son
tan fundamentales, que son a menudo descritos y
documentados en una sola partida integral, como "gestin de
contactos", "gestin de contenidos" o "el mantenimiento de
contactos" (o "gestin de documentos" en general, en funcin
de la unidad de almacenamiento bsico para la aplicacin
particular).

En informtica, CRUD es el acrnimo de "Crear, Leer,


Actualizar y Borrar" (del original en ingls: Create, Read,
Update and Delete), que se usa para referirse a las funciones
bsicas en bases de datos o la capa de persistencia en
un software.
En algunos lugares, se utilizan las siglas ABM para lo mismo
("Alta, Baja y Modificacin"), obviando la operacin de
"obtener"; el acrnimo ABC para "Altas, Bajas y
Cambios"; ABML siendo la ltima letra (L) de "listar, listado o
lectura"; ABMC siendo la 'C' de "Consulta"; o bien CLAB que
sera la traduccin literal del acrnimo ("Crear, Leer,
Actualizar y Borrar").
Tambin es usado el ABCDEF: "Agregar, Buscar, Cambiar,
Desplegar (listar), Eliminar, Fichar (Ficha, cdula o Reporte de
un registro)".

Guardar y Crear Estructuras en un archivo


a) Crear:

1 #include<iostream>
2 using namespace std;
3 struct contacto{
4 int edad;
5 int numero;
6 char nombre[30];
7 };
8 int main()
9 {
1 struct contacto Amigo;
0cout << "Ingrese Nombre: ";
1 cin >> Amigo.nombre;
1 cout << "Ingrese Edad: ";
1 cin >> Amigo.edad;
2 cout << "Ingrese Numero: ";
1 cin >> Amigo.numero;
3cout << "\nNombre: " << Amigo.nombre << "\nEdad: " << Amigo.edad << "\nNumero de Telefono: " << Amigo.numero << end
1 return 0;
4}
1
5
1
6
1
7
1
8
1
9

b) Guardar:

Para empezar, la estructura carrera contiene datos de texto y


binarios (numricos), por lo que no podrs almacenarlos en
un fichero de texto normal, a no ser que los conviertas.
Eso se hace, efectivamente, usando la funcin fprintf, pero lo
ests haciendo mal.
int fprintf(FILE *stream, const char *formato, ...);
El primer argumento es un fichero, el segundo es una cadena
de formato, y a continuacin van los valores para rellenar la
cadena de formato.
Adems para almacenar 100 valores necesitars una llamada
a fprintf para cada valor.
Podra ser algo as:
int x;
for(x=0; x < 100; x++) {
fprintf(o, "%s %s %d %d %d", C[x].Clave, C[x].Nombre,
C[x].Plan, C[x].Semestres,
C[x].Creditos);
}

Por otra parte, por los parmetros que usas en tu ejemplo,


sospecho que lo que quieres es usar un fichero binario, y
almacenar y leer los datos todos juntos.
En ese caso, necesitas crear un fichero binario. Al menos, en
Windows es necesario usar la letra 'b' al hacer esto:
o = fopen(ofilename, "wb");
Y se usan las funciones fwrite y fread para escribir y leer,
respectivamente.
size_t fwrite(const void *puntero, size_t tamanyo, size_t
nmemb, FILE *stream);
size_t fread(void *puntero, size_t tamanyo, size_t nmemb,
FILE *stream);

La lectura de 100 elementos de C quedara as:


fwrite(C, 100, sizeof(carrera), o);

Guardar en archivo estructura c/memoria reservada con


malloc

Lo que estoy tratando de hacer en general es un archivo


compuesto de una estructura cuyos registros son de largo
variable, para ello, le hago un malloc() mediante puntero, a la
estructura temporal del programa que se ve ah abajo, e
ingreso los datos. El problema surge cuando yo trato de
guardar los datos a archivo, ya que no s si efectivamente se
guardaron, lo anterior se responde al querer intentar revisar el
contenido mediante un programa alternativo.

Este es el programa para guardar los datos:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct stCrimeArchive {
char id_student[10];
int id_document;
char judgement[30];
int id_crime;
char date[12];
char id_police[12];
};

int main()
{
struct stCrimeArchive *regi;
FILE *filea;
filea = fopen("crimearchives.dat", "r+b");
if(!filea)
filea = fopen("crimearchives.dat", "w+b");

int i;
char num[6];

regi = (struct stCrimeArchive*)malloc (sizeof(struct stCrimeArchive));

printf("ID DOCUMENT: ");


fgets(num, 6, stdin);
regi->id_document= atoi(num);

printf("ID STUDENT: ");


fgets(regi->id_student, 30, stdin);
for(i = strlen(regi->id_student)-1; i && regi->id_student[i] < ' '; i--)
regi->id_student[i] = 0;

printf("CRIME CODE: ");


fgets(num, 6, stdin);
regi->id_crime = atoi(num);

printf("DATE OF THE CRIME: ");


fgets(regi->date, 30, stdin);
for(i = strlen(regi->date)-1; i && regi->date[i] < ' '; i--)
regi->date[i] = 0;

printf("ID POLICE: ");


fgets(regi->id_police, 30, stdin);
for(i = strlen(regi->id_police)-1; i && regi->id_police[i] < ' '; i--)
regi->id_police[i] = 0;

printf("JUDGEMENT: ");
fgets(regi->judgement, 30, stdin);
for(i = strlen(regi->judgement)-1; i && regi->judgement[i] < ' '; i--)
regi->judgement[i] = 0;

fseek(filea, 0, SEEK_END);
fwrite(&regi, sizeof(*regi), 1, filea);

free(regi);
fclose(filea);
}
Y este es el programa para querer revisar los datos :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct stCrimeArchive {
char id_student[10];
int id_document;
char judgement[30];
int id_crime;
char date[12];
char id_police[12];
};

int main()
{
struct stCrimeArchive *regi;
// regi = (struct stCrimeArchive*)malloc (sizeof(struct
stCrimeArchive));
FILE *filea;
filea = fopen("crimearchives.dat", "r+b");
if(!filea)
filea = fopen("crimearchives.dat", "w+b");
rewind(filea);
while (fread(&regi, sizeof(struct stCrimeArchive), 1, filea))
printf("%2d %-11s %-11s %8d %-13s %-14s\n", regi->id_document,
regi->id_police, regi->date, regi->id_crime, regi->id_student, regi-
>judgement);
fclose(filea);
}

Libreras y Otros comandos y tablas de Dev C++.

Palabras reservadas en lenguaje C


Las palabras reservadas tienen un significado especial
para el compilador y representan una instruccin
propia de su lenguaje, no se pueden utilizar para
identificar variables y se escriben siempre en
minsculas.

Palabra auto bool break case catch


s
reserva
das en
lenguaj
e C asm
char class const const_ca continue default
st
delete do double dynamic_ else enum
cast
explicit extern false float for friend
goto if inline int long mutable
namespa new operator private protecte public
ce d
register reinterpr return short signed sizeof
et_cast
static static_ca struct switch template This
st
throw true try typedef typeid Typenam
e
union unsigned using while void Volatile

Libreras en lenguaje C
Las libreras o archivos de cabecera en lenguaje C, son los que
contienen o almacenan funciones que realizan operaciones y
clculos de uso frecuente y son parte de cada compilador. El
programador debe invocar todos aquellos archivos o
bibliotecas que necesite. A continuacin algunas libreras ms
comunes en el lenguaje C.

#include<stdio.h>: contiene los prototipos de las funciones,


macros, y tipos para manipular datos de entrada y salida.

Archivos que utiliza la librera <stdio.h>


clearerr fclose feof ferror fflush fgetc fgetpos
fgets fopen formato fprintf fputc fputs fread
freopen fscanf fseek fsetpos ftell fwrite getc
getchar gets perror printf putc putchar puts
remove rename rewind scanf setbuf setybuf sprintf
sscanf tmpfile tmpna ungetc vfprintf vprintf vsprintf
m

#include<stdlib.h>: contiene tipos, macros y funciones


para la conversin numrica, generacin de nmeros
aleatorios, bsquedas y ordenacin, gestin de memoria y
tareas similares.

Archivos que utiliza la librera < stdlib.h >


abort abs atexit atof atoi atol bsearc abort
h
calloc div exit free getenv labs ldiv calloc
malloc mblen mbsto mbtow qsort rand Reallo malloc
wcs c c
srand strtod strtol strtoul system wcto srand
mb
En la librera #include<stdlib.h>, existe la funcin system(color
f1) que se utiliza mucho para cambiar el color de fondo y el de
color de la fuente.

Colores de fondo y fuente que utiliza la librera <stdlib.h>


Colores de fondo Colores de fuente
0 negro a verde claro
1 azul b aguamarina claro
2 verde c rojo claro
3 aguamarina d purpura claro
4 rojo e amarillo claro
5 purpura f blanco brillante
6 amarillo
7 blanco
8 gris
9 azul claro
Con la funcin system(pause) se utiliza para pausar un
programa una vez est corriendo y reemplaza a la funcin getch()
de la librera #include<conio.h>. Ambas hacen lo mismo y se
colocan la final antes de cerrar el programa principal.

#include<string.h>: contiene los prototipos de las funciones y


macros de clasificacin de caracteres.

Archivos que utiliza la librera < string.h >


memc memc memc memm mems strcat strchr memc
hr mp py ove et hr
strcmp strcoll strcpy strcspn strerro strlen strmca strcmp
r t
strmc strmcp strpbrk strrchr strspn strstr strtok strmc
mp y mp
strxfrm strxfrm

#include<ctype.h>: contiene varias funciones para


comprobacin de tipos y transformacin de caracteres .

toupper instruccin que convierte a mayscula por ejemplo [ s-


>S ]

Archivos que utiliza la librera < ctype.h >


tolowe toupp
r er

#include<math.h>: contiene los prototipos de las funciones y


otras definiciones para el uso y manipulacin de funciones
matemticas.

Archivos que utiliza la librera < math.h >


Acos Asin atan atan2 ceil cos cosh
Exp Fabs floor fmod frexp ldexp log
log10 modf pow sin sinh sqrt tan
tanh

#include<time.h>: contiene los prototipos de las funciones,


macros, y tipos para manipular la hora y la fecha del sistema.

Archivos que utiliza la librera < time.h >

asctime clock ctime difftime Gmtime localtim mktime


e
strftime time
#include<conio.h>: contiene los prototipos de las funciones,
macros, y constantes para preparar y manipular la consola en
modo texto en el entorno de MS-DOS.

Archivos que utiliza la librera < conio.h >


cgets clreol clrscr cprintf cputs cscanf delline
getche getpass gettext gettextin gotoxy highvide inport
fo o
insline getch lowvideo movetext normvide outport putch
o
puttext setcursor textattr textback textcolor textmode ungetch
type ground

Cadenas de formato: las cadenas de formatos como printf,


permite dar formato especfico a la salida y a cada smbolo
cuando le antecede un %. Un dato es la expresin general que
describe los objetos con los cuales opera una computadora. Los
tipos de datos ms comunes son: char, int, float, long, short,
doubl, void.
%d,% i entero decimal con signo, (eje: 38)
%o entero octal sin signo, (eje: o43)
%u entero decimal sin signo, (eje: 47)
%x entero hexadecimal sin signo (en
minsculas) , (eje: 0x32)
%X entero hexadecimal sin signo (en
maysculas) , (eje: 0X32)
%f Coma flotante en la forma
[-]dddd.dddd , (eje: -3.2, 56.896)
%e Coma flotante en la forma [-]d.dddd
e[+/-]ddd, (eje: 2.3e4, 4.879e-4)
%g Coma flotante segn el valor
%E Como e pero en maysculas, (eje:
2.3E4, 4.879E-4)
%G Como g pero en maysculas
%c un carcter, (eje: a, A)
%s cadena de caracteres terminada en '\0' o
null, (eje: juan, JUAN)
%5s primeros cinco caracteres o delimitador
%8.2f tamao total de 8 dgitos, con dos
decimales
Secuencias de escape: las secuencias de escape son
constantes especiales que se diferencian por llevar adelante una
barra invertida (\) y cumplen una funcin especfica, Las ms
usadas son:
\a Alerta
\b Espacio atrs
\f Salto de pgina
\n Salto de lnea
\r Retorno de
carro
\t Tabulacin
horizontal
\v Tabulacin
vertical
\\ Barra invertida
\' Comilla simple
\" Comillas
dobles

Operadores relacionales: los operadores relacionales, permiten


comparar 2 valores arrojando un resultado basado en si la
comparacin es verdadera o falsa. Si la comparacin es falsa el
resultado es 0, si es verdadera el resultado es 1.

Operadores lgicos: los operadores lgicos, dan como resultado


cierto o falso, siguiendo las reglas de la lgica formal. Estos
operadores se combinan con operadores relacionales o
comparacin.
Operadores Ejemplo Operadores Ejemplo
relacionales lgicos
< 1 menor 2 && And
(3>1)&&(2>7)
salida no = 0
> 1 mayor 2 Or (1<3) (2>0)
salida si = 1
<= 1 menor o igual 2 ! Not !(2<1)
Salida si = 1
>= 1 mayor o igual 2
== 1 igual al 2
!= 1 diferente al 2

Operadores unarios: los operadores unarios admiten un nico


argumento y cuentan con operador de cambio de signo (-) y
tambin con los de incremento (++) y decremento (- -) y son una
forma fcil de sumar o restar 1 a una variable.
variable + postincre
+ mento
+ preincrem
+variable ento
variable - postdecre
- mento
- -variable predecre
mento
Operadores aritmticos: los operadores aritmticos se utilizan
para hacer clculos aritmticos. Ejemplos:

Divisin entera
19%6=1
19/6=3
15/2=7
15%2=1
Divisin real
10/3=3.33333

Operadores aritmticos:
nombre funcin
Multiplicacin *
Divisin /

Cdigo ascii: la siguiente tabla muestra el cdigo ascii


imprimibles y no imprimibles.
Ejemplo de nmeros aleatorios en Dev C++
Por ejemplo, si queremos generar 5 nmeros aleatorios uno
detrs de otro:
#include <stdlib.h>
#include <stdio.h>

int main()
{
int i;
for(i=0; i<5; i++)
{
printf("%d\n", rand());
}
return 0;
}
Notars que los resultados son bastante diferentes, pero si
volvemos a ejecutar el programa, tendremos la misma serie
de nmeros.

Para cambiar el comportamiento del generador de nmeros


aleatorios, podemos cambiar la variable sobre la que se basa
para realizar los clculos. A esta se le llama seed o semilla.
Esta semilla puede modificarse con la funcin srand():
srand(valor de la semilla)

Necesitamos elegir un nmero que no podamos predecir


fcilmente y que vare de un instante a otro. Por ejemplo,
puedes usar el nmero de ciclos utilizados por tu procesador
desde el inicio. Puede ser obtenido, en
procesadores x86 (Intel, Amd, etc.), con el comando
ensamblador rdtsc. La escritura de una funcin rdtsc() podr
facilitarte las cosas, la sintaxis siguiente funciona con GCC en
Linux y la puedes encontrar con dev C++ en Windows:
#include <stdlib.h>
#include <stdio.h>

int rdtsc()
{
__asm__ __volatile__("rdtsc");
}

int main()
{
int i;
for(i=0; i<5; i++)
{
srand(rdtsc());
printf("%d\n", rand());
}
return 0;
}

Con este cdigo, generars nmeros aleatorios ms eficaces.

Nota: Esta solucin funciona nicamente con los


procesadores x86.

Tambin evita activar optimizaciones en el compilador (opcin-


O1,-O2-O3, etc.) cuando utilices la funcin rdtsc.

REFERENCIAS:

blog.utp.edu.co/jnsanchez/files/2011/03/Palabras-reservadas-
librerias-datos-etc.pdf
http://blog.martincruz.me/2012/09/obtener-numeros-
aleatorios-en-c-rand.html
https://es.wikipedia.org/wiki/CRUD

www.bloodshed.net

http://www.uhu.es/javier.fernandez/El%20Entorno
%20DevC.pdf

Vous aimerez peut-être aussi