Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Facultad de Mecánica
SEPARATA
PROGRAMACION ORIENTADA A OBJETOS
TEMA: ALGORITMOS
TEMA: ALGORITMOS
PSEUDOCODIGO / DIAGRAMA DE FLUJO
Los algoritmos pueden constituir por así decirlo en un listado de instrucciones que indican
el camino a seguir para dar solución a un problema y que puede o no ser resuelto por una
computadora , generalmente el algoritmo viene acompañado de un pseudocódigo y un
diagrama de flujo.
Cuando el Algoritmo se ha desarrollado en forma correcta, el paso siguiente es llevar el
pseudocodigo a la codificación del lenguaje de programación.
Como ya se explicó, la codificación del algoritmo (pseudocodigo) en un determinado
lenguaje debe respetar su sintaxis para que el compilador pueda traducirlo en Lenguaje
Maquina y hallar la solución al problema planteado.
Se entiende que por verificación del algoritmo, el seguimiento del mismo con datos que
se ajusten a las característica del problema que se va a resolver.
Característica:
Los algoritmos en general deben ser:
Precisos :Los pasos a seguir en el algoritmo deben ser precisados claramente.
Definido: Debe dar siempre el mismo resultado para un conjunto de datos
idénticos de entrada.
Finito : El algoritmo, independientemente de la complejidad del mismo, debe ser
siempre de longitud finita.
Metodología:
Definición de los Objetos_Datos de Entrada y Salida(Ingreso desde teclado y salida
por pantalla)
Objetos_Datos de Entrada: Datos que se ingresan por teclado.
Objetos_Dato de salida: Datos u objetos de resultado.
Procesamiento de los Objetos_Datos (datos).
Visualizacion/Impresión de resultados.
Pseudocodigo
Es la parte textual del algoritmo,se podría decir que es como la receta para un paciente o
también una receta culinaria para cocinar un plato. Generalmente es la traducción del
Inglés de la sintaxis del compilador al idioma con el que estamos trabajando.
DIAGRAMA DE FLUJO
Un diagrama de flujo es la representación gráfica de un algoritmo.
En cuanto a la simbología utilizada para la representación, se tomara la norma (ANSI–
ISO).
DIAGRAMA DEFINICION
INICIO – FIN
ENTRADA DE DATOS
PROCESOS/CONSTANTES
F V BIFURCACIÓN(V/F)
LLAMADA A (PROCEDIMIENTOS/FUNCIONES)
ESCRITURA
PANTALLA
CONECTOR
DIAGRAMA NASSI_SCHNEIDERMAN(N-S)
También conocido como diagrama de CHAPIN es como un diagrama de flujo en el que se
omiten las flechas y las cajas son contiguas. Las acciones sucesivas se escriben en cajas
sucesivas y, como en los diagramas de flujo se pueden escribir diferentes acciones en una
caja y dependiendo de las acciones de control estas cambian para su mejor interpretación,
tal como se vera en los ejercicios y aplicaciones.
Inicio
Accion 1
Accion 2
Accion 3
Fin
Codificación y Programación
Es el Proceso mediante el cual se traduce un algoritmo a una codificación en un lenguaje
de programación específico.
Programa
Conjunto de instrucciones que se ha desarrollado con la finalidad de que sea ejecutado
por el computador.
Objetos_Datos
Son Objetos_Datos de un programa, todos aquellos datos manipulados por las
Instrucciones.
Mediante ellos, en un programa podremos realizar el almacenamiento de los datos y de
los resultados de las distintas operaciones que intervienen en la solución del problema.
Se les da este nombre solo para efectos de entrada y salida de datos en la solucion de
un problema.
IDENTIFICADORES
Los identificadores son palabras creadas por el programador para dar nombre a los
objetos y demás elementos que necesita declarar en un programa: variables, constantes,
tipos, estructuras de datos, archivos, procedimientos.
Una variable es un identificador (objeto_dato) que almacena un dato o valor, que ademas
tiene una posición o direccion de memoria y que dependiendo del tipo de dato, va ha
ocupar tambien un espacio en la memoria, ahora bien el valor de la variable puede
cambiar durante el desarrollo del algoritmo o ejecución del programa.
Una variable se identifica por los siguientes atributos:
a) Nombre que le identifica.
b) Tipo que describe el universo en donde se desenvuelve la variable, generalmente
es el espacio que ocupará en la memoria.
Reglas para nombrar a la Varia
VARIABLES:
Suelen constar de varios caracteres alfanuméricos de los cuales el primero debe
necesariamente ser una letra: ejemplo Par, nume5to,
a) No deben antecederle ningún valor numérico ejemplo: 123_num. Se debe cambiar
a num_123.
b) No debe existir espacio en blanco en el nombre, ejemplo: op c1. Cambiar a opc1
c) No debe existir operadores aritméticos entre su nombre, Ejemplo varia+ble.
Cambiar a variable.
getch();
} Dando como resultado:
el valor verdadero de t es 1
el valor falso de t quivale a 0
del programa. Podemos decir que actúa como recordatorios manteniendo caracteristicas
de objeto o cálculos que estuvieron presentes en un momento anterior de la ejecución
del programa.
Se utilizan inicializándolos con un valor y en los puntos en que corresponda se cambia al
valor contrario, de tal forma que examinando su valor posteriormente podemos realizar la
transmisión que deseábamos.
Ejemplos:
a) Ejemplo con Borland C++ int i,sp=0,simp=0,sw=0; //asume falso
int sw=0; //se asume falso for(i=1;i<=100;i++)
........do{ if(i%2==0){
if(a<b) sp=sp+i;
cout<<proceso1; sw=1; // asume verdadero }
proceso2; else
sw=1 // asume verdadero simp=simp+i;
else cout<<"La suma de los primeros 100 pares es
cout<<proceso3 "<<sp<<endl
while(sw!=1);// mientras no sea verdadero <<"\nLa suma de los primeros 100 impares es
................ "<<simp;
b) Ejemplo de aplicación con Borland C++ getch();
/*Programa que suma los pares y los impares de }
100 numeros enteros positivos*/ /*Salida
#include<iostream.h> La suma de los primeros 100 pares es 2550
#include<conio.h> La suma de los primeros 100 impares es 2500 */
main(){
Vea otra aplicación y con diagrama de flujo, mas adelante.
ACUÅVAR1+5 SUMÅSUM+AUX+ACU
SUMÅ0+(66+17)+(66+5)
Como puede apreciar los valores son almacenados en bloque, claro que esta explicación
es muy simple, en realidad cada valor es almacenado en celdas de memoria y tienen una
direccion que determina que espacio de memoria va a utilizar.
El espacio de memoria la determina el tipo de datos que es utilizado por la variable o
identificador. Esto hace que un lenguaje de programación difiera de un programa de
aplicación.
Espero que con estas lineas se comprenda la razon por la cual es necesario que una
variable tenga un tipo de datos.
DIAGRAMA N - S K=pi/180
INICIO
K=PI/180
LEER F1,F2,THETA F1,F2,θ
R = F12 + F 2 2 + F1F 2COS (θ * K
ESCRIBIR R
FIN
R= F12 + F 2 2 + 2 F1F 2 cos(θ * k )
Inicio
INICIO
Leer Q
b200 =entero(Q/200)
Q=resto(Q/200)
b100=entero(Q/100) Q
Q=resto(Q/100)
b50=entero(Q/50)
Q=resto(Q/50) b200 =entero(Q/200)
b20=entero(Q/20) Q=resto(Q/200)
Q=resto(Q/20) b100=entero(Q/100)
b10=entero(Q/10) Q=resto(Q/100)
Escribir b200,b100,b50,b20,b10 b50=entero(Q/50)
Q=resto(Q/50)
Fin
b20=entero(Q/20)
N-S Q=resto(Q/20)
b10=entero(Q/10)
Leer Q
b200=entero(Q/200)
Q=resto(Q/200)
b100=entero(Q/100) b200,b100,b50,b20
Q=resto(Q/100) ,b10
b50=entero(Q/50)
Q=resto(Q/50)
b20=entero(Q/20)
FIN
Q=resto(Q/20)
b10=entero(Q/10)
Escribir b200,b100,b50,b20,b10
Fin
CONDICION CONDICION
PROCESO 2
Escribir
ESCRIBIR
FIN
FIN
CONDICION
PROCESO
ESCRIBIR
FIN
FIN
ESCRIBIR
FIN
INICIO
A,B
V
A>B
Tempo=A
F A=B
B=Tempo
ESCRIBIR
A, B
FIN
P3: Ingrese una edad y decir si es mayor de edad e imprimir la edad ingresada
Objeto_Dato de Entrada: Edad
INICIO
Objeto_Dato de Salida :Men y edad
Pseudocodigo
Inicio
E
Leer E
Si (E>=18) entonces V
Men= “Mayor de Edad” E>=18
Fin del Si
Escribir inicio Mayor de Edad
F
Men, E Leer E
Fin Si(E>=18)
ESCRIBIR
Men,E Fin
FIN
Ejemplos de INICIO
alternativa doble
P4: Se tienen 02 números A,B
ingresados desde teclado
verificar si A es divisible F V
A=0
por B emitiendo un
mensaje.
V Men= “A debe ser
Solucion B=0 diferente de cero”
Objetos Datos de Entrada:
A,B
Objetos Datos de Salida: F Men= “No es
Mensaje
posible la división
Inicio
Leer A y B
Si A=0 entonces
Men= “A debe ser diferente F V
A>B
de cero”
Si no
Si B=0 entonces Men= “A debe F V
Resto(A/B)=0
Men= “No es posible la ser mayor que B”
división”
Si no Men= “A no es Men= “A es
Si (A>B) entonces divisible por B” divisible por B”
Si (resto(A/B)=0)
Entonces
Men = “A es divisible ”
Si no
Men=”A no es divisible por B”
Fin del Si
Mensaje
Sino
Men=
“A debe se mayor que B” FIN
Fin del Si
Escribir Men
Fin
P5: Se tienen cuatro mensajes para las notas obtenidas en un curso de Actualizacion. Cuando la nota
obtenida es igual o mayor a 17 debe decir “Sobre Saliente”; si la nota es igual o mayor a 15 “Notable”;igual
o mayor a 13 “Aprobado”; “Asistente” para el resto. Haga el Algoritmo
Objeto_Dato de entrada:Nota
Objeto_Dato de Salida :Mensaje
Pseudocodigo
Inicio
Leer Nota (N)
Si N>=17 entonces
Men=”Sobre Saliente”
Si no
Si N>=15 entonces
Men= “NOTABLE ”
Si N>=13 entonces
Men= “Aprobado”
Sino
Men= “Asistente”
Fin del Si
Fin del Si
Escribir Men
INICIO
F V
N>=17
F V Sobresaliente
N>=15
V
N>=13
Asistente Aprobado
Mensaje
FIN
N-S
INICIO
LEER NOTA N
SI N>=17
NO SI
N>=15
NO SI SOBRESALIENTE
NO N>=13 SI NOTABLE
ASISTE APROB
ESCRIBIR MEN
FIN
INICIO
A,B
F V
A>B
F V A mayor que B
A= B
Mensaje
FIN
P5: Algoritmo que lee 02 números y nos dice cual es el mayor o son iguales
Pseudocodigo INICIO
Inicio
Leer A y B A,B
Si (A > B) entonces
A es mayor en B
Si no F
A>B
V
Si (A = B) entonces
A es igual a B F V A mayor que B
Si no A= B
B es mayor que A
Fin del Si B mayor que A A es igual a B
Fin del Si
Fin del Si
Escribir Mensaje
Fin Mensaje
FIN
P6: Un ejemplo con (sw): Algoritmo que lee un secuencia de notas (con valores que
van desde 0 a 10) que termina con el valor -1 y nos dice si hubo o no alguna nota con
valor 10.
Objeto_datos:
NOTA : variable para leer la secuencia.
SW :switch para controlar la aparición de notas 10 con
los siguientes significados:
FALSO :No hay nota 10
CIERTO :Si hay nota 10
INICIO
SWÅFALSO
LEER NOTA
T F
NOTA<>-1
T
T F T
NOTA=10 SW
IMPRIME
LEER NOTA
FIN
La Var_Selectora puede ser variable, expresión, función; empero, sin embargo, el valor
representado debe ser por decir lo menos, un valor escalar es decir un dato numérico
entero o un carácter. No se acepta una cadena o un dato real.
Se debe entender que cada alternativa tiene un único valor y que va ha realizar una
determinada acción o proceso.
Caso X proceso_Desconocido
Fin del Caso
DIAGRAMA N - S
1
CONDICIONANTE O
Proceso1 2 VAR_SELECTORA
proceso2 3
...
Proceso3
N X
ProcesoN Proceso x
INICIO
1
A
‘¿’
Inicializar constantes
Mas =’+’
Menos =’-’
Por =’*’ Op2<>0
Entre =’?’
Residuo =’¿’
Sin Solucion op1 ? op2
Potencia =’~’
Digite el Operador
‘~’ Op1~op2
op1, op2
‘X’
Desconocido
OPERADOR
‘*’
Op1*op2 FIN
‘?’
V
F
Op2<>0
1
A
es comun usar la instrucción (repeat until) “repetir hasta que”, mientras que
en Visual Basic es comun usar (do until) “hacer hasta que” ,estas son las
mas representativas de estos lenguajes de programacion.
Diagrama Nassi_Schneiderman
V
CONDICION
O
LAZO F IMPRIMIR
MIENTRAS < CONDICION>
PROCESOS
Accion1
Accion2
FIN
Accion3
a 2a 3a
D= + + +K
a + 2b 2a + 3b 3a + 4b
solucion: INICIO
definir objetos_datos E/S
objeto_dato de entrada: A,B,N. a,b,n
Objeto_dato de salida : SUMA DE N.
Pseudocodigo: S=0, i=1
Inicio
Leer a,b,n.
S=0 //acumulador i<=n
i=1 //contador
mientras(i<=n) hacer IMPRIMIR
S=S+((i.a)/(2i.a+(i+1).b) S=S+((i.a)/(2i.a+(i+1).b)
i=i+1
INICIO
fin del mientras
escribir S i=i+1
fin
i=i+1
PROCESO1
PROCESO2 Escribir
Problema de Aplicación
INICIO
Se ingresa un Numero de varias cifras,
y luego hallar la suma de sus cifras, el numero
invertido y la cifra mayor. Leer num
Por ejemplo 1234, la suma es:10, invertido es
4321 y la cifra mayor es 4.
Objetos_datos de entrada y Salida inversoÅ 0,Su Å 0, MÅ0
Objeto_Dato de Entrada: Numero
Objeto_Dato de Salida: Salida numero
invertido. dgtÅresto(num/10)
Pseudocodigo
Inicio inversoÅinverso*10+dgt
Su ÅSu+digito
Leer numero
Inicializar variables : inverso Å 0,
SuÅ0,MÅ0 V
dgt>M
Hacer
digitoÅ resto(M/10) MÅdgt
F
InversoÅ inverso*10+digito.
Su ÅSu+digito
Si (digito>M) entonces
numÅentero(nume/10)
M Ådigito
Fin del si
F
numero=entero(numero/10) V
Mientras(numero>0) num> 0
Escribir inverso, Su, M
Fin Inverso , Su, M
FIN
1 2 3 4
S= − + − + ...
t +1 2t + 3 3t + 5 4t + 7
Aplicación
Se va a Ingresar un Número y la
INICIO
tarea consiste en mostrar todos los
divisores de ese número ingresado.
Cuando el numero Ingresado tiene Lee ne
por divisores a la unidad(1) o al
mismo numero mostrara un
ContDivi=0
mensaje diciendo “ El Numero es
Primo ”
para Divisor=1, hasta ne
SOLUCION
Objetos_Datos de ENTRADA Y
SALIDA V
Objejo_Datos de Entrada: el Resto(ne/Divisor)=0
Numero entero(NumeEnte)
Objeto_Dato de Salida : Escribir Divisor
numero de divisores(NumeDivi), F
mensaje
ContDivi=ContDivi+1
PSEUDOCODIGO
Inicio
Leer un Numero entero: NumeEnte
F V
Definir la variable Contador de ContDivi=2
Divisores e Inicializarla a 0
NumeDivi=0
Contabilizar los divisores y No es Primo Numero Primo
mostrarlos
PARA Divisor=1 HASTA
NumeEnte, HACER
MENSAJ
SI Residuo de
DIVISORE
NumeEnte/Divisor=0, ENTONCES
Escribir Divisor
ContDiv=ContDiv+1
Fin del SI FIN
Escribir mensaje
SI ContDiv=2,ENTONCES
MENSAJE “Numero Primo”
SINO
MENSAJE “No es Primo”
Fin del Si
Fin
( a + b) * c
S=
INICIO
a−b
Pseudocodigo A,B,C
Objeto dato de entrada: A,B,C
Objeto dato de salida: S
Inicio
Leer A,B,C F
Si (A>B) A>B
entonces
( A + B) * C V
S=
A− B
sino INDETERMINADO
Escribir indeterminado (A+ B)*C
Escribir S S=
Fin
Programa A− B
#include<iostream.h>
#include<math.h>
main() S
{float a,b,c;
double s;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"c=";cin>>c;
FIN
a+b−c
S =3
a−2 A,B,C
MISCELÁNEA opc=toupper(getch());
}while(opc=='S');
¾ Problemas propuestos en Practicas }
y exámenes tomados en la
Universidad Nacional de Ingeniería
(UNI) 2.- /*Programa que ordena en forma
ascendente los elementos
¾ En cada uno de los problemas
de la diagonal principal de una matriz
trate de resolverlos aplicando los
generando un vector con estos elementos
algoritmos y diagramas de flujo, y Definir Objetos Datos de Entrad y salida
luego vea la solución. Objeto_Dato de Entrada : n elementos a
¾ Los problemas se pueden resolver Ingresar
aplicando Visual C++ o Borland Objeto_Dato de Salida : Los elementos de
C++. la diagonal*/
¾ Para visual C++ no se considera #include <iostream.h>
las librería #include<conio.h> ni #include <conio.h>
#include<ctype.h> #include <ctype.h>
#include <stdlib.h>
¾ Tampoco getch() ni
#include <iomanip.h>
gotoxy(col,fil)
main(){
¾ Algunos problemas son propios. long max=43,min=1,i,j,n;
long k,temp;
double a[50][50],D[50];
1. //Calcula el área de un triangulo; los cout<<"\nMatriz a Calcular en forma
lados son creados aleatoriamente aleatoria: ";
#include<iostream.h> cout<<"\nCuantos elementos se van ha
#include<conio.h> ingresar : ";
#include<iomanip.h> cin>>n;
#include<ctype.h> randomize();
#include<math.h> cout<<"La Matriz Aleatoria es : "<<endl;
#include<stdlib.h> cout<<endl;
main(){ for(i=1;i<=n;i++)
float a,b,c,p; { for(j=1;j<=n;j++)
double at,k; {gotoxy(6*j,4+i);
char opc ; a[i][j]=random((max-min+1)+min);}
do{system("cls");//SOLO con Win 98 o }
Milenium for(i=1;i<=n;i++)
randomize(); { for(j=1;j<=n;j++)
cout<<"ingrese los lados del triangulo {gotoxy(6*j,4+i);
aleatoriamente :"; cout<<a[i][j];}
a=rand()%100; }
b=rand()%100; for(k=n;k>=2;k--)
c=rand()%100; { for(i=1;i<=k-1;i++)
cout<<"\na = "<<a; { if(a[k][k]<a[i][i])
cout<<"\nb = "<<b; { temp=a[k][k];
cout<<"\nc = "<<c; a[k][k]=a[i][i];
p=(a+b+c)/2; a[i][i]=temp;}
k=(p*(p-a)*(p-b)*(p-c)) ; }
if (k>0){ }
at=sqrt(k); gotoxy(7,10);cout<<"\nLa Matriz con la
cout<<"\nEl Area Total diagonal Ordenada es : "<<endl;
es:"<<setiosflags(ios::fixed|ios::showpoint); for(i=1;i<=n;i++)
cout<<setprecision(2)<<at<<endl;} {for(j=1;j<=n;j++)
else { {gotoxy(6*j,12+i);cout<<a[i][j];}
}
clrscr(); matriz[i][i]=matriz[i][cmin];
for(i=1;i<=n;i++) matriz[i][cmin]=aux[i];}
aux[i]=matriz[i][mid]; }
for(i=1;i<=n;i++) mostrar(matriz,n);}
if(i!=mid) void mostrar(int matriz[20][20],int n){
matriz[i][mid]=matriz[mid][i]; int i, j;
for(i=1;i<=n;i++) for(i=1;i<=n;i++)
matriz[mid][i]=aux[i]; {for(j=1;j<=n;j++)
mostrar(matriz,n); } cout<<matriz[i][j]<<" ";
void ultima(int matriz[20][20],int aux[20],int cout<<endl; }
n){ getch(); }
int i;
clrscr(); 7. //Programa que realiza operaciones con
for(i=1;i<=n;i++){ un polinomio
if(i!=n){ #include <iostream.h>
aux[i]=matriz[i][n]; #include <conio.h>
matriz[i][n]=matriz[n][i]; #include <math.h>
matriz[n][i]=aux[i]; #include <ctype.h>
} //prototipo de la funcion
} double polinomio(int,int,double[]);
mostrar(matriz,n);
} main() {
char tecla;
void mayor(int matriz[20][20],int aux[20],int double variable;
n) int grado,i;
{ int i, j, max=0, fmax=1, temp; do {
clrscr(); clrscr();
for(i=1;i<=n;i++) cout << "P(n) = A(n)X^n+A(n-1)X^n-1+A(n-
max+=matriz[1][i]; 1)X^(n-2)+... +A(1)X^1+A(0)X^0\n\n";
for(i=2;i<=n;i++){temp=0; cout << "Ingrese el grado del polinomio \"n\"
for(j=1;j<=n;j++) = ";cin >> grado;
temp+=matriz[i][j]; double* coeficiente = new double[grado+1];
if(temp>max) /*definimos un vector a la medida donde se
{ max=temp;fmax=i;}} almanenaran los coeficientes del polinomio*/
for(i=grado;i>=0;i--) {
for(i=1;i<=n;i++) cout << "Ingrese el coeficiente A("<<
{ i << ") del polinomio : ";
if(i!=fmax) cin >> coeficiente[i];
{ aux[i]=matriz[i][i]; }
matriz[i][i]=matriz[fmax][i]; cout << "\nIngrese el valor de la variable X :
matriz[fmax][i]=aux[i];}} ";cin >> variable;
mostrar(matriz,n);} cout << "\nEl resultado luego de evaluar el
void menor(int matriz[20][20],int aux[20],int polinomio es : "
n) <<
{ int i, j, min=0, cmin=1, temp; polinomio(variable,grado,coeficiente);
clrscr(); delete[] coeficiente; //borrando el vector
for(i=1;i<=n;i++) dinamico
min+=matriz[i][1]; cout << "\nDesea continuar (S/N) : ";cin >>
for(i=2;i<=n;i++) tecla;
{ temp=0; } while(toupper(tecla) == 'S');
for(j=1;j<=n;j++) clrscr();
temp+=matriz[j][i]; cout << "El programa ha finalizado";
if(temp<min) getch();
{ min=temp; cmin=i; } }
}
for(i=1;i<=n;i++) double polinomio(int variable,int grado,double
{if(i!=cmin) coeficiente[]) {
{ aux[i]=matriz[i][i]; return poly(variable,grado,coeficiente);
a4[i].codigo=a4[j].codigo; #include<conio.h>
a4[j].codigo=temp; void LeerN(int &num){
} cout<<"Ingrese Numero Entero Cualquiera ";
} cin>>num;}
void modificar(registro a5[50],int n)
{ int i,cod; int numdiv(int num){
char campo; int nd=0;
clrscr(); for( int i=1; i<=num; i++)
gotoxy(30,2);cout<<"MODIFICACION"; if (num%i==0)
gotoxy(2,4);cout<<"codigo:";cin>>cod; nd++ ;
for(i=1;i<=n;i++) return nd;}
if(cod==a5[i].codigo) int primo(int num){
break; if (numdiv(num)==2)
if(cod==a5[i].codigo) return 1;
else
{gotoxy(2,6);cout<<"NOMBRE(1):"<<a5[i].no return 0;
mbre; }
gotoxy(2,8);cout<<"DIRECCION(2):"<<a5[i].d
irecion; main(){
gotoxy(30,20);cout<<"Indique campo a int num;
modificar(1)(2)"; LeerN(num);
cin>>campo; if ( primo (num))
switch(campo){ cout<<"El Numero "<<num<<"Es Primo \n";
case'1':gotoxy(14,6);cout<<" "; else
gotoxy(14,6);gets(a5[i].nombre); cout<<"El Numero "<<num<<"No es Primo
break; \n";
case'2':gotoxy(17,8);cout<<" "; cout<<"\nLos Primos Gemelos de los
gotoxy(17,8);gets(a5[i].direcion); primeros 400 Son \n";
break; for( int j=1; j<=400; j=j+2)
} if ((primo(j)==1)&&(primo(j+2)==1))
gotoxy(30,22);cout<<"Registro Modificado"; cout<<j<<' '<<j+2<<endl;
getch(); getch();
} }
else
{gotoxy(30,22);cout<<"Registro no hallado"; 12.- /*Programa graficos sen y cos
getch(); colaboración Ing. Rafo Lecca*/
} #include<iostream.h>
} #include<conio.h>
void listar(registro a3[50],int n) #include<stdio.h>
{int i; #include<math.h>
for(i=1;i<=n;i++){ #include<stdlib.h>
gotoxy(30,3); cout<<"el Listado es";
gotoxy(30,4);cout<<"---------"; typedef double (*F)(double);
gotoxy(10,5);cout<<"el codigo es"; void graph_1(F f);
gotoxy(25,5);cout<<"el nombre"; void tabulador(int x);
gotoxy(40,5);cout<<"la direccion";
gotoxy(5,6+i);cout<<i; main(){
gotoxy(10,6+i);cout<<a3[i].codigo; char c ; system("cls");
gotoxy(25,6+i);cout<<a3[i].nombre; cout<<"\nIngrese Seno/Coseno : ";
gotoxy(40,6+i);cout<<a3[i].direcion; c=getchar();
} if(c=='S'||c=='s')
getch(); graph_1(sin);
} else{
if(c=='C'||c=='s')
graph_1(cos);
11.- /*Primos Gemelos */ else cout<<"\nInconsistente ";
#include<iostream.h> }
#include<iostream.h> f=f+2;
#include<conio.h> if (i==(27/2))
main(){ cout<<"\n valor central : "<<'
long N; '<<"1/"<<m;
int dpar=0, dimpar=0,digito,total=0,suma=0; }
cout<<"Ingrese un # de varias cifras : "; }
cin>>N; void sumlat()
while (N>0){ {
digito=N%10; int m=0,f=3,li,lf;
if (digito%2==0) for (int i=1;i<=27;i++)
dpar++; { if (i==(27/2))
else { li=m;
dimpar++; cout<<"\nsuma de laterales del valor
total++; central: "<<' '<<"1/"<<li<<"+";
suma=suma+digito; }
N=N/10; m=m+f;
} f=f+2;
cout<<"\ndigitos pares = "<<dpar<<endl
<<"\ndigito impares = if (i==(27/2)+1)
"<<dimpar<<endl {lf=m;
<<"\nLa suma de los digitos es=
"<<suma<<endl cout<<"1/"<<lf<<"="<<((1.0/li)+(1.0/lf));
<<"\nTotal digitos ingresados = "<<total; }
getch(); }
} }
main() {
imprime();
valcen();
17.- /* Realizar un programa que permita sumlat();
hallar la secuencia, el valor central y getch(); }
la suma de sus laterales de los primeros 27
terminos de la serie : 0 1/3 1/8 1/15 1/24 19.- /*los primeros 27 terminos de la serie son
1/35 1/48 1/63 1/80 1/99 1/120 1/143 1/168 :0 1/3 1/8 1/15 1/24 1/35 1/48 1/63 1/8
1/195 1/224 1/255 1/288 1/323 1/360 1/399 0 1/99 1/120 1/143 1/168 1/195 1/224 1/255
1/440 1/483 1/528 1/575 1/624 1/675 1/728 1/288 1/323 1/360 1/399 1/440 1/483 1
*/ /528 1/575 1/624 1/675 1/728 valor central :
#include <iostream.h> 1/224
#include<conio.h> suma de laterales del valor central:
void imprime() 1/195+1/255=0.00904977*/
{int m=0,f=3;
cout<<"los primeros 27 terminos de la serie // adivina un numero de un dado
son :" ; #include<iostream.h>
for (int i=1;i<=27;i++) #include<conio.h>
{if (i==1) #include<stdlib.h>
cout<<m; main(){
else int Ls=6,Li=1,N,M;randomize();
{m=m+f; do{
f=f+2; cout<<"Ingrese un numero [1...6]";
cin>>N;
cout<<' '<<"1/"<<m; }while(N<1||N>6);
}
} M=random(Ls-Li+1)+Li;
} if(N==M)
void valcen( ) cout<<"Ud. Acerto ";
{ else
int m=0,f=3; cout<<"Ud. No acerto ";
for (int i=1;i<=27;i++) getch();}
{ m=m+f;
cout<<"\n"; } for(TipoDeGol=0;TipoDeGol<2;TipoDeGol++)
Equipo[cont][TipoDeGol]=0;
22.=/* Campeonato de Futbol
INTERFACULTADES: Se juega con 06 equipos //Generar resultados aleatorios
cada uno juega juega 6 partidos. randomize();
Se desea "simular" los resultados de dicho for(partido=1;partido<=NumEquipos-
campeonato generando aleatoriamente el 1;partido++)
Numero de goles que "consigue" y "recibe" for(cont=0;cont<NumEquipos;cont++)
cada equipo en cada partido .el ganador sera for(TipoDeGol=0;TipoDeGol<2;TipoDeGol++)
aquel que tenga la mayor dierencia de goles al Equipo[cont][TipoDeGol]+=random(GolesMax)
final del campeonato.si en caso no ;
hubiera un solo ganador, dar el mensaje //Determinar diferencia de goles por equipo
correspondiente.Asumir que en un partido de for(cont=0;cont<NumEquipos;cont++)
no puede haber mas 12 goles recibidos o DifGoles[cont]=Equipo[cont][0]-
anotados por un equipo Equipo[cont][1];
DEFINIR Objetos_Datos Entrada y salida
Objeto_Datos de Entrada: Ninguno //Determinar el equipo que tiene mayor
Objeto_Datos de Salida: Nombre de los diferencia de goles mayor=0;
equipos (Nombre []) for(cont=0;cont<NumEquipos;cont++)
goles a favor por equipo(Equipo[]) {
goles en contra por equipo (Equipo[]) if(DifGoles[cont]>mayor)
diferencia de goles por equipo (DifGoles[]) {
nombre del equipo ganador mayor=DifGoles[cont];
(Nombre[ganador]) ganador=cont;
}
mensaje*/ }
#include<iostream.h> //Determinar si hay mas de un ganador
#include<conio.h> ganauno=True;//asumir que hay uno solo
#include<iomanip.h> for(cont=0;cont<NumEquipos;cont++)
#include <string.h> if((DifGoles[cont]==mayor)&&(cont
#include <stdlib.h> !=ganador))
#include <ctype.h> ganauno=False;
//Escribir titulos
//Definicion de constantes clrscr();
#define NumEquipos 6
#define GolesMax 12 cout<<setw(15)<<"Equipos"<<setw(19)<<"G
#define False 0 .Favor" <<setw(15)<<"G.Contra"
#define True 1 <<setw(15)<<"Diferencia" <<endl;
//funcion principal //Escribir resultados
main(){ for(cont=0;cont<NumEquipos;cont++){
short Equipo[NumEquipos][2]; //arreglo de cout<<setw(2)<<(cont+1)<<')'
goles a favor y en contra de cada equipo <<setiosflags(ios::left)
int DifGoles[NumEquipos]; //arreglo de <<setw(20)<<Nombre[cont]
diferencia de goles de cada equipo <<resetiosflags(ios::left)
char Nombre[NumEquipos][40]= //arreglo <<setw(10)<<Equipo[cont][0]
de nombres <<setw(15)<<Equipo[cont][1]
{"FACULTAD MECANICA", <<setw(15)<<DifGoles[cont]
"FACULTAD CIVILES", <<endl; }
"FACULTAD ARQUITECTU", cout<<endl;
"FACULTAD IND-SISTEMA", if(ganauno)
"FACULTAD CIENCIAS", cout<<"Equipo Ganador :"
"FACULTAD ECONOMIA"}; <<Nombre[ganador];
short cont,ganador,partido,mayor,TipoDeGol; else
short ganauno; cout<<"Hay empate para el primer Lugar ";
char opc; cout<<"\nOtra Prueba [S][N]:";
for(;;){clrscr(); opc=toupper(getch());
//Inicializar a todos los equipos con 0 goles if(opc=='N')break;}
for(cont=0;cont<NumEquipos;cont++) } Resultado
suma2=suma2+k; cout<<endl;
} //mostrando las matrices:
cout<<endl<<"La suma es: cout<<"las matrices son:"<<endl ;
"<<suma2<<endl; for( i=0;i<n;i++)
{for( j=0;j<n;j++)
cout<<"======================= { cout<<setw(5)<<vector1[i][j];
====================="<<endl; }
cout<<endl;
if(suma1>suma2){ }
cout<<"El ganador es: "<<nom1;} cout<<endl;
if(suma2>suma1){ for( i=0;i<n;i++)
cout<<"El ganador es: "<<nom2;} {for( j=0;j<n;j++)
if(suma2==suma1){ { cout<<setw(5)<<vector2[i][j];
cout<<"Empataron ";} }
cout<<mensaje; cout<<endl;
if(toupper(getch())=='N')break; }
}} cout<<endl;
for( i=0;i<n;i++)
32. /*programa que permite crear una matriz {for( j=0;j<n;j++)
para después crear un vector que puede {
sumar a cada cout<<setw(5)<<vector1[i][j]+vector2[i][j];
uno de los elementos de la matriz*/ }
#include<iostream.h> cout<<endl;
#include<conio.h> }
#include<iomanip.h> getch();
main() { }/* Como tarea genere Ud. La Matriz de
int vectorsuma[20][20]; Manera aleatoria y genere el vector
int vector1[20][20]; aleatoriamente */
int vector2[20][20];
int n,i,j; 33. //Programa que usa punteros a
cout<<"Ingrese la matriz cuadrada n:"; estructuras en este caso halla un modulo y la
cin>>n; //suma de sus elementos
for( i=0;i<n;i++) #include<iostream.h>
{ for( j=0;j<n;j++) #include<conio.h>
{cout<<"Ingrese los valores del vector1 #include<math.h>
["<<i+1<<"],["<<j+1<<"]:"; #include<ctype.h>
cin>>vector1[i][j]; struct complex{
} double x,y;
} void leerxy(double a,double b);
cout<<endl; double comp_abs(complejo *Z);
for( i=0;i<n;i++) double sumaxy(complejo *w);
{ for( j=0;j<n;j++) };
{cout<<"Ingrese los valores del void complejo::leerxy(double a, double b)
vector2["<<i+1<<"],["<<j+1<<"]:"; {x=a;y=b;}
cin>>vector2[i][j];
} double complejo::comp_abs(complejo *z)
} {return(sqrt((z->x*x+z->y*y)));}
cout<<endl;
cout<<"entonces el vectorsuma double complejo::sumaxy(complejo *w)
sera:"<<endl; {return(w->x+w->y);}
for( i=0;i<n;i++)
{ for( j=0;j<n;j++) main()
{cout<<" vectorsuma {
["<<i+1<<"],["<<j+1<<"]:"; float p,q,z;
cout<<vector1[i][j]+vector2[i][j]; complex comp1;
} cout<<"Ingrese el primer valor ";cin>>p;
cout<<endl; cout<<"Ingrese el segundo valor ";cin>>q;
} comp1.leerxy(p,q);
complejo P={p,q}; }}
cout<<"El Modulo es cout<<'{';
"<<P.comp_abs(&P)<<endl for(k=0;k<filas;k++)
<<"La suma es "<<P.sumaxy(&P); cout<<C[k]<<' ';
getch(); cout<<'}';}
}
void R(int M[100][100], int filas, int
columnas){
for (int i=0;i<filas;i++){
for(int j=0;j<columnas;j++)
cout<<'\t'<<M[i][j]<<' ';
34. /* Crear una matrix Aleatoria y visualizar: cout<<endl;}
a)La Diagonal Secundaria }
b)La 2da Columna */ main(){
#include<stdlib.h> int i,j,M[100][100],a,b;
#include<time.h> int constante;char opcion;
#include<iostream.h> cout<<"
#include<conio.h> ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» "<<endl;
#include<iomanip.h> cout<<" º Diagonal de una Matriz
#define mensaje "\nOtra Generacion de º "<<endl;
Matrix: ? [S][N]" cout<<"
void lec(int &filas,int &columnas){ ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ "<<endl;
cout<<"Ingrese el numero de orden: "; for(;;){clrscr();
cin>>filas; randomize();
columnas=filas; lec(a,b);
} matrix(a,b,M);
void matrix(int filas, int columnas, int R(M,a,b);
M[100][100]){ diagonal(a,b,M);
int max=23, min=1; SEGUNDACOLUMNA(a,b,M);
for(int i=0;i<filas;i++) cout<<mensaje;
for(int j=0;j<columnas;j++) cout<<endl;
M[i][j]=random(max-min+1)+min; opcion=getch();
cout<<"MATRIZ\n"; cout<<endl;
} if(opcion=='N'||opcion=='n')break;}
void diagonal(int filas, int columnas,int cout<<" ÉÍÍÍÍÍÍÍÍÍÍ» "<<endl;
M[100][100]){ cout<<" º FIN º "<<endl;
int k=0,D[100]; cout<<" ÈÍÍÍÍÍÍÍÍÍͼ "<<endl;
cout<<"\n\nLa diagonal es: \n"; getch();
for(int i=0;i<filas;i++){ }
for(int j=0;j<columnas;j++){
if(i==j){ 35. /*programa que genera valores aleatorios
D[k]=M[i][j]; y son almacenados en un vector realizando:
k=k+1;} a) Los numeros por encima del promedio.
}} b) Los numeros multiplos de cinco.
cout<<'{'; c) La suma de los numeros.
for(k=0;k<filas;k++) d) El promedio de los valores
cout<<D[k]<<' '; almacenados
cout<<'}';} e) El menor numero . */
f) Los numeros que se repiten
SEGUNDACOLUMNA(int filas, int columnas,int #include<stdlib.h>
M[100][100]){ #include<time.h>
int k=0,C[100]; #include<iostream.h>
cout<<"\n\nLa SEGUNDA COLUMNA : \n"; #include<conio.h>
for(int i=0;i<filas;i++){ main(){
for(int j=0;j<columnas;j++){ int Notas[50],Nrepetidas[50],j=1, i, menor,k;
if(j==1){ float promedio,S1=0,S2=0,S3=0,r;char
C[k]=M[i][j]; opcion;
k=k+1;} randomize ();
cout<<endl; for(j=1;j<=n;j++){
for(i=1;i<=n;i++){ gotoxy(10*j+5,9+i);cout<<"A["<<i<<"]["<<j
cout<<endl; <<"]X"<<j;
for(j=1;j<=n;j++){ if(j!=n)
cout<<"\t"<<A[i][j]<<"\t"; cout<<"+";
} else
} cout<<"=";
getch(); }
} gotoxy(10*n+16,9+i);cout<<"B["<<i<<"][1]"
void Mostrar_vector(double vector[20],int n){ ;
int i; }
gotoxy(12,9);cout<<"V=[\t"; for(i=1;i<=n;i++){
for(i=1;i<=n;i++){ for(j=1;j<=n;j++){
cout<<vector[i]<<"\t"; gotoxy(12*j+3,10+n+i);cout<<"A["<<i<<"]["
} <<j<<"]= ";cin>>A[i][j];
cout<<"]"; }
getch(); }
} for(i=1;i<=n;i++){
void Interdiagonal(double A[20][20],double gotoxy(15,11+2*n+i);
B[20][20],double aux[20],int n){ cout<<"B["<<i<<"][1]= "; cin>>B[i];
int i,j; }
clrscr(); }
gotoxy(10,5);cout<<"Ingrese el orden de la void ver_sistema(int &n, double
matriz: ";cin>>n; A[10][10],double B[10]){
for(i=1;i<=n;i++){ int i,j;
for(j=1;j<=n;j++){ clrscr();
A[i][j]=random(100-1)+1; gotoxy(10,6);cout<<"Sistema Ax=B";
B[i][j]=random(100-1)+1; gotoxy(10,8);cout<<"Matriz A";
} gotoxy(30,8);cout<<"Matriz B";
} for(i=1;i<=n;i++){
gotoxy(10,7);cout<<"La matriz A es: "; for(j=1;j<=n;j++){
Mostrar(A,n); gotoxy(5*j+5,9+i);cout<<A[i][j];
gotoxy(10,10+n);cout<<"La matriz B es: "; }
Mostrar(B,n); gotoxy(5*n+20,9+i);cout<<B[i];
for(i=1;i<=n;i++){ }
aux[i]=A[i][i]; getch();
A[i][i]=B[i][i]; }
B[i][i]=aux[i]; void Gauss(double A[10][10],double B[10],int
} n){
clrscr(); double h;
gotoxy(10,5);cout<<"Intercambiando las for(int k=0;k<=n-1;k++){
diagonales ... "; for(int i=1+k;i<=n-1;i++){
getch(); h=A[i+1][1+k]/A[1+k][1+k];
gotoxy(10,7);cout<<"La nueva matriz A es: "; for(int j=1+k;j<=n;j++){
Mostrar(A,n); A[i+1][j]-=h*A[1+k][j];
gotoxy(10,10+n);cout<<"La nueva matriz B }
es: "; B[i+1]-=h*B[1+k];
Mostrar(B,n); }
} }
void ingresar_sistema(int &n, double }
A[10][10],double B[10]){ void Sist_Ecuaciones(){
int i,j; double R[10],X[10],A[10][10],B[10];
clrscr(); int n,i,j;
gotoxy(8,6);cout<<"Ingrese el numero de float ss;
incognitas: "; cin>>n; ingresar_sistema(n,A,B);
gotoxy(8,8);cout<<"El sistema sera de la ver_sistema(n,A,B);
forma:"; Gauss(A,B,n);
for(i=1;i<=n;i++){ R[n]=B[n]/A[n][n];
A[i+1][j]=A[i+1][j]-A[t][j]*var*1.0; for(j=1;j<=n;j++){
} if((A[i][j]>-0.00001)&&(A[i][j]<0.00001))
} A[i][j]=0;
} }
double determinante=1; }
for(t=1;t<=n;t++){ for(i=1;i<=n;i++){
determinante*=A[t][t]; for(j=1;j<=n;j++){
} A[i][j]=(0.01*int(A[i][j]*100));
gotoxy(10,15);cout<<"El determinante de esta }
matriz es: "; }
cout<<determinante; gotoxy(10,15);cout<<"La matriz triangular
getch(); inferior es: ";
} Mostrar(A,n);
void Triangular_Sup(double A[20][20],int n){ }
int i,j,t;
float var; 38. Programa que resuelve um sistema de
clrscr(); Ecuaciones por el metodo por el metodo
CrearMatriz(A,&n); Gauss_Jordan
Mostrar(A,n); #include<iostream.h>
for(t=1;t<n;t++){ #include<conio.h>
for(i=t;i<n;i++){ #include<stdlib.h>
var=A[i+1][t]/A[t][t]*1.0; #include<math.h>
for(j=t;j<=n;j++){ #include<iomanip.h>
A[i+1][j]=A[i+1][j]-A[t][j]*var*1.0; int cont=1,n,p, i,j,k,l,r,s,dato;
} double
} A[15],W[10][10],Wo[10][10],x[10],m,sum;
} void menu();
for(i=1;i<=n;i++){ void matriz_de_trabajo();
for(j=1;j<=n;j++){ void ingresar_sistema();
if((A[i][j]>- void visualisar_sistema();
0.00001)&&(A[i][j]<0.00001)) void hacer_diagonal_principal_dif_cero();
A[i][j]=0; void Gaus_jordan();
} void crear_pivote();
} void crear_nulos_en_columna_pivote();
for(i=1;i<=n;i++){ void calc_solucion();
for(j=1;j<=n;j++){ void mostrar_solucion();
A[i][j]=(0.01*int(A[i][j]*100)); main ()
} { ingresar_sistema();
} visualisar_sistema(); cont++;
gotoxy(10,15);cout<<"La matriz triangular hacer_diagonal_principal_dif_cero();
superior es: "; Gaus_jordan();
Mostrar(A,n); visualisar_sistema();
} mostrar_solucion();
void Triangular_Inf(double A[20][20],int n){ getch();
int i,j,t; }
float var;
clrscr(); void ingresar_sistema()
CrearMatriz(A,&n); {
Mostrar(A,n); cout<<"\n Ingrese Numero de Incognitas: ";
for(t=n;t>1;t--){ cin>>n;
for(i=t;i>1;i--){ cout<<"Ingrese Elementos de la Matriz A :\n
var=A[i-1][t]/A[t][t]*1.0; ";
for(j=t;j>=1;j--){ for(i=0;i<n;i++)
A[i-1][j]=A[i-1][j]-A[t][j]*var*1.0; { for(j=0;j<n;j++)
} {cout<<"A["<<(i+1)<<(j+1)<<"]=";
} cin>>W[i][j];
} }
for(i=1;i<=n;i++){ cout<<"\n";
}
cout<<"Ingrese los Elementos de la Matriz void crear_pivote()
B:\n "; { //haciendo pivotes W[j][j]=1
for(i=0;i<n;i++) m=W[j][j];
{ if (m!=0)
cout<<"\t\tB"<<(i+1)<<"=";cin>>W[i][n]; for(s=j;s<=n;s++)
} W[j][s]= W[j][s]/m;
} else
{ cout<<"\n\n No es Inversible";
void visualisar_sistema() dato++;
{ getch(); }
if( cont==1) }
{ clrscr();
cout<<"\n Sistema void crear_nulos_en_columna_pivote()
Ax=B ingresado:\n "; { //haciendo W[i][j]=0, j!=i , j != n , con
} operaciones elementales
else for (l=0;l<n;l++)
cout<<"\n\n\n Sistema Ax=B (Matriz { m=W[l][k];
escalonada reducida) :\n"; if(l!=k)
cout<<"matriz A: "; for(r=0;r<n+1;r++)
gotoxy(6*n,wherey()); { Wo[k][r]=m*W[k][r] ;
cout<<"matriz B:\n"; W[l][r]=W[l][r]- Wo[k][r];
for(i=0;i<n;i++) }
{ for(j=0;j<n;j++) }
{ cout<<W[i][j];
cout<< ‘\t’; }
} void mostrar_solucion()
{ if(dato!=0)
cout<<W[i][n]; cout<<"\n\n El Sistema Tiene
cout<<"\n"; infinitas Soluciones" ;
} else
getch(); { cout<<"\n solucion al sistema
} Ax=B:\n";
for(int i=0;i<n;i++)
{
void hacer_diagonal_principal_dif_cero() cout<<"x["<<(i+1)<<"]="<<W[i][n];
{ //creando una fila adicional A[k]=(suma de cout<<"\t";
todas las filas) }
for(k=0;k<=n;k++) }
for(j=0;j<n;j++) }
A[k]= A[k]+W[j][k]; 39. Programa que resuelve la siguiente serie
1 1
//sumando a cada fila la fila A[k] e + 2a e + 4a
2
e + 6a 3
BIBLBLIOGRAFIA