Você está na página 1de 61

O. J. O.

con el

C++
Material didctico para el conocimiento , familiarizacin, estudio y comprensin del lenguaje C (Borland C++ , Turbo C y Visual C)

Profesor :

Osvaldo Jorge Onorati

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Visual C ++
Manejo de variables:
Normas generales Todas las rdenes se escriben en minsculas Todas las rdenes se separan por punto y coma ; Los nombres de variables NO pueden empezar con nmeros ni puede llevar guin medio (-) en el medio No toma ms de 32 letras en el nombre de variable Todo comentario de un rengln se escribe liego de

//

Para escribir un comentario de mas de un rengln se utiliza /* al comienzo y */ al final. /* comentario */ Primero se coloca los archivos de cabecera luego llamado del programa y luego se escriben en las rutinas que comienzan con una llave de inicio { y terminan con una llave de cierre } En la cabeceras NO VA punto y coma.

Caracteres de control ms comunes: \n \t \v \b \r \f \a \ \ \\ \ nnn \ xnnn nueva lnea tabulador horizontal tabulador vertical backspace (borrado hacia atrs) retorno de carro (printer) alimentacin de pgina (printer) beep (sonido) comilla simple comilla doble barra invertida ASCII (notacin octal) ASCII (notacin hexadecimal)

Tipos de variables: INT FLOAT CHAR entera parte decimal nmeros reales carcter

INT LONG INT SHORT INT UNSIGNED SORT INT CHART FLOAT

2 byte 4 byte 2 byte 2byte como N 4byte

de 32768 a + 32767 de -2MB a + 2000MB de -65535 a +65535 de 0 a 4000Mb de 0 a 255 (valor caracter ASCII) de 3,4E-38 a 3,4E38

Prof: Osvaldo J. Onorati

Hoja N. 2

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Ejemplo de programa para designacin y muestras de variables

#include <iostream.h> #include <stdio.h> # include <dos.h> void main() { int var1, var2 = 5 ; en 5 long int var3 ; var1 = 20 ; var2 = var1 + 10 ; var3 = 1234567890 ; cout << "var 2 : " ; cout << var2 ; var2 = var2 / 4 ; cout << "var 2 : " ; cout << var2 ; // creo una variable long int sin inicializar // cargo en la variable 1 el valor 20 // cargo a la variable 2 el valor de var1 y le sumo 10 // cargo la variable var3 con un valor alto // muestro en pantalla el literal var 2 : // muestro en pantalla el valor de var2 //al valor de var2 le cargo su valor dividido 4 // muestro en pantalla el literal var 2 : // muestro en pantalla el nuevo valor de var2 // creo 2 variables enteras y a la segunda inicializo

cout << "var3 = " <<var3 ; // muestro el literal var3 = y el valor de var3 } // fin del programa

Salida del programa por pantalla: Var2: 30 var2:7 var3=1234567890

Programa para el clculo del rea de un circulo: # include iostream.h> void main() { float radio; const float pi = 3.14159; // declara variable decimal para radio //declara conatante PI y la inicializa // mensaje literal

cout<< ingrese el radio del circulo; cin>>radio; float area = pi * radio * radio ;

// ingresa el dato del radio // inicializa variable area con el calculo

cout << el area es << area << endl; //salida literal y dato y endl termina la linea }

Prof: Osvaldo J. Onorati

Hoja N. 3

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Comportamiento de variables pos CAST Al utilizar una variable y por ejemplo multiplicarla por otra de distinta gerarquia el C sube de gerarquia a la variable menor para hacer el clculo en forma automtica GERARQUIAS menores CHART INT FLOAT DOUBLE LONG DOUBLE

Mayores

Operadores de C
Operadores matemticos:
+ suma resta * multiplicacin / division % resto de divisin (modulo) ++ incremento en 1 (I = I+1) -descremento en 1 (I=I-1) Los incrementos y decremento puedo ponerlos antes o despus de la variable la diferencia es: ++ P = incrementa y devuelve el valor de P incrementado P ++ = devuelve el valor de P sin incrementar y luego incrementa

Auto Operadores += suma -= resta


*= multiplicacin /= division %= resto de divisin (modulo)

asignacin

Operadores relacionales o de comparacin == igual a != distinto a <= menor o igual a >= mayor o igual a < menor a > mayor a Operadores lgicos bit a bit & And ^ O exclusivo (xor) | O inclusivo (or) Logica booleana (si devuelve 1 es verdadero y cero es falso) && Y || O inclusive

Prof: Osvaldo J. Onorati

Hoja N. 4

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Operador condicional ?:
Programa para ver manejo del incrementador: # include <iostream.h> void main() { int cont = 10;
// declara variable decimal para radio

cout<< contador= << cont << endl ; // mensaje literal, valor de cont y salto cout<< contador= << ++cont << endl ; // mens. incrementa valor de cont
muestra y salto

cout<< contador= << cont++ << endl ; // mens. Muestra y luego incrementa valor

y salto

cout<< contador= << cont++ << endl ; // // mens. Muestra y luego incrementa valor cout<< contador= << cont << endl ; // mens. muestra cont } Salida por pantalla Contador = 10 Contador = 11 Contador = 11 Contador = 12 Contador = 13
y salto

y salto

Programa para ver manejo de comparaciones: # include <iostream.h> void main() { int numero; cout << ingrese nmero; cin >> numero; cout<< numero menor que 10 es << (numero < 10) << endl, cout<< numero mayor que 10 es << (numero > 10) << endl, cout<< numero igual que 10 es << (numero = 10) << endl, } Salida por pantalla Suponiendo ingresamos un 5 Ingrese Nmero 5 1 0 0

Prof: Osvaldo J. Onorati

Hoja N. 5

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Desicin IF
if ( condicion ) bloque de ordenes por verdadero else bloque de condiciones por falso otra forma de realizar el if

(condicion) ? [accion por verdadero] : [accion por falso]

inicio

si condicion no rutinas por no rutinas por si

fin

Ciclos For
for (inicializacion ; condicion del ciclo ; incremento) { bloque de ordenes } Si tiene un solo rengln se puede en vez de abrir llaves escribir el rengln y poner punto y coma la orden Se puede forzar la salida por una orden BREAK

inicio incremento

si condicion rutinas

no

fin

Prof: Osvaldo J. Onorati

Hoja N. 6

PROGRAMACIN II Ejemplos de uso de la sentencia For

Borland C++ - Turbo C - Visual C++

Programa para ver manejo del For: # include <iostream.h> void main() { int cont ; for (cont=0; cont < 15;++ cont)
// declara variable

// For de 0 a menor que quince incrementado en 1

cout<< cont << ; // muestra cont y deja lugar en blanco cout<< final= << cont ; // mens. } Salida por pantalla 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 final = 15 Programa para calculo de factorial con For: # include <iostream.h> void main() { unsigned int numero ; unsigned long fact = 1; cout << ingrese el nmero; cin>> numero; for (int j = numero; J > 1; J--) // For de numero a mayor que 1 descrementado en 1 fact *=J; // multiplica fact por j y guarda en fact cout<< Factorial = << fact ; // mens. }
Y muestra resultado // declara variable // declara variable Y muestra vaklor de cont cuando salio

Se ingresa 3 nmeros distintos y debo informar cual de todos es el mayor # include <iostream.h> void main() { unsigned int a,b,c; // declara variable cin >> \n ingrese un numero >> a ; cin >> \n ingrese un numero >> b ; cin >> \n ingrese un numero >> c ; if ((a >= b) && (a >= c)) cout << el numero ms grande es el primero; else if (b >= c) cout << el numero ms grande es el segundo; else cout << el numero ms grande es el tercero; } Prof: Osvaldo J. Onorati

a>b && a > c

v > A >B

b>c >C

Hoja N. 7

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Programa para verificar si un nmero es primo Programa numero primo # Include <iostream.h> void main () unsigned long n,j ; char sigo ; n = 0; j = 0; do ingrese nmeros n for (j = 2 ; j < n/2 , j ++) n % j == 0 F Secuencia Vacia Break V

N % j == 0 F Es primo No es primo V

Continua s/n sigo While sigo == s || siga ==S # Include <iostream.h> void main () { unsigned long n,j ; char sigo ; n=0; j=0; do { cout << ingrese un nmero ; cin >> n; for ( j =2; j < n/2 ; j ++ ) if ((n % j) == 0) break ; // fuerzo la salida del ciclo if ((n % j) == 0) cout << no es un nmero primo ; else cout << es un nmero primo ; cout << desea continuar s/n ; cin >> sigo; } } Prof: Osvaldo J. Onorati Hoja N. 8 while (( sigo == S) || (sigo == s)) ;

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Programa para contra los caracteres y palabras de una frase # include <iostream.h> # include <conio.h> void main () { int contc = 0 ; int contp = 0 ; char c; c = getche() ; while (c != \ r ) { if ( c == ` ) contp ++ ; else contc ++ ; c=getche(); // espera un caracter y lo carga en c } cout << \ n Palabras = << contp << endl ; cout << \ n Letras = << contc << endl ; }

