Académique Documents
Professionnel Documents
Culture Documents
con el
C++
Material didctico para el conocimiento , familiarizacin, estudio y comprensin del lenguaje C (Borland C++ , Turbo C y Visual C)
Profesor :
PROGRAMACIN II
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
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
Hoja N. 2
PROGRAMACIN II
#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
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 ;
cout << el area es << area << endl; //salida literal y dato y endl termina la linea }
Hoja N. 3
PROGRAMACIN II
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
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
Hoja N. 4
PROGRAMACIN II
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
Hoja N. 5
PROGRAMACIN II
Desicin IF
if ( condicion ) bloque de ordenes por verdadero else bloque de condiciones por falso otra forma de realizar el if
inicio
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
Hoja N. 6
Programa para ver manejo del For: # include <iostream.h> void main() { int cont ; for (cont=0; cont < 15;++ cont)
// declara variable
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
v > A >B
b>c >C
Hoja N. 7
PROGRAMACIN II
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
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 ; }
Hoja N. 9
PROGRAMACIN II
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
Hoja N. 10
PROGRAMACIN II
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
Hoja N. 11
PROGRAMACIN II
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
Hoja N. 12
PROGRAMACIN II
{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 ;
Hoja N. 13
PROGRAMACIN II
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); }
Hoja N. 14
PROGRAMACIN II
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
Hoja N. 15
PROGRAMACIN II
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
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 ; ========== ; ========== ; ========== ; }
Hoja N. 17
PROGRAMACIN II
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
{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;
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; }
Hoja N. 19
PROGRAMACIN II
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 ; ========== ; ========== ; }
Hoja N. 20
PROGRAMACIN II
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
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(); }
Hoja N. 22
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
Hoja N. 23
PROGRAMACIN II
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
Hoja N. 24
PROGRAMACIN II
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 ; }
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; }
Hoja N. 25
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++)
Hoja N. 26
PROGRAMACIN II
// // // // // // {
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;
"
//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];
Hoja N. 27
PROGRAMACIN II
zonmin = zona [0]; for (i=1 ; i < 4; i++) { if (zonmax < zona [i]) { } } zonmax= zona [i]; posmax = i;
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; }
Hoja N. 28
PROGRAMACIN II
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 ;
Hoja N. 29
PROGRAMACIN II
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>>
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
Hoja N. 30
PROGRAMACIN II
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
Hoja N. 31
PROGRAMACIN II
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 ();
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() }
PROGRAMACIN II
// 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
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)); }
Hoja N. 35
PROGRAMACIN II
agenda
novedades
Programa
Agenda Actualizada
impresin
3.
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
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
Hoja N. 37
PROGRAMACIN II
PROGRAMA
INICIO While
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( )
Hoja N. 38
PROGRAMACIN II
IGUAL ( )
Con_n ! = A F ALTA_EX ( ) F cod_n ! = B V V
BAJA_REA ( )
MODI_REA( )
MENOR ( )
SAL AGE
GRABAR SAL
ALTA_EX ( )
OBS IMPRI_N ( ) ALTA EXISTENTE
BAJA_INE ( )
OBS IMPRI_N ( ) BAJA INEXISTENTE
Hoja N. 39
PROGRAMACIN II
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
impr_n ( )
Hoja N. 40
PROGRAMACIN II
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
Hoja N. 41
PROGRAMACIN II
IMPRI_A ( )
Cont_l > tope F Titulos ( ) List List List List List a.cl_age a.domi a.tele a.fax obs V
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 ********************************************************
Hoja N. 42
PROGRAMACIN II
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') {
Hoja N. 43
PROGRAMACIN II
Hoja N. 44
PROGRAMACIN II
PROGRAMACIN II
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
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"; }
Hoja N. 47
PROGRAMACIN II
Hoja N. 48
PROGRAMACIN II
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"; }
Hoja N. 49
PROGRAMACIN II
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 */
Hoja N. 50
PROGRAMACIN II
PROGRAMACIN II
/* 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; } }
Hoja N. 52
PROGRAMACIN II
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 */
Hoja N. 53
PROGRAMACIN II
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
/*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
PROGRAMACIN II void Baja_Inex(); void Modi_Real(); void Baja_Real(); void Alta_Real(); void Alta_Exi(); void main() { Abrir(); LeoP(); LeoN();
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;
Hoja N. 57
PROGRAMACIN II
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(); }
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(); }
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(); }
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"; }
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"; } }
Hoja N. 60
PROGRAMACIN II
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.
Hoja N. 61