Professional Documents
Culture Documents
ndice:
Nmeros aleatorios
Manejo de archivos
Estructuras
Numeros aleatorios
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_ELEM 16
int main(void)
{
int i;
srand((unsigned) time(NULL));
printf("Test: ");
for (i = 0; i < NUM_ELEM; i++){
printf("%d", rand() % NUM_ELEM);
printf(i == NUM_ELEM - 1 ? "\n" : " ");
}
return EXIT_SUCCESS;
}
Este nmero es generado por un algoritmo que devuelve una secuencia de nmeros aparentemente
no relacionados cada vez que se llama. Este algoritmo utiliza una semilla para generar la serie, que
debe ser inicializada a algn valor distintivo utilizando la funcin srand .
Manejo de archivos
El archivo de cabecera fstream.h define las
clases ifstream, ostream y fstream para operaciones de lectura, escritura y
lectura/escritura en archivos respectivamente. Para trabajar con archivos debemos
crear objetos de stas clases de acuerdo a las operaciones que deseamos efectuar.
Empezamos con las operaciones de escritura, para lo cual bsicamente declaramos
un objeto de la clase ofstream, despus utilizamos la funcin miembro open para
abrir el archivo, escribimos en el archivo los datos que sean necesarios utilizando el
operador de insercin y por ltimo cerramos el archivo por medio de la funcin
miembro close, ste proceso est ilustrado en nuestro primer
programa, archiv01.cpp.
#include <fstream.h>
int main()
{
ofstream archivo; // objeto de la clase ofstream
archivo.open("datos.txt");
archivo.close();
return 0;
}
#include<iostream>
#include<fstream>//LIBRERIA PARA MANEJAR ARCHIVOS
#include<string>
#include<windows.h>
using namespace std;
ofstream entrada; //OBJETO O VARIABLE PARA CREAR EL ARCHIVO
int main()
{
//VARIABLES USADOS PARA INGRESAR Y GUARDAR LOS DATOS
string nombre, apellidos;
int codigo, sueldo;
char opc;
entrada.open("datos_empleados.txt",ios::out|ios::app);//LLAMAR EL ARCHIVO
if (entrada.fail())//PREGUNTAR SI EL ARCHIVO EXISTE
{
cout<< "ERROR AL ABRIR EL ARCHIVO"<<endl;
}
else
{
do
{
cout<<"******DATOS DE EMPLEADOS*******"<<endl;
cout<<endl;
cout<<"CODIGO: ";
cin>> codigo;
cout<<"NOMBRE: ";
cin>>nombre;
cout<<"APELLIDOS: ";
cin>>apellidos;
cout<<"SUELDO: ";
cin>>sueldo;
entrada<<codigo<<" "<<nombre<<" "<<apellidos<<"
"<<sueldo<<endl;//GUARDAR LOS DATOS
cout<<endl;
cout<<"desea continuar ingresando datos s/n"<<endl;
cin>>opc;
opc=toupper(opc);
}while (opc == 'S');
}
entrada.close();
system ("pausa");
return (0);
}
Archivos secuenciales
En estos archivos, la informacin slo puede leerse y escribirse empezando desde
el principio del archivo.
Los archivos secuenciales tienen algunas caractersticas que hay que tener en
cuenta:
Pero hay archivos que se comportan siempre como secuenciales, por ejemplo los
ficheros de entrada y salida estndar: stdin, stdout, stderr y stdaux.
Tomemos el caso de stdin, que suele ser el teclado. Nuestro programa slo podr
abrir ese fichero como de lectura, y slo podr leer los caracteres a medida que
estn disponibles, y en el mismo orden en que fueron tecleados.
Lo mismo se aplica para stdout y stderr, que es la pantalla, en estos casos slo se
pueden usar para escritura, y el orden en que se muestra la informacin es el mismo
en que se enva.
Un caso especial es stdaux, que suele ser el puerto serie. Tambin es un archivo
secuencial, con respecto al modo en que se leen y escriben los datos. Sin embargo
se un fichero de entrada y salida.
En ocasiones pueden ser tiles, por ejemplo, cuando slo se quiere almacenar
cierta informacin a medida que se recibe, y no interesa analizarla en el momento.
Posteriormente, otro programa puede leer esa informacin desde el principio y
analizarla. Este es el caso de archivos "log" o "diarios" por ejemplo, los servidores
de las pginas WEB pueden generar una lnea de texto cada vez que alguien
accede al una de las pginas y las guardan en un fichero secuencial.
#include<stdio.h>
#include<string.h>
int main()
{
char texto1[]="corta";
char texto2[]="mediana";
char texto3[]="larguisima";
strcpy(texto2,texto1);
printf("%s\n",texto2);
strcpy(texto2,texto3);
printf("%s\n",texto2);
getch();
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
char texto1[]="Don Pepito";
char texto2[]=" y ";
char texto3[]="Don Jose";printf("%s\n",texto1);
strcat(texto1,texto2);
printf("%s\n",texto2);
strcat(texto1,texto3);
printf("%s\n",texto2);
getchar();
return 0;
}
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define MAXLON 80
int main(void)
{
char a[MAXLON+1];
int longitud;
clrscr();
printf ("Introduce una cadena (max. %d caracteres): ", MAXLON);
scanf("%s",&a);
longitud = strlen(a);
printf ("\nLongitud de la cadena: %d\n", longitud);
getch();
return 0;
}
strcmp: strcmp (abreviatura de ((string comparison))). La funcin strcmp
recibe dos cadenas, a y b, devuelve un entero. El entero que resulta de
efectuar la llamada strcmp(a, b) codifica el resultado de la comparacin:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[6] = "Abeja";
char s2[6] = "abeja";
int i;
printf( "s1=%s\t", s1 );
printf( "s2=%s\n", s2 );
i = strcmp( s1, s2 );
printf( "s1 es " );
if( i < 0 ) printf( "menor que" );
else if( i > 0 ) printf( "mayor que" );
else printf( "igual a" );
printf( " s2\n" );
return 0;
}
Estructuras
Al contrario que los arrays, las estructuras le permiten agrupar varios datos, que
mantengan algn tipo de relacin, aunque sean de distinto tipo, permitiendo
manipularlos todos juntos, usando un mismo identificador, o cada uno por separado.
Las estructuras son llamadas tambin muy a menudo registros, o en ingls records.
Tienen muchos aspectos en comn con los registros usados en bases de datos. Y
siguiendo la misma analoga, cada objeto de una estructura se denomina a menudo
campo, o field.
Sintaxis:
struct [<identificador>] {
[<tipo> <nombre_objeto>[,<nombre_objeto>,...]];
} [<objeto_estructura>[,<objeto_estructura>,...];
Las estructuras nos ayudan a agrupar datos de una manera ms ordenada y fcil
para nosotros.
#include<iostream>
using namespace std;
struct contacto{
int edad;
int numero;
char nombre[30];
};
int main()
{
struct contacto Amigo;
cout << "Ingrese Nombre: ";
cin >> Amigo.nombre;
cout << "Ingrese Edad: ";
cin >> Amigo.edad;
cout << "Ingrese Numero: ";
cin >> Amigo.numero;
cout << "\nNombre: " << Amigo.nombre << "\nEdad: " << Amigo.edad <<
"\nNumero de Telefono: " << Amigo.numero << endl;
return 0;
}
Una estructura contiene varios datos. La forma de definir una estructura es
haciendo uso de la palabra clave struct. Aqu hay ejemplo de la declaracin de
una estructura:
struct mystruct
{
int int_member;
double double_member;
char string_member[25];
} variable;
typedef struct
{
...
} Mystruct;
Note que es una convencin, y una buena costumbre usar mayscula en la primera
letra de un sinnimo de tipo. De todos modos lo importante es darle algn
identificador para poder hacer referencia a la estructura: podramos tener una
estructura de datos recursiva de algn dato.