Versin mejorada del programa anterior # include <iostream.h> # include <conio.h> void main () { int contc = 0 ; int contp = 0 ; char c; while ((c = getche ()) != \ r ) { if ( c == ` ) contp ++ ; else contc ++ ; } cout << \ n Palabras = << contp << endl ; cout << \ n Letras = << contc << endl ; }

Prof: Osvaldo J. Onorati

Hoja N. 9

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Bucles While
Permite ejecutar un bloque de instrucciones mientras se cumpla la condicin lgica Primero evala la condicin, si es cierta se ejecutan las instrucciones y se vuelve al punto de evaluacin, si es falsa se abandona la ejecucin WHILE (condicin) { instrucciones } Si la condicin es falsa desde un principio no se ejecuta

si condicion instrucciones

no

Bucles Do
Ejecuta un bloque de instrucciones, luego revisa la condicin y mientras se cumpla la condicin lgica, si es cierta se ejecutan las instrucciones y se vuelve al punto de evaluacin, si es falsa se abandona la ejecucin Do { instrucciones } while (condicin); Si la condicin es falsa desde un principio igual se ejecuta una vez

instrucciones

condicion

si

no

Prof: Osvaldo J. Onorati

Hoja N. 10

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

SWITCH (Case select)


Ejecuta una u otra instruccin dependiendo del resultado de la comparacin de una expresin conuna serie de constantes switch (expresin) { case constante_1 : instrucciones_1 ; break ; case constante_2 : instrucciones_2 ; break ; case constante_3 : instrucciones_3 ; break ; default : instrucciones_0 ; break ; }

La clausura Default es condicional. La instruccin break hace salir del ciclo de comparaciones para que no siga ejecutando si se cumple otra condicin ms abajo.

Condicion 1

si

instrucciones

En punteado la diferencia si No estuviera BREAK volvera A preguntar por las condiciones siguientes y siempre correra las parte default

break

Condicion 2

si

instrucciones

break instrucciones por default

Prof: Osvaldo J. Onorati

Hoja N. 11

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Printf y Scanf
Se necesita incluir la librera <stdio.h> Printf (imprime en pantalla (cout)) scanf (toma datos de entrada (cin))

Ambas instrucciones poseen la siguiente estructura : Instruccin ( \ (caracteres de control) literales % especificaciones ,variable) ; Tabla de especificaciones de formato %c %xc %s % hi %d %i %e %f %g %u %o %x %p %[] carcter unico x cantidad de caracteres string entero corto (o char) decimal entero decimal entero decimal numero con coma flotante numero con coma flotante numero con coma flotante entero sin signo numero en octal numero en hexadecimal puntero permite determinado grupo de caracteres

Ejemplos Printf ( % 5d \n , 23) ; Printf ( % 5c \n , A ) ; Printf ( % 5s \n , formato ) ; Salida 1 2 3 4 5 6 7 8 9 (numero de carcter) 23 A Formato

GETCHE ( )
Permite leer el carcter que ingresa por teclado. Necesita incluir la biblioteca conio.h

Prof: Osvaldo J. Onorati

Hoja N. 12

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Ejemplos de uso de switch


Contar las palabras, coma, dos puntos y otros caracteres de una frase hasta que aprieten enter // Contador de blancos, comas, dos puntos y otros en una frase # include <iostream.h> # include <conio.h> # include <dos.h> void main() { int contbl; int contco; int contdp; int contot; contbl = 0; contco = 0; contdp = 0; contot = 0; char c ; // contador de blancos // contador de comas // contador de dos puntos // contador de otros // almacena caracter leido

while ((c=getche()) != '\r') // miestras no sea enter

