You are on page 1of 47

Universidad de los Andes Facultad de Ingeniería Escuela de Ingeniería Eléctrica Doctorado en ciencias aplicadas GIBULA

SEMINARIO DE TESIS I
Prof. Rubén Medina PhD.

¿CÓMO PROGRAMAR EN C/C++?
Material digital preparado por: Miguel Vera

Mérida, Noviembre de 2008

Texto: Como Programar En C,c++ Y Java. Autores: Harvey M. Deitel Y Paul J. Deitel.4º Edición

CAPÍTULOS A DESARROLLAR MEDIANTE EXPOSICIONES 4. Control de programas en C 5. Funciones en C 6. Arreglos en C 7. Apuntadores en C 8. Caracteres y cadenas en C 9. Entrada/Salida con formato en C 10. Estructuras, uniones, manipulaciones de bits y enumeraciones en C 11. Procesamiento de archivos en C 12. Estructuras de datos en C 13. El preprocesador de C 14. Otros temas de C 15. C++ como un “Mejor C” 16. Clases y abstracción de datos en C++ 17. Clases en C++: Parte II 18. Sobrecarga de operadores en C++ 19. Herencia en C++ 20. Funciones virtuales y polimorfismo en C++ 21. Entrada / salida de flujo en C++ 22. Plantillas en C++

Texto: Como Programar En C,c++ Y Java. Autores: Harvey M. Deitel Y Paul J. Deitel.4º Edición

CAPÍTULOS A DESARROLLAR MEDIANTE EXPOSICIONES

4. Control de programas en C 5. Funciones en C 6. Arreglos en C 7. Apuntadores en C 8. Caracteres y cadenas en C 9. Entrada/Salida con formato en C 10. Estructuras y uniones en C 11. Procesamiento de archivos en C 12. Estructuras de datos en C 13. El preprocesador de C 14. Otros temas de C

Primera exposición

15. C++ como un “Mejor C” C” 16. Clases y abstracción de datos en C++ abstracció 17. Clases en C++: Parte II 18. Sobrecarga de operadores en C++ 19. Herencia en C++ 20. Funciones virtuales y polimorfismo en C++ 21. Entrada / salida de flujo en C++ 22. Plantillas en C++

4_14.- Desde Instrucciones de Control hasta otros temas de C.
Los Programas en “C”
Controlan su ejecución, con instrucciones de:

REPETICIÓN
De tipo:

SELECCIÓN
De tipo:

INTERRUPCIÓN
De tipo:

for

while do… while

if if…else

switch

break

continue

Estas “palabras reservadas” pueden realizar acciones de CONTROL en programas donde intervienen:

FUNCIONES

ARREGLOS
Junto a las FUNCIONES permiten crear programas versátiles y flexibles CARACTERES y CADENAS

APUNTADORES
Estos elementos posibilitan la creación y manipulación de:

UNIONES

Estructuras y ARCHIVOS

y
ENUMERACIONES

return 0. #include <stdio. for ( numero = 2.REPETICIÓN for Su formato es: Instrucción for for( inicialización de contadores . numero += 2 ) { suma += numero. condiciones . suma ). } Resultado luego de ejecutar el programa . incrementos ) { conjunto de instrucciones a ejecutar en el bucle } for Ejemplo1: Uso de for para obtener la suma de los primeros 50 números naturales pares mediante un ciclo controlado por CONTADOR. } printf( "La suma es %d\n".h> int main() { int suma = 0. numero <= 100. int numero.

while ( contador <= 10 ) { printf( "Introduzca la calificacion: " ).h> int main() { int contador=1. total = total + calificacion. promedio ). &calificacion ).promedio=0. #include <stdio.calificacion=0. } promedio = total / 10. contador = contador + 1.total=0. return 0. scanf( "%d". } Resultado luego de ejecutar el programa . printf( "El promedio de la clase es %d\n".REPETICIÓN Instrucción while Su formato es: while ( condición ) { bloque de instrucciones a ejecutar } while Ejemplo2: Uso de while para obtener el promedio de calificaciones mediante una repetición controlada por CONTADOR.