{switch (c) { case ' ': contbl++;break; // si es blanco case ',': contco++;break; // si es coma case ':': contdp++;break; // si es dos puntos default: contot++; // si es otro caracter } } // Salida de pantalla cout <<" \n Cantidad se blancos: " << contbl ; cout <<" \n Cantidad se comas: " << contco ; cout <<" \n Cantidad se dos puntos: " << contdp ; cout <<" \n Cantidad se otros caracteres: " << contot ;

Prof: Osvaldo J. Onorati

Hoja N. 13

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Cambio de un programa para el uso de Printf y scanf en vez de cin y cout Suma los valores hasta que se ingrese un enter Con cin y cout # include <iostream.h> void main() { int total = 0; int n=0; char c ; cout << \n Ingrese un N ; cin >> n ; while (n) { total + = n ; cout << Ingrese N ; cin >> n ; } cout <<El total es<<total<<endl ; cout <<Presione una tecla; cin >> c ; } con printf y scanf include <stdio.h> void main () { int total = 0; int n=0 ; char c ; printf ( \n Ingrese un N ) ; scanf ( % d, &n) ; while (n) { total + = n ; printf ( \n Ingrese un N ) ; scanf ( % d, &n) ; } printf ( \n el total es %d , total ) ; printf ( \n Presione una tecla ) ; scanf ( %c , &c) ; }

# include <iostream.h> # include <conio.h> # include <dos.h> enum Logico{FALSO, VERDADERO }; void main() { Logico EsPalabra = FALSO; Char c; Int ContPal =0; do { c= getche(); if(( c== ) || ( c ?\r)) { if (EsPalabra) { ContPal++; EsPalabra = FALSO;} } else if(!EsPalabra) EsPalabra = VERDADERO; } while (c != \r); printf(\nLa cantidad de palabras es : %d, ContPal); }

Prof: Osvaldo J. Onorati

Hoja N. 14

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Estructuras:
Coleccin de miembros cuyos tipos pueden ser distintos # include <stdio.h> struct nombre { tipo nombre del miembro1; tipo nombre del miembro2; }; void main()

Ejemplo de uso de estructuras: Programa que permite cargar una fecha sin verificar a una estructura creada # include <dos.h> # include <stdio.h> struct fecha { char dia,mes ; int anio ; }; void main() { fecha f1; f1.dia =18 ; f1.mes = 4 ; f1.anio = 2001 ; printf ( \n la fecha de hoy es: %d , fi.dia ) ; printf ( %d , f1.mes) ; printf ( %d , f1.anio) ; delay (3400); // Delay detiene el tiempo de ejecucin por un
intervalo igual al n entre parntesis

// asigna un arias a una estructura para usar el nombre ms corto

Prof: Osvaldo J. Onorati

Hoja N. 15

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Ejercicio de tarea : Permitir ingresar una fecha y corroborar que sea correcta # include <dos.h> # include <stdio.h> # include <iostream.h> struct fecha { char dia,mes ; int anio ; }; void main() { fecha f1; // asigna un arias a una estructura para usar el nombre ms corto char verifica = 0; // si verifica = 0 fecha correcta si= 1 no es incorrecta scanf (\n ingrese el da de la fecha %d , &f1.dia ) ; scanf (\n ingrese el mes de la fecha %d , &f1.mes ) ; scanf (\n ingrese el ao de la fecha %d , &f1.anio ) ; // verificacin de la consistencia del dato ingresado: switch (f1.mes) { case = (1 || 3 || 5 || 7 || 8 || 10 || 12) : If (( f1.dia < 1) || (f1.dia > 31)) Verifica = 1; else Verifica = 0; break ; case = (4|| 6 || 9 || 11) : If (( f1.dia < 1) || (f1.dia > 30)) Verifica = 1; else Verifica = 0; Break ; case = (2) : If ((( f1.dia < 1) || ( f1.dia > 28)) && (f1.anio % 4 <> 0)) Verifica = 1; else If ((( f1.dia < 1) || ( f1.dia > 29)) && (f1.anio % 4 == 0)) Verifica = 1; else Verifica = 0; break ; default; Verifica = 1 ; break ; } If (Verifica == 0) {printf ( \n la fecha ingresada es: %d , fi.dia ) ; printf ( %d , f1.mes) ; printf ( %d , f1.anio) ;} else printf ( \n la fecha ingresada es incorrecta: ) ; printf ( \n Este programa pudo ser realizado GRACIAS a los conocimientos adquiridos junto al profesor Osvaldo Onorati ) ; delay (3400); }

Enumeraciones:
Prof: Osvaldo J. Onorati Hoja N. 16

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Se utilizan cuando es necesario definir un tipo de datos que solamente pueda tomar un pequeo conjunto de valores Ejemplo: Diferencias entre Dias de la semana // Dice la diderencia entre dso sias de la semana # include <iostream.h> # include <dos.h> enum dias { Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo }; void main() { dias dia1, dia2;

dia1 = Martes; dia2 = Jueves; int diferencia= dia2 - dia1; cout << "los dias de diferencia que hay son: " << diferencia <<endl; if (dia1 < dia2) cout << " \n El primer dia esta antes que el segundo \n"; }

Funciones:
Se utilizan para agrupar un conjunto de sentencias en una sola unidad la cual puede ser llamada desde cualquier parte del programa o desde otra funcion La estructura de trabajo ser la siguiente: # include <bibliotecas.h> void funcion(); void main() { instrucciones del programa ; ========== ; ========== ; funcion() ; instrucciones del programa ; ========== ; ========== ; funcion() ; instrucciones del programa ; ========== ; ========== ; } void funcion () { instrucciones de la funcion ; ========== ; ========== ; ========== ; }

Prof: Osvaldo J. Onorati

Hoja N. 17

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Ejemplo funcion que imprime cadena de asteriscos entre los resultados // Contador de blancos, comas, dos puntos y otros en una frase # include <iostream.h> # include <conio.h> # include <dos.h> void asteriscos(); // incluyo la funcion asrerisco void main() { int contbl; int contco; int contdp; int contot; contbl = 0; contco = 0; contdp = 0; contot = 0; char c ; // contador de blancos // contador de comas // contador de dos puntos // contador de otros // almacena caracter leido

while ((c=getche()) != '\r') // miestras no sea enter

{switch (c) { case ' ': contbl++;break; // si es blanco case ',': contco++;break; // si es coma case ':': contdp++;break; // si es dos puntos default: contot++; // si es otro caracter } } // Salida de pantalla asteriscos(); cout <<" \n Cantidad se blancos: " << contbl ; asteriscos(); cout <<" \n Cantidad se comas: " << contco ; asteriscos(); cout <<" \n Cantidad se dos puntos: " << contdp ; asteriscos(); cout <<" \n Cantidad se otros caracteres: " << contot ; asteriscos(); } // realizo la funcin asterisco() void asteriscos() { cout <<"\n"; for (int j= 0; j < 40; j++) cout <<"*"; cout <<"\n"; } Ejemplo: Funcion que intercambie dos nmeros entre si Prof: Osvaldo J. Onorati Hoja N. 18

PROGRAMACIN II // intercambia dos valores entre si # include <iostream.h> # include <dos.h> void intercambia (int &a, int &b); void main() { int var1; int var2;

Borland C++ - Turbo C - Visual C++

cout << ("\n ingrese un numero ") ; cin >> var1; cout << ("\n ingrese otro numero ") ; cin >> var2; intercambia (var1,var2); cout<<("\n Ahora el primero es = ") << var1 ; cout<<("\n Ahora el segundo es = ") << var2 ; } void intercambia (int &a, int &b) { int aux = a ; a=b; b = aux; } Ejemplo: Funcion Entera # include <iostream.h> # include <dos.h> int Suma (int A, int B) { return A + B; } void main() { int N1, N2; cout << \nIngrese Nro.1 ; cin >> N1; cout << \nIngrese Nro.2 ; cin >> N2; cout << \n Suma = << Suma( N1, N2); } Ejemplo: Funcion para realizar un descuento del 5% // descuentos por defecto en una funcin # include <iostream.h> # include <dos.h> void descuento (float &valor, float porc=5); void main() { float valor; cout << ("\n ingrese un valor ") ; cin >> valor; descuento (valor); cout<<("\n Con el descuento del 5% el valor pasa a ser = ") << valor ; } void descuento (float &valor, float porc ) { valor -= valor *porc/100; }

Prof: Osvaldo J. Onorati

Hoja N. 19

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Ejemplo Funcin para realizar descuentos: // descuentos por una funcin # include <iostream.h> # include <dos.h> void descuento (float &valor, float &porc); void main() { float valor; float porc; cout << ("\n ingrese un valor ") ; cin >> valor; cout << ("\n ingrese un porcentaje de descuento ") ; cin >> porc; descuento (valor,porc); cout<<("\n Con el descuento del ") << porc << (" el valor pasa a ser = ") << valor << endl; } void descuento (float &valor, float &porc ) { valor -= valor *porc/100; }

Vectores:
Se utilizan para agrupar un conjunto de datos en una solo tipo a los cuales puedo utilizar colocando el nombre y entre corchetes el punto exacto de toda la dimensin que quiero utilizar. La estructura de trabajo ser la siguiente: # include <bibliotecas.h> void main() { vector [cantidad] ; instrucciones del programa ; ========== ; ========== ; cin >> vector [x] ; instrucciones del programa ; ========== ; ========== ; }

Prof: Osvaldo J. Onorati

Hoja N. 20

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Programa ejemplo de uso de vectores:


# include <iostream.h> # include <stdio.h> # include <conio.h> # include <dos.h> # define tamanio 4 int i, j, aux; char c; void MuestraAtras (int *a, int cantEle); void MuestraDelante (int *a,int CantEle); void OrdenarVector (int *edades,int CantEle); void main() { //

clrscr(); int Edades [tamanio]; int *p; p = &Edades; int ele; for (i=0; i< tamanio;i++) { cout<<"\nIngrese la %d" << i+1 <<" edad: "; cin >> *(Edades+i); }

printf ("\n Elemento 2 %d", Edades[1]); c=getche(); OrdenarVector (Edades,tamanio); MuestraDelante(Edades,tamanio); MuestraAtras(Edades,tamanio); cout << "\n Elementos pares " << endl; for (i=1;i < tamanio; i= i+2) { cout << " \n Elemento " << i+1 << ": " << "Edad: " << *(p+i) << endl; } cout << "\n Elementos impares" << endl; for (i=0;i < tamanio; i=i+2) { cout << " \n Elemento " << i+1 << ": " << "Edad: " << *(p+i) << endl; } getche();

// Funcion muestra atras void MuestraAtras (int*a,int cantEle) { clrscr(); cout << "\n Muestra hacia atras "<< endl; Prof: Osvaldo J. Onorati Hoja N. 21

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

for (int i= CantEle;i > 0 ;i --) cout << " \n Elemento " << i << ": " << "Edad: " << *(a+(i-1)) << endl; c=getche(); } // Funcion muestra hacia adelante void MuestraDelante (int*a,int cantEle) { clrscr(); cout << "\n Muestra hacia adelante " << endl; for (int i= 0;i < CantEle ;i ++) cout << " \n Elemento " << i+1 << ": " << "Edad: " << *(a+(i)) << endl; c=getche(); } // Funcion ordena vector void OrdenarVector (int *edades,int cantEle) { clrscr(); int Aux; for (i=0 ; i< CantEle-1; i++) for (j=0; j < CantEle ; j++) { cout << " \n Elemento j: " << j << ": " << Edades[j] <<"j+1"; cout << Edades [j+1] << " i: " << i << endl; if (edades[j+1] < edades[j] ) { // aux = *(p+j); Es igual que la orden que continua aux= edades[j]; edades[j]= edades[j+1]; edades [j+1] = aux; cout << "aux Vec: " << aux << endl; } } c=getche(); }

Prof: Osvaldo J. Onorati

Hoja N. 22

PROGRAMACIN II Trabajo prctico N 1

Borland C++ - Turbo C - Visual C++

Objetivo: realizar un programa que informe las estadsticas de ventas. Proceso: Se dispone por el momento de 10 sucursales que se identifican del 1 al 10 durante la carga. a) solicitar al operador el codigo de sucursal b) acumular por sucursal el importe c) informar el total de ventas d) informar que sucursal es la que ms vendio y la que menos vendi e) informar el promedio de ventas (ignorar en todos los casos aquellas sucursales que no tuvieron ventas f) Porcentaje de c/ sucursal g) Ordenar las ventas totales y listarlas de mayor a menor Se debe utilizar al menos dos funciones en todo el sistema.
// Programa manejo sucursales #include<stdio.h> #include<dos.h> #include<iostream.h> #include<conio.h> #define tamanio 11 // colocar la cant de sucursales mas 1 void asteriscos (); void borrapantalla(); void main() { // declaracion de variables float ventas[tamanio]; float aux; int suc; int i; int sucvende; float max; float min; float posmax; float posmin; float porcentaje; float promedio; // inicializacion de las variables suc = 0; for (i=0;i<tamanio;i++) ventas[i]=0; sucvende = 0; promedio = 0; // Carga de datos mientras la sucursal no sea cero do { cout << " ingrese el numero de sucursal cin >> suc; " ;

// verificacin de la consistencia de la sucursal e ingreso venta: if ((suc >= 1 )&& (suc <= tamanio - 1)) { cout << " ingrese el importe de la venta: cin >> aux; ventas[suc] = ventas[suc] + aux; " ;

de

Prof: Osvaldo J. Onorati

Hoja N. 23

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