contador ). } . Resultado luego de ejecutar el programa return 0. } while ( ++contador <= 10 ). int main() { do { printf( "%d\n". #include <stdio. do while Ejemplo3: Uso de do…while para obtener por pantalla los primeros diez números naturales mediante un ciclo controlado por CONTADOR.h> int contador = 1.REPETICIÓN Instrucción do while Su formato es: do { instrucciones a ejecutar } while ( condición ).

} Resultado luego de ejecutar el programa . return 0. x ). x++ ) { if ( x == 5 ) { break. } printf( "%d ". x ). for ( x = 1. } printf( "\nRompe el ciclo en x == %d\n".h> int main() { int x. x <= 10.Instrucción if Su formato es: if ( condición ) { instrucciones a ejecutar } REPETICIÓN for SELECCIÓN if INTERRUPCIÓN break Ejemplo4: Ruptura de un ciclo for mediante break precedido de una instrucción if. #include <stdio.

} . promedio ). printf( " El promedio de la clase es: %. } if ( total != 0 ) { promedio = ( float ) total / contador.total=0. contador = contador + 1.2f\n". while ( calificacion != -1 ) { total = total + calificacion. printf( "Introduzca la calificacion o digite -1 para terminar: " ). } else { printf( "No se introdujeron calificaciones\n" ). float promedio. #include <stdio.Instrucción If – else Su formato es: REPETICIÓN if ( condición ) { bloque que se ejecuta si se cumple la condición } else { bloque que se ejecuta si no se cumple la condición } If .h> int main() { int contador=0. scanf("%d". &calificacion).else while SELECCIÓN doble Ejemplo5: Promedio de calificaciones con repetición controlada por CENTINELA.calificacion=0. } return 0.

float promedio. scanf("%d". } while Ejemplifica el else . } else { printf( "No se introdujeron calificaciones\n" ). while ( calificacion != -1 ) { total = total + calificacion. } if ( total != 0 ) { promedio = ( float ) total / contador. -1 para terminar: " ). &calificacion). printf( " El promedio de la clase es: %. printf( "Introduzca la calificacion.2f\n".h> int main() { int contador=0.calificacion=0. contador = contador + 1.else SELECCIÓN doble #include <stdio. REPETICIÓN If .Ejemplo5: Promedio de calificaciones con repetición controlada por CENTINELA. promedio ). } return 0.total=0.

} if ( total != 0 ) { promedio = ( float ) total / contador. printf( " El promedio de la clase es: %. &calificacion).total=0. while ( calificacion != -1 ) { total = total + calificacion. } return 0. -1 para terminar: " ). promedio ). scanf("%d".2f\n". } SELECCIÓN doble Ejemplifica el while .calificacion=0. } else { printf( "No se introdujeron calificaciones\n" ).h> int main() { int contador=0. contador = contador + 1. float promedio. REPETICIÓN #include <stdio. printf( "Introduzca la calificacion.Ejemplo5: Promedio de calificaciones con repetición controlada por CENTINELA.

cara. break.frecuencia4 = 0. break.h> int main() REPETICIÓN SELECCIÓN múltiple switch { int frecuencia1 = 0. frecuencia3. case 2: /* tiro 2 */ ++frecuencia2.frecuencia6 = 0.frecuencia5 = 0. #include <stdio. frecuencia2 . break. frecuencia6 ). tiro++ ) { switch ( cara ) { case 1: /* tiro 1 */ ++frecuencia1. } } cara = 1 + rand() % 6. return 0. tiro <= 6000. case 4: /* tiro 4 */ ++frecuencia4. break. "Cara". for ( tiro = 1.tiro. frecuencia5. case 6: /* tiro 6 */ ++frecuencia6.Ejemplo6: Uso de switch y repetición controlada por for. Resultado luego de ejecutar el programa printf( "%s%13s\n".frecuencia2 = 0. case 5: /* tiro 5 */ ++frecuencia5. } .frecuencia3 = 0. case 3: /* tiro 3 */ ++frecuencia3. break. "Frecuencia" ). frecuencia4. frecuencia1. printf( " 1%13d 2%13d 3%13d 4%13d 5%13d 6%13d\n ".h> #include <stdlib.

Texto: Como Programar En C. return 0. #include <stdio. for ( x = 1. x <= 10. Deitel.4º Edición REPETICIÓN for SELECCIÓN if INTERRUPCIÓN continue Ejemplo7: Interrupción de un ciclo for mediante continue precedido de if.h> int main() Resultado luego de ejecutar el programa { int x. Deitel Y Paul J. } printf( "%d ". } printf( "\nUtiliza continue para ignorar la impresion del valor 5\n" ). x ). Autores: Harvey M.c++ Y Java. x++ ) { if ( x == 5 ) { continue. } .

printf( "\n" ).h> int main() { int i.c++ Y Java. Deitel Y Paul J. i++ ) { for( j=0. i<6. } Resultado luego de ejecutar el programa . j<i.Texto: Como Programar En C. Deitel. for( i=0. j++ ) printf( "*" ). Autores: Harvey M.4º Edición Ejemplo8: for “anidado” #include <stdio. j. } return 0.

cuadrado( x ) ). } Resultado luego de ejecutar el programa .FUNCIONES Una función tiene el formato: Definición de una función tipo_de_variable nombre_de_la_funcion( argumentos ).//prototìpo prototipo { cuerpo de la función. #include <stdio. } int cuadrado( int y ) { return y * y. int main() { int x. } Ejemplo9: Creación y llamado de una función por valor. x <= 10. for ( x = 1.h> int cuadrado( int y ). } printf( "\n" ). x++ ) { printf( "%d ". return 0. return Valor.

Cap. } Resultado al ejecutar el programa .Ta=0. } float Tasa(float monto.n.h> float CC.Ejemplo10: Creación y llamado de una función por valor.&monto).c1. float Tasa(float monto.h> #include <math. printf("Introduzca el tiempo:"). return 0. pulse cualquier tecla\n"). return Ta. Ta=float(CC-1).Cap. scanf("%f".&Cap).&n).nf.float Cap. nf=float(log(N)). c1=float(nf/n). int main() { printf("La tasa es: %f\n\n\n\n". N=float(monto/Cap). float n){ printf("Introduzca el monto con dos numeros decimales:"). #include <stdio.Tasa( monto. scanf("%f".N.Tas.monto. CC=float(exp(c1)).float Cap. printf("Si desea salir. scanf("%f".n )). float n). printf("Introduzca el Capital con dos numeros decimales:").

} int maximo( int x. &numero1. printf( "El maximo es: %d\n". numero2. } return max. #include <stdio. numero2. } if ( z > max ) { max = z. return 0. &numero3 ). int y. int y. numero3 ) ).Ejemplo11: Creación y llamado de una función por valor o parámetro. scanf( "%d%d%d". int z ) { int max = x. &numero2. int z ).h> función int maximo( int x. } . printf( "Introduzca tres enteros: " ). numero3. por int main() valor { int numero1. Resultado luego de ejecutar el programa if ( y > max ) { max = y. maximo( numero1.

/* contador */ for ( i = 0. } /* fin de for */ Resultado luego de ejecutar el programa return 0. } /* fin de if */ else { /* paso recursivo */ return ( numero * factorial( numero .1 ) ).Ejemplo12: Una función recursiva. } /* fin de else */ } .h> long factorial( long numero ). i. i++ ) { printf( "%2d! = %ld\n". #include <stdio. i <= 10. /* prototipo de la función */ int main() { int i. } /* definición recursiva de la función factorial */ long factorial( long numero ) { /* caso base */ if ( numero <= 1 ) { return 1. factorial( i ) ).

float Tas.anio<=n.&Cap).Arreglo[anio]).Monto( Cap.2f\n". } Resultado al ejecutar el programa float Monto( float Cap.Tas. int anio=0.float Tas.n.anio)).anio++) { M=float(Cap*pow(1+Tas."Periodo".M=0."MONTO"). printf("Introduzca el periodo de tiempo:"). } . printf("%s %6s\n".&n). for(anio=1. printf("Introduzca la tasa expresada en decimal:"). scanf("%f". scanf("%f". float Arreglo[1000]={0}. ARREGLOS #include <stdio. int main() { printf("Seleccione la opcion segun se indica:\n"). } return M. if (p==1){ printf("El monto acumulado es: %. Arreglo[anio]=M.Cap. scanf("%f".Ejemplo13: Arreglos y llamado de una función por Valor.float n ). float Monto( float Cap. } return 0.anio.float n ) { printf("Introduzca el Capital con dos numeros decimales:"). printf("PARA CALCULAR MONTO: pulse 1\n").p=0.&p).n )).2f\n". Arreglo: conjunto de variables del mismo tipo y nombre que se diferencian en el índice. scanf("%f". printf("%4d% 10.h> #include <math.&Tas).h> float Tas.