ventas[0] = ventas[0] + aux; } else if (suc != 0) cout <<" el numero de sucursal es invalido"<< endl; } while (suc != 0); borrapantalla(); // impresion del vector ventas en cero colca el total de ventas // //for (i=1;i<tamanio;i++) // cout << i << " " << ventas[i]<< endl; cout << " Ventas totales " << ventas[0] << endl; // // // Verificar el maximo y el minimo de ventas y en que sucursal max = 0; min = ventas[0]; posmax=0; posmin=0; for (i=1;i<tamanio;i++) { if (ventas[i] != 0) { if (max <= ventas[i]) { max = ventas[i]; posmax = i; } if (min >= ventas[i]) { min = ventas[i]; posmin = i; } } } cout << endl; asteriscos(); cout << " la venta minima fue en la sucursal: de $ : " << min << endl; cout << " la venta maxima fue en la sucursal: de $ : " << max << endl; asteriscos(); // Decir el porcentaje de venta de cada cout << endl; asteriscos(); for (i=1;i<tamanio;i++) { if (ventas[i] != 0) { porcentaje = (((ventas[i]) / (ventas [0]) )* 100 ); cout << " la venta de la sucursal: " << i << " es de $ : " << ventas[i] << " porcentaje de venta: " << porcentaje <<" % " << endl; } } asteriscos(); // Decir el promedio de ventas cout << endl; asteriscos(); de las sucursales

" << posmin << " " << posmax << "

y es y es

sucursal

Prof: Osvaldo J. Onorati

Hoja N. 24

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

for (i=1;i<tamanio;i++) if (ventas[i] != 0) sucvende ++; promedio= (ventas[0]) / (sucvende); cout << " El promedio de ventas es de : entre : " << sucvende << " sucursales asteriscos(); cout << endl ; asteriscos(); cout << "* Veronica asteriscos(); cout << endl ; }

" << promedio << " " << endl;

y fue

este programa fue hecho por Luis, Pinky, Angy y *" << endl;

// Funcion para dibujar asteriscos entre resultados void asteriscos () { for (int j=1;j<80;j++) cout << "*"; cout << endl; } // Funcion para borrar pantalla void borrapantalla () { for (int j=1;j<26;j++) cout << endl; }

Prof: Osvaldo J. Onorati

Hoja N. 25

PROGRAMACIN II Trabajo prctico N 2

Borland C++ - Turbo C - Visual C++

Objetivo: realizar un programa que informe las estadsticas de produccin de leche Proceso: Se dispone por el momento de 8 estancias que se identifican del 1 al 8 y dos tipos de ganado a) Cargar la matriz b) Promedio por estancia y total de produccion c) informar cual es la estancia de menor produccin del primer tipio de ganado y cual la de ms produccin del segundo tipo de ganado d) informar que zona es la mas productiva (Norte, Sur Este u oeste. Se debe utilizar al menos dos funciones en todo el sistema.
#include<conio.h> #include<iostream.h> #include<stdio.h> #include<dos.h> const cantest = 8; const cantgan = 2 ; float promedio (int &a ); void main() { //declaracin e inicializacin de variables int estancia [cantest] [cantgan]; int i,j; float promtot=0; float promtip=0; float prompar=0; float promgan=0; float promtotgan=0; int prodmin=0; int prodmax=0; int estmin=0; int estmax=0; int zona [4];//norte,sur,este,oeste int zonmax=0; int zonmin=0; int posmin=0; int posmax= 0; int tipozona; // para inicializar la matriz de estancias for( i=0; i<cantest;i++) //recorro tipo estancias for( j=0; j<cantgan; j++) // recooro tipo de ganado estancia [i] [j] = 0; //inicializar vector de zona for( j=0; j<4; j++) // recorro tipo de zona zona [j] = 0; //cargar la matriz de estancias for( i=0; i<cantest;i++) //recorro tipo estancias for( j=0; j<cantgan; j++) // recooro tipo de ganado {cout <<" Cargue el tipo de ganado: "<< j+1 << " para la Estancia numero: " << i+1 <<" : " ; cin >> estancia[i] [j] ; cout << endl; } // // impresion del vector for( i=0; i<cantest;i++)

//recorro tipo estancias

Prof: Osvaldo J. Onorati

Hoja N. 26

PROGRAMACIN II
// // // // // // {

Borland C++ - Turbo C - Visual C++

for( j=0; j<cantgan; j++) // recooro tipo de ganado { cout<< estancia [i] [j];//imprime } } " << promedio

cout << "El promedio total de produccion es de : (estancia ) /cantest << endl; //buscar promedio por tipo de ganado for(j=0; j<cantgan;j++) { promgan=0; for(i=0; i<cantest;i++) {

promgan=promgan+ estancia [i] [j] ; } cout<<"El promedio parcial de ganado es: "<<promgan/cantest << endl; promtotgan=promgan/cantest + promtotgan + promgan; } cout<<"El promedio total del ganado es: "<<promtotgan/cantgan << endl; //buscar produccin minima del primer tipo de ganado prodmin=estancia [0] [0] + 1; for(i=0; i<cantest;i++) { if (prodmin> estancia [i] [0]) { prodmin= estancia [i] [0]; estmin=i; } } cout<< "La produccion minima es de: la Estancia numero: " << estmin +1 << endl;

"

<< prodmin << " en

//buscar produccin maxima del cuarto tipo de ganado for(i=0; i<cantest;i++) { if (prodmax < estancia [i] [cantgan-1]) { prodmax= estancia [i] [cantgan-1]; estmax = i; } } cout<< "La produccion maxima es de: " << prodmax << " en la Estancia numero: " << estmax + 1 << endl; //buscar zona ms y menos producctiva for( i=0; i<cantest;i++) { if (i >=0 && i <= if (i >=2 && i <= if (i >=4 && i <= if (i >=6 && i <= //recorro tipo estancias 1) 3) 5) 7) tipozona tipozona tipozona tipozona = = = = 0; 1; 2; 3;

for( j=0; j<cantgan; j++) // recooro tipo de ganado { zona [tipozona] = zona [tipozona] + estancia [i] [j]; } } zonmax = zona [0];

Prof: Osvaldo J. Onorati

Hoja N. 27

PROGRAMACIN II
zonmin = zona [0]; for (i=1 ; i < 4; i++) { if (zonmax < zona [i]) { } } zonmax= zona [i]; posmax = i;

Borland C++ - Turbo C - Visual C++

cout << " la zona de mas productividad es la zona if if if if (posmax (posmax (posmax (posmax == == == == 0) 1) 2) 3) cout cout cout cout <<"norte"; << "sur"; << "este"; << "oeste";

" ;

cout <<endl;

cout << "programa logrado por Luis y Veronika " << endl; } float promedio (&a) { float prompar; float promtot; int i,j; //buscar promedio total y parcial de cada estancia for( i=0; i<cantest;i++) //recorro tipo estancias { prompar = 0; for( j=0; j<cantgan; j++) // recorro tipo de ganado { prompar = prompar + a [i] [j] ; } cout << "El promedio de la estancia " << i+1 << " es : " << prompar / cantgan << endl; promtot = promtot + prompar; } return prontot; }

Prof: Osvaldo J. Onorati

Hoja N. 28

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Ordenar un vector
for ( i= 0 ; i < tamanio ; i ++ ) for ( j = 0 ; j < (tamanio 1) ; j++ if V [ j ] < V [ j +1 ] Si Aux = V [ j ] V [ j ] = V [j + 1] V [ j + 1] = aux for (j = 0 ; j < tamanio ; j ++) cout << V [ j ] << endl ; no

Void ordenar vector ( V [ ] , tamanio) { veces = tamanio; for ( i= 0 ; i < tamanio ; i ++ ) { veces -= 1; for ( j = 0 ; j < (veces 1) ; j++ if ( V [ j ] < V [ j +1 ]) { Aux = V [ j ] V [ j ] = V [j + 1] V [ j + 1] = aux } } // muestra el vector For j = 0 ; j < tamanio ; j ++ Cout << V [ j ] << endl ;

Prof: Osvaldo J. Onorati

Hoja N. 29

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

TRABAJO CON ARCHIVOS SECUENCIALES


Ordenes fundamentales
Debe estar incluida la biblioteca # include <fstream.h> # include <Iostream.h>

ofstream Nombrelogico (disco: \\ ruta \\ nombre.ext) Crea y/o abre un archivo de salida que manejara con el nombre lgico en el disco elegido dentro de la ruta seleccionada con el nombre y extensin propuestos. Se relaciona directamente con el objeto cout << Ifstream Nombrelogico (disco: \\ ruta \\ nombre.ext) Abre un archivo de entrada que manejara con el nombre lgico en el disco elegido dentro de la ruta seleccionada con el nombre y extensin propuestos. Se relaciona directamente con el objeto cin >> iofstream Nombrelogico (disco: \\ ruta \\ nombre.ext) Crea y/o abre un archivo de entrada / salida que manejara con el nombre lgico en el disco elegido dentro de la ruta seleccionada con el nombre y extensin propuestos. Se relaciona directamente con los objetos cout << y cin>>

Ordenes write y read


Nombrelogico . write ( (char*) & desde , tamao ) ; &struc, sizeof(stru)

Nombrelogico . read ( (char*) & desde , tamao ) ; &struc, donde: white read (char*) & desde tamao sizeof(stru)

= escribir = leer = convierte a caracteres = pone el puntero en el lugar a leer o escrbir = cantidad de caracteres a leer o escribir

Forma de abrir y cerrar archivos


Todo archivo para poder ser usado necesita primero existir ( si existe lo abro y si no lo debo crear y luego abrir, luego lo puedo operar (leer y/o escribir) y por ultimo lo debo cerrar. Nombrelogico = fopen (disco: \\ ruta \\ nombre.ext, r) Abre el archivo en la direccion especificada y lo usar con el nombre logico que le puse fclose (nombrelogico) Cierra el archivo que posee el nombre logico especificado

Prof: Osvaldo J. Onorati

Hoja N. 30

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

fread (&desde , tamao , cantidad, archivo logico) Lee el archivo que marca el puntero, la cantidad de caracteres que indica el tamao y o realizar tantas veces como indica la cantidad. fwrite (&desde , tamao , cantidad, archivo logico) Escribe el archivo que marca el puntero, la cantidad de caracteres que indica el tamao y o realizar tantas veces como indica la cantidad. <string.h> strcpy (a_donde , desde) Lee la cadena desde y la copia en la cadena a_donde strlen(cadena) Calcula la longitud de una cadena y devuelve el valor numerico de la cantidad de caracteres

strcmp (a_donde, desde) comparalas dos cadenas y devuelve un valor entero devuelve cero si ambas cadenas son iguales, un numero positivo si la primer cadena es mayor que la segunda y negativo si la primer cadena es menor que la segunda. strcat (a_donde, desde) Aade la cadena desde a continuacin de la cadena a_donde

Prof: Osvaldo J. Onorati

Hoja N. 31

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Programa Ejemplo :CARGA


// Carga de archivo # include <fstream.h> # include <iostream.h> # include <stdio.h> # include <conio.h> # include <dos.h> // Generacion de estructuras struct registro { unsigned long int clave; char nombre [30]; unsigned int peso; float altura; }; char sigo; struct registro r; // declaracion de funciones void ingreso (); void main() { ofstream Arch ("C:\\sistemas\\maestro.spl"); if (Arch) { printf ("\n\t Siguiente registro Amigo ........"); printf ("\n Ingresa otro registro.....: Si S/s No N/n "); cin >> sigo; clrscr(); while (sigo == 'S' || sigo == 's' ) { ingreso (); Arch.write ((char*) &r, sizeof(r)); printf ("\n\t Siguiente registro Amigo ........"); printf ("\n Ingresa otro registro.....: Si S/s No N/n "); cin >> sigo; clrscr(); } Arch.close(); } } // Funcion ingreso void ingreso() {printf ("\n Ingrese el numero de clave........: "); sacnf ("%d", &r.clave); printf ("\n Ingrese el nombre.................: "); sacnf ("%s", &r.nombre); printf ("\n Ingrese el peso .................: "); sacnf ("%d", &r.peso); printf ("\n Ingrese la altura.................: "); sacnf ("%f", &r.altura); printf ("\n Numero de clave...................: %d",r.clave); printf ("\n Nombre............................: %s",r.nombre); printf ("\n Peso..............................: %d",r.peso); printf ("\n Altura............................: %d",r.altura); getche(); }

Programa Ejemplo : GRABO


Prof: Osvaldo J. Onorati Hoja N. 32

PROGRAMACIN II // Crabar un archivo # include <fstream.h> # include <iostream.h> # include <stdio.h> # include <conio.h> # include <dos.h> // Generacion de estructuras struct registro { unsigned long int clave; char nombre [30]; unsigned int peso; float altura; }; char sigo; struct registro r; // declaracion de funciones void ingreso ();

Borland C++ - Turbo C - Visual C++

void main() { oftream Arch ("C:\\sistemas\\maestro.spl"); if (Arch) { printf ("\n\t Siguiente registro Amigo ........"); printf ("\n Ingresa otro registro.....: Si S/s No N/n "); cin >> sigo; clrscr(); while (sigo == 'S' || sigo == 's' ) { ingreso (); Arch.write ((char*) &r, sizeof(r)); printf ("\n\t Siguiente registro Amigo ........"); printf ("\n Ingresa otro registro.....: Si S/s No N/n "); cin >> sigo; clrscr(); } Arch.close(); } } // Funcion ingreso void ingreso() printf ("\n Ingrese el numero de clave........: "); sacnf ("%d", &r.clave); printf ("\n Ingrese el nombre.................: "); sacnf ("%s", &r.nombre); printf ("\n Ingrese el peso .................: "); sacnf ("%d", &r.peso); printf ("\n Ingrese la altura.................: "); sacnf ("%f", &r.altura); printf ("\n Numero de clave...................: %d",r.clave); printf ("\n Nombre............................: %s",r.nombre); printf ("\n Peso..............................: %d",r.peso); printf ("\n Altura............................: %d",r.altura); getche() }

Programa Ejemplo :LEO Y GRABO


Prof: Osvaldo J. Onorati Hoja N. 33

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

// Carga de archivo # include <fstream.h> # include <iostream.h> # include <stdio.h> # include <conio.h> # include <dos.h> // Generacion de estructuras struct regmae { unsigned long int clave; char nombre [30]; unsigned int peso; float altura; }; char sigo; struct regmae rm, rn, rs; ifstream mae (c:\\archivos\\maestro.spl); ifstream nov (c:\\archivos\\novedades.spl); ofstream sal (c:\\archivos\\salida.spl); // declaracion de funciones void leomae (); void leonov (); void grasalmae (); void grasalnov (); void main() { if (mae) { leomae() ; while (mae) { clrscr() ; printf ("\n printf ("\n printf ("\n printf ("\n printf ("\n

Contenido del registro maestro ....... \n"); N clave ....... : %d ,rmclave); Nombre ....... : %s , rm.nombre); Peso............. : %d , rm.peso); Estatura........ : %2f , rm.altura);

getche(); grasalmae(); leomae(); } printf (\n Fin de archivo Prersione una tecla) ; getche(); mae.close(); } else { } if (nov) { Prof: Osvaldo J. Onorati Hoja N. 34 printf (\n Error al abrir el archivo maestro);

PROGRAMACIN II leonov() ; while (nov) { clrscr() ; printf ("\n printf ("\n printf ("\n printf ("\n printf ("\n

Borland C++ - Turbo C - Visual C++

Contenido del registro novedad ....... \n"); N clave ....... : %d ,rn.clave); Nombre ....... : %s , rn.nombre); Peso............. : %d , rn.peso); Estatura........ : %2f , rn.altura);

getche(); grasalnov(); leonov(); } printf (\n Fin de archivo Prersione una tecla) ; getche(); nov.close(); } else { printf (\n Error al abrir el archivo novedad); } Sal.close(); } void leomae() { mae.read((char*) &rm , sizeof (rm)); }

void leonov() { nov.read((char*) &rn , sizeof (rn)); } void grasalmae() { rs.clave = rm.clave; strcpy (rs.nombre, rm.nombre); rs.peso = rm.peso; rs.altura=rm.altura; sal.write ((char*), &rs,sizeof(rs)); } void grasalnov() { rs.clave = rn.clave; strcpy (rs.nombre, rn.nombre); rs.peso = rn.peso; rs.altura=rn.altura; sal.write ((char*), &rs,sizeof(rs)); }

Prof: Osvaldo J. Onorati

Hoja N. 35

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Trabajo Prctico de Agenda.


Objetivo: 1. 2. actualizar el archivo agenda flow (diagrama de flujo) de proceso

agenda

novedades

Programa

Agenda Actualizada

impresin

3.

Archivos 3.1 De entrada 3.1.1 agenda:

organizacin secuencial ordenada ascendentemente por cl_age cl_age IL nombr C [30] domi C [30] tele C [15] fax C [15]

3.1.2 Novedades organizacin secuencial ordenada ascendentemente por cl_age cl_age IL nombr C [30] domi C [30] tele C [15] fax C [15] cod_n C 3.2 De salida 3.2.1 agenda actualizada organizacin secuencial ordenada ascendentemente por cl_age cl_age IL nombr C [30] domi C [30] tele C [15] fax C [15] 3.2.2. Listado de actualizaciones Diseo a cargo del analista programador previa aprobacin del responsable del sistema 4. Proceso

Se actualizara el archivo agenda con los registros que provienen del archivo de novedades de acuerdo al campo de cod_n que ser A, B, N, D, T, F para cada tipo de alta baja o modificacin de nombre, domicilio, telefono o fax. Prof: Osvaldo J. Onorati Hoja N. 36

PROGRAMACIN II ALTA

Borland C++ - Turbo C - Visual C++

Se incorporar la novedad en el archivo agenda actualizada editndola con la leyenda alta realizada De existir clave igual en agenda editar el registro de la novedad con la leyenda ALTA EXISTENTE BAJA Se deber eliminar del archivo agenda el registro con igual clave que la novedad editando el registro a eliminar con la leyenda Baja realizada De no existir registro a eliminar editar la novedad con la leyenda Baja inexistente MODIFICACIN Se actualizar el campo que corresponda segn el codigo correspondiente, se editar el registro antes y despus de modificado con la leyenda modificacin de .... (segn corresponda) De no existir el registro a modificar se editar la novedad con la leyenda modificacin inexistente

Diagrama de flujo del sistema:


INICIO
Include < Struct a S= 0 Char obs [15] Abrir Abrir Abrir Abrir age nov sal lis .h> n aa tra

Leer age Es fin F a.cl_age = 65535 V

leer nov Es fin F n.cl_nov = 65535 V

Prof: Osvaldo J. Onorati

Hoja N. 37

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

PROGRAMA
INICIO While

si ? no proceso a.cl_age != 65535 n.cl_clave != 65535

FIN

PROCESO
a.cl_age ! = n.cl_age F IGUAL () F a.cl_age > n.cl_age V V

MENOR ()

MAYOR ()

MAYOR ( )
Con_n ! = A F ALTA_REA ( ) F cod_n ! = B V V

BAJA_INE ( )

MODI_INE( )

Leer nov Es fin F n.cl_age = 65535 V

Prof: Osvaldo J. Onorati

Hoja N. 38

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

IGUAL ( )
Con_n ! = A F ALTA_EX ( ) F cod_n ! = B V V

BAJA_REA ( )

MODI_REA( )

Leer nov Es fin F n.cl_age = 65535 V

MENOR ( )
SAL AGE

GRABAR SAL

S=1 F Leer age Es fin F V a.cl_age = 65535 S =0 age tra V

ALTA_EX ( )
OBS IMPRI_N ( ) ALTA EXISTENTE

BAJA_INE ( )
OBS IMPRI_N ( ) BAJA INEXISTENTE

Prof: Osvaldo J. Onorati

Hoja N. 39

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

ALTA_REA ( )
S=1 TRA AGE OBS IMPRI_N ( ) AGE NOV ALTA REAL

BAJA_REA ( )
OBS BAJA REAL IMPRI_A ( ) S=1 F Leer age Es fin F V a.cl_age = 65535 S =0 age tra V

MODI_REA ( )
OBS

Impri_a ( )
Con_n ! = N F a.nombr Obs n.nombr F modi nombre Obs modi Domic F cod_n != T V cod_n ! = D V V

a.domi

n.domi a.tele n.tele a.fax obs modi obs tele

n.fax modi fax

impr_n ( )

Prof: Osvaldo J. Onorati

Hoja N. 40

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

MODI_INE ( )
Con_n ! = N F cod_n ! = D F Obs nombre inex obs inex domi V cod_n != T F V V

obs

inex tele

obs

inex fax

impr_n ( )

IMPRI_N ( )

Cont_l > tope F Titulos ( ) List List List List List n.cl_age n.domi n.tele n.fax obs V

Imprimir linea Cont_l = cont_l + 1

Prof: Osvaldo J. Onorati

Hoja N. 41

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

IMPRI_A ( )

Cont_l > tope F Titulos ( ) List List List List List a.cl_age a.domi a.tele a.fax obs V

Imprimir linea Cont_l = cont_l + 1

TITULOS ( )

Cont_pag = cont_pag +1

Tit1 Tit2 Tit3 Tit4 Imprimir tit1 Imprimir tit2 Imprimir tit3 Imprimir tit4 Cont_l = 4

listado de actualizacin fecha = DATE() Pagina n = cont_pag cod_n Nombre direccion telefono fax obs ********************************************************

Prof: Osvaldo J. Onorati

Hoja N. 42

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Sistema completo para ABM de una Empresa Manejo del archivo de clientes
Programa para el ABM deClientes Programa para Alta de clientes
#include<fstream.h> #include<iostream.h> #include<stdio.h> #include<conio.h> #include<string.h> struct cliente { unsigned int cod_cli; char descripcion[30]; }; struct cliente c; char sigo; void ingreso() {cout<<"\n ingrese el cod de cliente...: "; cin>>c.cod_cli; cout<<"\n ingrese descripcion.......:" ; cin>>c.descripcion; } FILE *Cli; void main() { Cli=fopen("c:\\Cliente\\Cliente.spl","w"); cout<<"\n desea ingresar registros s/n"; cin>>sigo; while(sigo=='s') {

ingreso(); fwrite(&c,sizeof(c),1,Cli); cout<<"\n desea ingresar registros s/n"; cin>>sigo; } }

Prof: Osvaldo J. Onorati

Hoja N. 43

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Programa para Novedades de clientes


#include<stdio.h> #include<conio.h> #include<string.h> struct novedad { unsigned int cl_nov; char descripcion[30]; int cod_n; }; struct novedad n; char sigo; void ingreso() {cout<<"\n ingrese el cod de clave...: "; cin>>n.cl_nov; cout<<"\n ingrese descripcion.......:" ; cin>>n.descripcion; cout<<"\n ingrese codigo de novedad.: "; cin>>n.cod_n; } FILE *Nov; void main() { Nov=fopen("c:\\Cliente\\NovCli.spl","w"); cout<<"\n desea ingresar registros s/n"; cin>>sigo; while(sigo=='s') { ingreso(); fwrite(&n,sizeof(n),1,Nov); cout<<"\n desea ingresar registros s/n"; cin>>sigo; } }

Prof: Osvaldo J. Onorati

Hoja N. 44

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Programa de ABM de Productos


#include <fstream.h> #include <iostream.h> #include <stdio.h> #include <conio.h> #include <string.h> #include <dos.h> FILE *Cli, *Nov, *Aux ; struct c { unsigned long int codc; char desc [30]; }; struct nc { unsigned long int codc; char desc [30]; unsigned long int codn; }; struct c C, A, T; //A Salida struct nc N; int s=0; int fC=0; int fN=0; char Obs [30]; void Abrir(); //Definir Funciones void Proc(); void Fin(); void Mayor(); void Menor(); void Igual(); void imp_Obs(); void LeoC(); void LeoN(); void Modi_Inex(); void Baja_Inex(); void Modi_Real(); void Baja_Real(); void Alta_Real(); void Alta_Exi(); void main() { Abrir(); while ((N.codc!=65535)||(C.codc!=65535)) { if (C.codc!=N.codc) if (C.codc>N.codc) Mayor(); else Menor(); else Igual(); } int fin=0; fclose(Aux); } Prof: Osvaldo J. Onorati Hoja N. 45 /* Abrir Archivo */

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

void Abrir() { if((Cli=fopen("c:\\Cliente\\Cliente.spl","r"))==NULL) {cout<<"\nEl archivo no Existe"; C.codc=65535;} else LeoC(); if((Nov=fopen("c:\\Cliente\\novcli.spl","r"))==NULL) {cout<<"\n El archivo no Existe"<<endl; C.codc=65535; N.codc=65535;} else LeoN(); Aux=fopen("c:\\Cliente\\Auxiliar.spl","w"); } void Igual() { if((N.codn)!=1) if((N.codn)!=2) Modi_Real(); else Baja_Real(); else Alta_Exi(); } LeoN(); } void Mayor() { if((N.codn)!=1) if((N.codn)!=2) Modi_Inex(); else Baja_Inex(); else Alta_Real(); LeoN(); } void Menor() { A.codc=C.codc; strcpy(A.desc,C.desc); fwrite (&A,sizeof(A),1,Aux); if(s==1) { s=0; C.codc=T.codc; strcpy(C.desc,T.desc); } else LeoC(); } void Baja_Inex() { cout<<"\nBaja Existente"; } Prof: Osvaldo J. Onorati Hoja N. 46

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Void LeoN() { if((fread(&N,sizeof(N),1,Nov))==NULL) {fclose(Nov); N.codc=65535;} } void LeoC() { if((fread(&C,sizeof(C),1,Cli))==NULL) {fC=1; fclose(Cli); C.codc=65535;} } void Baja_Real() { cout<<"\nBaja Real"; if(s==1) { s=0; C.codc=T.codc; strcpy(C.desc,T.desc); } else LeoC(); } void Alta_Real() { s=1; T.codc=C.codc; strcpy(T.desc,C.desc); C.codc=N.codc; strcpy(C.desc,N.desc); cout<<"\nAlta Real"; } void Modi_Real() { strcpy(C.desc,N.desc); cout<<"\nSe modidico La descripcion"; } void Modi_Inex() { strcpy(C.desc,N.desc); cout<<"\nModificacion de la descripcion Inexistente"; } void Alta_Exi() { cout<<"\nAlta Existente"; }

Prof: Osvaldo J. Onorati

Hoja N. 47

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Manejo del archivo de ventas


Programa para Alta de clientes
/* ALTA DE VENTA - Se inicializa la matriz CLI y PRO - Se toma el archivo Cliente .spl y se lo carga a memoria - Se toma el archivo Producto.spl y se lo carga a memoria - Se realiza Carga de Venta chequeando las cargas de memoria por Cliente y Producto. - Queda disponible el archivo Venta.spl para la Consulta. */ #include <fstream.h> #include <iostream.h> #include <stdio.h> #include <conio.h> #include <string.h> #define VC 10 #define VP 10 /* Vector/Matriz */ int CLI [VC]; int PRO [VP][2]; /* Estructuras */ struct Prod { unsigned long int codp; char desp [30]; unsigned int cant; unsigned int stkm; unsigned int prec; }; struct Clie { unsigned long int codc; char desc [30]; }; struct Vta { unsigned long int vcodc; unsigned long int vcodp; unsigned int vcant; }; struct Prod p;struct Clie c;struct Vta v; int op=0; char sigo='S'; /* Archivo */ ifstream P ("c:\\Venta\\Producto.spl"); ifstream C ("c:\\Venta\\Cliente.spl"); ofstream V ("c:\\Venta\\Venta.spl"); /* Funciones */ void Inicializo(); void CargoCli(); void CargoPro(); void VeoVecMat(); void AltaVta();

Prof: Osvaldo J. Onorati

Hoja N. 48

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

void main() /* Principal */ { cout << "* ALTA DE VENTA * " << endl; Inicializo(); CargoCli(); CargoPro(); VeoVecMat(); /* Menu */ cout << "\n\nVENTA -> 1*Alta / 9*Fin "; cin >> op; while (op != 9) { switch (op) { case 1: AltaVta(); break; case 2: break; default: break; } cout << endl << "VENTA -> 1*Alta / 9*Fin "; cin >> op; } P.close();C.close();V.close(); } /* Funciones */ void Inicializo() { for (int i=0;i<VC;i++) CLI [i]=0; for (i=0;i<VP;i++) { PRO [i][0]=0; PRO [i][1]=0;} cout << endl << "Vector y Matrices Inicializado " << endl; } void CargoCli() { int i=0; C.read((char*) &c,sizeof(c)); if (C) { while (C) { CLI [i]=c.codc; i++; C.read((char*) &c,sizeof(c)); } } else cout << "Cliente Vacio"; }

Prof: Osvaldo J. Onorati

Hoja N. 49

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

void CargoPro() { int i=0; P.read((char*) &p,sizeof(p)); if (P) { while (P) { PRO [i][0]=p.codp; PRO [i][1]=p.cant; i++; P.read((char*) &p,sizeof(p)); } } else cout << "Producto Vacio"; } void VeoVecMat() { cout << "Paso Cliente.spl a Vector * "; for (int i=0;i<VC;i++) cout << CLI [i] << " "; cout << endl << "Paso Producto.spl a Matriz * "; for (i=0;i<VP;i++) cout << PRO [i][0] << "-" << PRO [i][1] << " "; } void AltaVta() { while(sigo=='S'|| sigo=='s') { cout <<"Cod.Cliente: "; cin >> v.vcodc; int sc=0; while (VC > sc) { if ((v.vcodc)==(CLI[sc])) sc=99; else sc++; } if (sc!=99) cout << "** Cliente Inexistente Operacion cancelada **"; else { cout <<"Cod.Producto: "; cin >> v.vcodp; int sp=0; while (VP > sp) { if ((v.vcodp)==(PRO[sp][0])) { cout << "Cantidad Disponible (" << PRO[sp][1] <<") : ";cin >> v.vcant; sp=99; } else sp++; } if (sp!=99) cout << "** Producto Inexistente Operacion cancelada **"; else V.write((char*) &v, sizeof(v)); } cout<<".....................................Otro Alta...S/N"; cin>>sigo; } } /* FIN DE PROGRAMA */

Prof: Osvaldo J. Onorati

Hoja N. 50

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Programa para la consulta de ventas por cliente y productos


/* CONSULTA DE VENTA : - Se inicializa la matriz VTA - Se toma el archivo Venta.spl y se lo carga a memoria - Se realiza Consultas por Cliente y Producto.*/ #include <fstream.h> #include <iostream.h> #include <stdio.h> #include <conio.h> #include <string.h> #define VV 10 /* Matriz */ int VTA [VV][3]; /* Estructuras */ struct Vta { unsigned long int vcodc; unsigned long int vcodp; unsigned int vcant; }; struct Vta v; int op=0; ifstream V("c:\\Venta\\Venta.spl"); void Inicializo(); void CargoVta(); void VeoMat(); void ConsultaVta(); void CCliente(); void CProducto(); void main() /* Principal */ { cout << "* CONSULTA DE VENTA * " << endl; Inicializo(); CargoVta(); VeoMat(); /* Menu */ cout << "\n\nVENTA -> 1*Consulta / 9*Fin "; cin >> op; while (op != 9) { switch (op) { case 1: ConsultaVta(); break; case 2: break; default: break; } cout << endl << "VENTA -> 1*Consulta / 9*Fin "; cin >> op; } V.close(); } Prof: Osvaldo J. Onorati Hoja N. 51

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

/* Funciones */ void Inicializo() { for (int i=0;i<VV;i++) { VTA [i][0]=0; VTA [i][1]=0; VTA [i][2]=0;} cout << endl << "Matrices Inicializado "; } void CargoVta() { int i=0; V.read((char*) &v,sizeof(v)); if (V) { while (V) { VTA [i][0]=v.vcodc; VTA [i][1]=v.vcodp; VTA [i][2]=v.vcant; i++; V.read((char*) &v,sizeof(v)); } } else cout << "\nArchivo Venta Vacio"; } void VeoMat() { cout << endl << "Paso Venta.spl a Matriz * " << endl; for (int i=0;i<VV;i++) cout << VTA [i][0] << "-" << VTA [i][1] << "-" << VTA [i][2] << " "; } void ConsultaVta() { cout << "\nVENTA Consulta-> 1*Por Cliente / 2*Por Producto / 9*Fin "; cin >> op; while (op != 9) { switch (op) { case 1: CCliente(); break; case 2: CProducto(); break; default: break; } cout << "\nVENTA Consulta-> 1*Por Cliente / 2*Por Producto / 9*Fin "; cin >> op; } }

Prof: Osvaldo J. Onorati

Hoja N. 52

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

void CCliente() { int aux=0,s=0; cout << endl << "Ingrese Cliente: ";cin >> aux; for (int i=0;i<VV;i++) { if (aux==VTA[i][0]) { cout << "Cliente: " << VTA [i][0] << " - Producto: " << VTA [i][1] << " - Cantidad: " << VTA [i][2] << endl; s=1; } } if (s==0) cout << "* No Existe Cliente *"; }

void CProducto() { int aux=0,s=0; cout << endl << "Ingrese Producto: ";cin >> aux; for (int i=0;i<VV;i++) { if (aux==VTA[i][1]) { cout << "Producto: " << VTA [i][1] << " - Cantidad: " << VTA [i][2] << " - Cliente: " << VTA [i][0] << endl; s=1; } } if (s==0) cout << "* No Existe Producto *"; } /* FIN DE PROGRAMA */

Prof: Osvaldo J. Onorati

Hoja N. 53

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Programas para manejos de Productos Programa para altas de productos


#include<fstream.h> #include<iostream.h> #include<stdio.h> #include<conio.h> struct p { unsigned long int codp; char desp [30]; unsigned int cant; unsigned int stkm; unsigned int prec; }; char sigo; struct p p; void ingreso();// Funsion

void main() { cout<<"\n Carga de datos en el archivo Productos"; ofstream Producto("c:\\Producto\\producto.spl"); if (Producto) { cout<<"\n Desea ingresar un Registro: Si S/s No N/n: "; cin>>sigo; while(sigo=='S'|| sigo=='s') { ingreso(); Producto.write((char*) &p, sizeof(p)); cout<<"\n Ingresa otro registro : Si S/s No N/n: "; cin>>sigo; } Producto.close(); } } void ingreso() { cout <<"\n Ingrese el Cod. de Producto: "; cin >>p.codp; cout << "\n Ingrese la Descripcin: "; cin >>p.desp; cout <<"\n ingrese la cantidad de Producto: "; cin >>p.cant; p.stkm=p.cant; cout <<"\n Ingrese el importe: "; cin >>p.prec; cout <<" \n Cod. de Producto: "<<p.codp; cout <<" \n Descripcin: "<<p.desp; cout <<" \n Cantidad Prod.: "<<p.cant; cout <<" \n Stock minimo.: "<<p.stkm; cout <<" \n Precio: "<<p.prec; } Prof: Osvaldo J. Onorati Hoja N. 54

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Programa para carga de novedades de productos


include<fstream.h> #include<iostream.h> #include<stdio.h> #include<conio.h> struct np { unsigned long int codp; char desp [30]; unsigned int cant; unsigned long int codn; }; char sigo; struct np n; void ingreso();

/*Funcion*/

void main() { cout<<"\n Carga de datos en el archivo Novedades"; ofstream NovPro("c:\\Producto\\NovPro.spl"); if (NovPro) { cout<<"\n Desea ingresar un Registro: Si S/s No N/n: "; cin>>sigo; while(sigo=='S'|| sigo=='s') { ingreso(); NovPro.write((char*) &n, sizeof(n)); // Crea el archivo cout<<"\n Ingresa otro registro : Si S/s No N/n: "; cin>>sigo; } NovPro.close();//cierro el archivo } } void ingreso() { cout <<"\n Ingrese el Cod. de Producto: "; cin >>n.codp; cout << "\n Ingrese la Descripcin: "; cin >>n.desp; cout <<"\n Ingrese la cantidad de Producto:"; cin >>n.cant; cout <<" \n <<Elija la opcion deseada>>"; cout <<" \n <1-Alta 2-Baja 3-Modificaciones>"; cout <<" \n 4 -Cantidad de Material"; cout <<" \n 5 -Egreso de Material"; cout <<" \n 6 -Actualizacion de Stock Mininimo"; cout <<" \n 7 -Actualizacion de Precio Unitario"; cout <<"\n"; cin >>n.codn; cout <<" \n Cod. de Producto: "<<n.codp; cout <<" \n Descripcion: "<<n.desp; cout <<" \n Cantidad Prod.: "<<n.cant; cout <<" \n Operacion Nro: "<<n.codn; } Prof: Osvaldo J. Onorati Hoja N. 55

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Programa para el ABM de productos


#include <fstream.h> #include <iostream.h> #include <stdio.h> #include <conio.h> #include <string.h> #include <dos.h> FILE *Prod, *Nov, *Aux ; struct p { unsigned long int codp; char desp [30]; unsigned int cant; unsigned int stkm; unsigned int prec; }; struct np { unsigned long int codp; char desp [30]; unsigned int cant; unsigned long int codn; }; struct au { unsigned long int codp; char desp [30]; unsigned int cant; unsigned int stkm; unsigned int prec; }; struct tr { unsigned long int codp; char desp [30]; unsigned int cant; unsigned int stkm; unsigned int prec; }; struct p P; //Alias struct np N; struct au A; struct tr T; int s=0; int fP=0; int fN=0; char Obs [30]; void Abrir(); //Definir Funsiones void Proc(); void Fin(); void Mayor(); void Menor(); void Igual(); void imp_Obs(); void LeoP(); void LeoN(); void Modi_Inex(); Prof: Osvaldo J. Onorati Hoja N. 56 /* Abrir Archivo */

PROGRAMACIN II void Baja_Inex(); void Modi_Real(); void Baja_Real(); void Alta_Real(); void Alta_Exi(); void main() { Abrir(); LeoP(); LeoN();

Borland C++ - Turbo C - Visual C++

while ((N.codp!=65535)||(P.codp!=65535)) { if (P.codp!=N.codp) { if (P.codp>N.codp) { Mayor(); } else { Menor(); } } else { Igual(); } } int fin=0; fclose(Aux); /*Aux=fopen("c:\\Producto\\Auxiliar.spl","r");*/ /*getche(); if((fread(&A,sizeof(A),1,Aux))==NULL) {fclose(Aux); fin=1;}

while(fin!=1) { cout <<" \n Cod. de Producto: "<<A.codp; cout <<" \n Descripcion: "<<A.desp; cout <<" \n Cantidad Prod.: "<<A.cant; cout <<" \n Stock minimo.: "<<A.stkm; cout <<" \n Precio: "<<A.prec<<endl;

if((fread(&A,sizeof(A),1,Aux))==NULL) {fclose(Aux); fin=1;} }*/ }

Prof: Osvaldo J. Onorati

Hoja N. 57

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

void Abrir() { if((Prod=fopen("c:\\Producto\\Producto.spl","r"))==NULL) {cout<<"\nEl archivo no Existe"; P.codp=65535;} if((Nov=fopen("c:\\Producto\\NovPro.spl","r"))==NULL) {cout<<"\n El archivo no Existe"<<endl; P.codp=65535; N.codp=65535;} Aux=fopen("c:\\Producto\\Auxiliar.spl","w"); } void Igual() { if((N.codn)!=1) { if((N.codn)!=2) { Modi_Real(); } else { Baja_Real(); } } else { Alta_Exi(); } LeoN(); } void Mayor() { if((N.codn)!=1) { if((N.codn)!=2) { Modi_Inex(); } else { Baja_Inex(); } } else { Alta_Real(); LeoN(); }

Prof: Osvaldo J. Onorati

Hoja N. 58

PROGRAMACIN II void Menor() { A.codp=P.codp; A.cant=P.cant; strcpy(A.desp,P.desp); A.prec=P.prec; A.stkm=P.stkm; fwrite (&A,sizeof(A),1,Aux); if(s==1) { s=0; P.codp=T.codp; P.cant=T.cant; strcpy(P.desp,T.desp); P.prec=T.prec; P.stkm=T.stkm; } else LeoP(); }

Borland C++ - Turbo C - Visual C++

void LeoN() { if((fread(&N,sizeof(N),1,Nov))==NULL) {fclose(Nov); N.codp=65535;} } void LeoP() { if((fread(&P,sizeof(P),1,Prod))==NULL) {fP=1; fclose(Prod); P.codp=65535;} } void Baja_Real() { cout<<"\nBaja Real"; if(s==1) { s=0; A.codp=T.codp; A.cant=T.cant; strcpy(A.desp,T.desp); A.prec=T.prec; A.stkm=T.stkm; } else LeoP(); }

Prof: Osvaldo J. Onorati

Hoja N. 59

PROGRAMACIN II void Alta_Real() { s=1; T.codp=P.codp; T.cant=P.cant; strcpy(T.desp,P.desp); T.prec=P.prec; T.stkm=P.stkm; P.codp=N.codp; P.cant=N.cant; strcpy(P.desp,N.desp); P.prec=N.cant; P.stkm=N.cant; cout<<"\nAlta Real"; }

Borland C++ - Turbo C - Visual C++

void Modi_Real() { if(N.codn==3) { strcpy(P.desp,N.desp); cout<<"\nSe modidico La descripcion"; } else if(N.codn==4) { P.cant=N.cant; cout<<"\nSe modifico la cantidad"; } } void Modi_Inex() { if(N.codn==3) { strcpy(P.desp,N.desp); cout<<"\nModificacion de la descripcion Inexistente"; } else if(N.codn==3) { P.cant=N.cant; cout<<"\nModificacion de la cantidad Inexistente"; } }

void Alta_Exi() { cout<<"\nAlta Existente"; } void Baja_Inex() { cout<<"\nBaja Inexistente"; }

Prof: Osvaldo J. Onorati

Hoja N. 60

PROGRAMACIN II

Borland C++ - Turbo C - Visual C++

Indice Temtico:
Variables y Operadores Manejo de variables Operadores de C Estructuras de programacin Desicin IF Ciclos For Bucles - While Bucles - Do Swich Ordenes de entrada y salida Printf y Scanf 12 6 6 10 10 11 2 4

Estructuras, Enumeraciones, Vectores, Matrices y Funciones Manejo de Estructuras Enumeraciones Funciones Vectores 15 17 17 21

Ejercicios completos de Programacin en C++ con matrices Estadisticas de ventas Estadisticas de produccin lechera Trabajo con archivos secuenciales Ordenes fundamentales de I/O 30 23 26

Ejercicios completos de Programacin en C++ con archivos Agenda Sistema completo ABM de una empresa Manejo de clientes Manejo de ventas Manejo de Productos 37

44 50 57

Bibliografa: Cabrera, Jose L., Borland Turbo C ++ SierraUrrecho, Programacion en C /C++ Microsoft Visual C Manual de Referencia Borland Turbo C ++ Manual de Referencia

Este manual se termino de imprimir en Agosto del 2001 Derechos Reservados. El contenido de esta obra esta protegido por la Ley que establece penas de prisin y/o multas adems de las correspondientes indemnizaciones por daos y perjuicios a quienes reprodujeren, plagiaren, distribuyeren o publicaren en todo o en parte esta obra.

Prof: Osvaldo J. Onorati

Hoja N. 61

Você também pode gostar