Llamar FUNCIONES por REFERENCIA Un Apuntador o PUNTERO se declara de acuerdo al formato: tipo_de_dato *nombre_del_puntero. ptrnum. el nuevo valor de num = %i\n".Almacenar la dirección de la(s) variable(s) a las que apunta b.Es una variable que “APUNTA” a la DIRECCIÓN de otras variables y por tanto.. printf( "Direccion de num = %p. } .y b.h> void main() { int num. int *ptrnum=NULL.*ptrnum ). *ptrnum = 75. Ejemplo14: Un Apuntador que realiza a. ptrnum.Resultado al ejecutar el programa #include <stdio. printf( "Direccion de num = %p. num = 100.APUNTADORES Apuntador...Acceder y modificar la información de dichas variables c.. ptrnum = &num. valor de num = %i\n".. mediante el se puede: a.*ptrnum ).

float *ptrTas. scanf("%f".float *ptrTas.*ptrn)). float Capital( float *ptrmonto. d=float(pow(1+*ptrTas.&n). scanf("%f". scanf("%f".Tas. printf("Introduzca la tasa expresada en decimal:").float *ptrn ). float *ptrmonto=NULL. } float Capital( float *ptrmonto.float *ptrn ){ printf("Introduzca el monto con dos numeros decimales:").n. C=float(*ptrmonto/d).Ejemplo15: de creación y llamado de una función por Referencia. #include <stdio. Capital( &monto. } Resultado luego de ejecutar el programa .h> #include <math.&n )). int main() { printf( "El capital invertido fue: %f\n ".&Tas).h> float monto. printf("Introduzca el periodo de tiempo pero como un numero entero:"). float *ptrn=NULL. return 0.&Tas.d=0. float *ptrTas=NULL.C=0. return C.&monto).

#include <stdio. resultado = suma(&var1. var2).h> int suma( int *a. } int main() { int var1. var1 = 5. var1 ). *a = 0. resultado . var2. int b ) { int c. c = *a + b. return c. printf( "La suma es: %i y a vale: %i\n".Ejemplo16: de creación y llamado de una función por Referencia y Valor. var2 = 8. } Resultado luego de ejecutar el programa . resultado.

S.Arreglo[100000]={0}.float *ptrTas. float p1.float Tas. 1/6 .anio=0.t=0.r=0.inicial=0. char salir. float Tas). float *ptrrenta=NULL.dt.float Cap.Cap.nf. float n).M=0.n.float Cap.q=0. *ptrn=NULL.R=0. float Renta( float Cap.h> #include <math. N.u=0. float i[100000]={0}.h> #define CE 0.000001 int k.s=0.capital.Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales #include <stdio. float Tasa(float renta.*ptrTas=NULL.C=0.Tas.d. float Tiempo(float renta.g=0.float n ).f=0.p=0.E[100000]={0}.float *ptrn ).D[100000]={0}.renta.df. float Capital( float *ptrrenta.

&p). 2/6 .Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales int main() { repita: while (p!=-1){ printf("\t\t\tDIGITE LA ALTERNATIVA DE SU PREFERENCIA:\n\n\n"). printf("PARA SALIR: pulse -1\n\n\t PARA CALCULAR LA RENTA: pulse 1\n\n\t\t PARA CALCULAR CAPITAL: pulse 2\n\n\t\t\t PARA CALCULAR TIEMPO: pulse 3\n\n\t\t\t\t PARA CALCULAR TASA de INTERES: pulse 4\n\n"). Resultado luego de ejecutar el programa scanf("%f".

&p1). } if (p==2){ r=p. } if (p==4){ u=p.Tas.Cap. } . return 0. } } goto repita. } printf("Quiere salir del programa?\n\a Si: pulse S\n NO: pulse cualquier otro caracter\n"). Tasa( renta.Renta( Cap. Capital( &renta. scanf("%f". printf( "La tasa de interes fue: %f\n\n\n\n if (q==1 && r==2 && s==3 && u==4){ ". salir=getchar(). Tiempo( renta.Cap.Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales int main() {… if (p==1){q=p. } if (p==3){ s=p. } else{ goto repita. printf( "El capital invertido fue: %f\n\n\n\n ".&n )). } fin: printf("Si esta seguro que desea salir.Tas)). printf( "El tiempo de la inversion es: %f\n\n\n\n ". printf("LA renta acumulada es: %f\n\n\n\n".n)). pulse -1\n").&Tas. if (salir==83){ goto fin.n )).

.float Tas. if (anio==(12)){ continue.float n ) { printf("Introduzca el Capital con dos numeros decimales:"). Arreglo[anio]=R.anio<=n.&n). } printf("%4d% 15.-anio))). } return R.&Tas). printf("%4s%12s\n".2f\n".anio++) { R=float(Cap*Tas/(1-pow(1+Tas. scanf("%f"."RENTA").&Cap). printf("Introduzca la tasa expresada en decimal:")." Periodo". scanf("%f".Arreglo[anio]).anio. printf("Introduzca el periodo de tiempo:").Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales float Renta( float Cap. scanf("%f". for(anio=1.

float *ptrTas. printf("Introduzca el periodo de tiempo:"). scanf("%f".float *ptrn ){ printf("Introduzca la renta con dos numeros decimales:"). printf("Introduzca la tasa expresada en decimal:").&Tas). } 4/6 . scanf("%f".&renta). scanf("%f". return C.Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales float Capital( float *ptrrenta.-*ptrn))/(Tas)).&n). C=float(*ptrrenta*d). d=float((1-pow(1+*ptrTas.

printf("Introduzca el capital con dos numeros decimales:").Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales float Tiempo(float renta. df=float(log(dt)). scanf("%f". printf("Introduzca la tasa de interes en decimal:").float Cap. } 5/6 .&Tas). scanf("%f". nf=float(log(N)). float Tas){ printf("Introduzca la renta con dos numeros decimales:"). dt=float(1+Tas). t=float(nf/df). N=float((renta)/(renta-Cap*Tas)).&Cap). scanf("%f". return t.&renta).

k.&renta). } } M=float(Cap*pow(1+f. printf("%4d %1.6f %1. return f.n)).float Cap.g. for(k=1.f=inicial." TASA").2f:\n".&n).k++){ E[k]=float(1+pow((1+f)."Periodo". } .(-n-1))-float(Cap/renta)).1/(n+1))-1)). if (g<=CE){ break.&Cap). printf("Introduzca el tiempo:"). float n){ printf("Introduzca la renta con dos numeros decimales:").scanf("%f". printf("%4s %10s %10s\n". inicial=float(1.f). printf("EL MONTO ASOCIADO A ESTA ANUALIDAD ES %.(-n))-float(Cap*f/renta)). i[k]=float(f-float(E[k]/D[k])).M).k<=100. D[k]=float(-n*pow((1+f)." ERRORCALCULADO".scanf("%f".Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales float Tasa(float renta.6f\n".5*(pow(((renta*n)/(Cap)). g=float(fabs(f-i[k])). f=i[k]. printf("Introduzca el Capital con dos numeros decimales:"). scanf("%f".

k.f). f=i[k]. } } 6. if (g<=CE){ break. D[k]=float(n*pow((1+f). i[k]=float(f-float(E[k]/D[k])). g=float(fabs(f-i[k])).(-n))float(Cap*f/renta)). f=inicial.k++){ E[k]=float(1-pow((1+f).(-n-1))float(Cap/renta)).1/(n+1))-1)).5*(pow(((renta*n)/(Cap)).2/6 .6f %1.6f\n". for(k=1.g.Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales inicial=float(1.k<=100. printf("%4d %1.

&renta). printf("%4s %10s %10s\n".6f %1. scanf("%f".float Cap. if (g<=CE){ break.g. } } M=float(Cap*pow(1+f. printf("Introduzca el tiempo:"). scanf("%f". f=inicial. return f. D[k]=float(n*pow((1+f).6f\n". for(k=1.M). scanf("%f".n)).(-n-1))-float(Cap/renta)). printf("%4d %1." ERRORCALCULADO". } 6/6 .2f:\n". printf("EL MONTO ASOCIADO A ESTA ANUALIDAD ES %." TASA").k<=100.&Cap). inicial=float(1.Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales float Tasa(float renta.f). printf("Introduzca el Capital con dos numeros decimales:"). g=float(fabs(f-i[k])).(-n))-float(Cap*f/renta)).1/(n+1))-1)). i[k]=float(f-float(E[k]/D[k])). float n){ printf("Introduzca la renta con dos numeros decimales:").k. f=i[k].k++){ E[k]=float(1-pow((1+f).&n).5*(pow(((renta*n)/(Cap))."Periodo".

Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales Resultado luego de ejecutar el programa Resultado luego de pulsar 1 .

Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales Resultado luego de pulsar 2 y3 .

Ejemplo17: Síntesis de conceptos expuestos y algunas funciones especiales Resultado luego de pulsar 4 .

.. } Resultado al ejecutar el programa . scanf( "%s". Ejemplo18: Una Cadena de Caracteres que realiza la función a. nombre ).Son ARREGLOS en los cuales se puede: a. printf( "\nEl nombre que ha escrito es: %s\n". nombre ).Almacenar TEXTO (compuesto por caracteres) b. printf( "Introduzca su nombre (30 letras máximo): " ).Copiar y concatenar caracteres y otras cadenas Una CADENA se declara de acuerdo al formato: char nombre_de_la cadena[Tamaño_de_la_cadena]..- #include <stdio.h> int main() { char nombre[30].CARACTERES y CADENAS CADENAS.Determinar el número de caracteres que la integran c..

Su formato es: strcpy( cadena1. strcpy( destino. printf( "Valor final: %s\n".h> int main() { char contador_imagenes[ ] = "Esta es la Imagen numero ". contador_imagenes ). char destino[40].h> #include <string. destino ).CARACTERES y CADENAS Ejemplo19: Uso de la función strcpy Esta función copia el contenido de la cadena2 en la cadena1. } Resultado al ejecutar el programa . #include <stdio. cadena2).

CARACTERES y CADENAS Ejemplo20: Uso de la función strcat. #include <stdio. Su formato es: char strcat(char cadena1. Resultado al ejecutar el programa printf( "El nombre completo es: %s. strcat( nombre_completo. char apellido[ ]="Vera".\n". const char cadena2). strcpy( nombre_completo. apellido ). nombre ). char nombre[ ]="Miguel".h> #include <string. } .h> int main() { char nombre_completo[50]. Esta función copia el contenido de la cadena2 al final de la cadena1. nombre_completo ). strcat( nombre_completo. " " ).

#include <stdio.h> Resultado al ejecutar el programa int main() { char cadena[30]. cadena ). printf( "He guardado: \"%s\" \n". printf( "Escribe una palabra: " ). scanf( "%s".CARACTERES y CADENAS Ejemplo21: Uso de la función scanf para cadenas. cadena ).h> #include <string. fflush( stdout ). } .

ENUMERACIONES enum nombre_de_la_enumeración{ nombres de las constantes }. UNIONES union nombre_de_la_unión { campos de la unión }.Estructuras: Son conjuntos de variables relacionadas bajo un nombre. }. . Sus variables pueden ser de distintos tipos de datos La Estructuras comparten el mismo formato : Estructuras struct nombre_de_la_estructura { campos de estructura.

char telefono[12]. amigo. printf( "Escribe el apellido de su amigo: " ). printf( "Escribe el numero de telefono de su amigo: " ).nombre ). &amigo.telefono ). fflush( stdout ). struct estructura_amigo amigo. char edad.apellido ).apellido. &amigo.Estructuras Ejemplo22: Uso básico de una Estructura. } Resultado al ejecutar el programa . scanf( "%s".\n". &amigo. #include <stdio. fflush( stdout ). fflush( stdout ). char apellido[50].telefono ). amigo. amigo.h> struct estructura_amigo { char nombre[50]. }. scanf( "%s". int main() { printf( "Escribe el nombre de su amigo: " ). scanf( "%s". printf( "Mi amigo %s %s tiene el numero : %s.nombre.

&amigo[num_amigo]. }. printf( "%i an_os ". fflush( stdout ).apellido ). num_amigo+1 ). gets(amigo[num_amigo].nombre). printf( "Nombre: " ). fflush( stdout ). amigo[num_amigo]. gets(amigo[num_amigo].nombre ). fflush( stdout ). gets(amigo[num_amigo].apellido).edad ).telefono ).edad ). while(getchar()!='\n'). struct estructura_amigo amigo[ELEMENTOS].Estructuras #include <stdio. printf( "y su telefono es el %s. num_amigo++ ) { printf( "El amigo %s ". printf( "Apellido: " ). printf( "%s tiene ". } for( num_amigo=0. char apellido[40].\n" . int main() Resultado al ejecutar el programa { int num_amigo. char telefono[10]. printf( "Edad: " ). amigo[num_amigo]. scanf( "%i".telefono). . for( num_amigo=0. fflush( stdout ).h> #define ELEMENTOS 3 struct estructura_amigo { char nombre[30]. amigo[num_amigo]. printf( "Telefono: " ). int edad. num_amigo<ELEMENTOS. amigo[num_amigo]. } } Ejemplo23: Uso básico de Registros. num_amigo++ ) { printf( "\nDatos del amigo numero %i:\n". num_amigo<ELEMENTOS.

inicial).nombre). pers. printf("\nTu nombre es: %s\n".h> union _persona { char nombre[10].Estructuras UNIONES Ejemplo24: Uso básico de una UNION. int main() { printf("Escribe tu nombre: "). pers.nombre). } pers.inicial='V'. char inicial. printf("\nAhora tu nombre es: %s\n".inicial). /* Cambiamos la inicial */ pers. Resultado al ejecutar el programa #include <stdio. } . pers. printf("y tu inicial es: %c\n".nombre). printf("Tu inicial es: %c\n". gets(pers. pers.

h> enum { primero.Estructuras ENUMERACIONES Ejemplo25: Uso básico de una ENUMERACION. int main() { posicion=segundo. printf("posicion = %i\n". segundo. tercero. cuarto. quinto } posicion. posicion). #include <stdio. } Resultado al ejecutar el programa .

letra ). letra=fgetc(fichero).s. } ARCHIVOS . printf( "Problemas al cerrar el fichero\n" ). goto fin.txt". modo). FILE *fichero). fichero = fopen("origen. letra=getc(fichero). if (fichero==NULL) Formato de las instrucciones: { printf( "No se puede abrir el fichero.#include <stdio. } printf( "Contenido del fichero:\n" ). } if (fclose(fichero)!=0) printf("salir"). FILE *fopen(nombre_fichero. fin: return 0. fgets(buffer. { FILE *fichero. while (feof(fichero)==0) { printf( "%c".h> El ejemplo de la derecha: int main() Abre un archivo. lo lee. scanf("%c".s).\n" ). muestra el contenido en pantalla char letra. int longitud_max."r"). y lo cierra.

&id).imagen[50].p. scanf("%s". &idd).Manejo de ARCHIVOS .k. int i.l. scanf("%d".idd.*ima1.sizeof(unsigned char). printf("Introduzca el nombre de la imagen: "). FILE *fp. fread(ima. ima = new unsigned char[id*id].h> main() { unsigned char *ima.h> #include <math."rb"))!=NULL) { printf("Introduzca el tamaño de la imagen: "). char archivo[50].id. imagen). if((fp=fopen(imagen. síntesis de conceptos expuestos y algunas funciones especiales #include <stdio. scanf("%d".j. fclose(fp).h> #include <direct.n.h> #include <stdlib.h> #include <string.id*id.m. printf("Introduzca el tamaño de la subimagen: ").fp). ima1 = new unsigned char[idd*idd]. .h> #include <io.

n++) { ima1[l] = ima[n+(m*id)].m<(i+idd).m++) { for(n=j. } } . síntesis de conceptos expuestos y algunas funciones especiales k = id .n<(j+idd). p = 0.i++) { for(j=0.j<k. for(i=0.Manejo de ARCHIVOS . l++. for(m=i.j++) { l = 0.idd.i<k.

M).".fp).\n". } printf("Imagen %d\n". strcat(archivo.idd*idd.imagen). fclose(fp). p++. delete ima1.raw")."wb"). fwrite(ima1. fopen(archivo. return 0.sizeof(unsigned char). ARCHIVOS . strcpy(archivo.p).M.Manejo de char M[10]."image"). } else printf("No se puede encontrar el archivo %s. } delete ima.10). síntesis de conceptos expuestos y algunas funciones especiales _itoa(p. strcat(archivo. } .