Documentos de Académico
Documentos de Profesional
Documentos de Cultura
60
7.1 ARREGLOS
Un arreglo es una colección de variables del mismo tipo que se referencian por
un nombre común. Para acceder a un elemento específico se utiliza un índice
que indica la posición del elemento.
Sintaxis:
Nombre_del_tipo Nombre_del_arreglo[tamaño_declarado];
Valor de una
Nombre del tipo int A[n + 5] = 8
variable indizada
E1 E2 E3 E4 E5 E6 E7 E8
Pos 0 Pos 1 Pos 2 Pos 3 Pos 4 Pos 5 Pos 6 Pos 7
int arreglo[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int arreglo[5] = { 0 };/* todos los elementos del arreglo se inicializan con 0 */
int arreglo[10] = { 5 }; /* arreglo = { 5, 0, 0, 0, 0, 0, 0, 0, 0, 0 } */
int arreglo[6] = { 5, 4, 3 }; /* arreglo = { 5, 4, 3, 0, 0, 0 } */
int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
char cadena[5]=“hola”;
#include <iostream.h>
#include <stdlib.h>
int main()
{
const int TAM = 10;
int tamanio;
int arreglo[TAM];
do {
cout << "Digite tamaño del arreglo (entre 1 y 10): ";
cin >> tamanio;
} while (tamanio < 1 || tamanio > 10);
system("PAUSE");
return 0;
}
#include <iostream.h>
#include <stdlib.h>
#define TAM 10
int main()
{
int tamanio;
int arreglo[TAM];
do {
cout << "Digite tamaño del arreglo (entre 1 y 10): ";
cin >> tamanio;
} while (tamanio < 1 || tamanio > 10);
system("PAUSE");
return 0;
}
inicio
leer n
ingresando elementos para el array
hacer para i=0 mientras i<=n incremento 1 en 1
leer A(i)
fin hacer
imprimiendo el array
hacer para i=0 mientras i<=n incrementado 1 en 1
imprime A(i)
fin hacer
fin
inicio
leer n
ingresando elementos para el array
hacer para i=0 mientras i<=n incremento 1 en 1
leer A(i)
fin hacer
multiplicando los elementos del array
hacer para i=0 mientras i<=n incrementado 1 en 1
C(i)=A(i)*B(i)
fin hacer
imprimir C(i)
fin
inicio
leer n
ingresando elementos para el array
hacer para i=0 mientras i<=n
incremento 1 en 1
leer A(i)
fin hacer
multiplicando los elementos del array
hacer para i=0 mientras i<=n
incrementado 1 en 1
C(i)=A(i)*B(i)
fin hacer
imprimir C(i)
fin
#include <iostream.h>
#include <stdlib.h>
#define TAM 10
int main()
{
int arreglo[TAM]; /*Arreglo de enteros */
int valor; /*Valor de inicialización del arreglo */
int indice; /*Variable de control ciclo for */
cout << "Digite el valor con el que desea inicializar los elementos del arreglo: ";
cin >> valor;
//INICIALIZAR EL ARREGLO
for (indice = 0; indice < TAM; indice++)
{
arreglo[indice] = valor;
}
//IMPRIMIR EL ARREGLO
for (indice = 0; indice < TAM; indice++)
{
cout << arreglo[indice] << " ";
}
system("PAUSE");
return 0;
}
7. Una empresa desea procesar las ventas realizadas mes a mes anualmente con
el fin de obtener la siguiente información:
Mes en el que se obtuvo la mejor venta
El monto de la venta máxima obtenida
Total de las ventas
Promedio de ventas
Mostrar las ventas de menor a mayor
#include <stdlib.h>
#include <iostream.h>
void main(void)
{ float ventas[12]; //Arreglo que guarda las ventas del mes
int mes, i; //Guarda mes(indice) de una venta en el arreglo
int mesVMax; //Guarda el mes de la venta máxima
float ventaMax; //Guarda el monto de la venta máxima
float totalVentas; //Guarda el monto total de ventas en el año
float temporal; //Se utiliza en el ordenamiento de las ventas
system("CLS"); //Limpiar pantalla
cout << "programa de procesamiento de ventas anuales: \n\n";
for(mes = 0; mes < 12 ; mes++)
{ cout << "Digite las ventas del mes número " << mes +1 <<": ";
cin >> ventas[mes];
}
#include"iostream.h"
main()
{ int n,i,Aprobado=0,desaprobado=0;
float A[100],porcentaje;
cout<<"ingrese cantidad de notas";
cin>>n;
for(i=1;i<=n;i++)
{ cout<<"Nota"<<i<<":";
cin>>A[i];
}
for(i=1;i<=n;i++)
{ if(A[i]>=10.5)
Aprobado=Aprobado+1;
else
desaprobado=desaprobado+1;
}
cout<<"el numero de aprobados es:"<<Aprobado<<endl;
cout<<"el numero de desaprobados es:"<<desaprobado<<endl;
cout<<"el porcenaje de aprobados es:"<<Aprobado*100/n<<"%"<<endl;
cout<<"el porcentaje de desaprobados
es:"<<desaprobado*100/n<<"%"<<endl;
return 0;
}
#include <iostream.h>
#include <stdlib.h>
int main()
{
const int tamanoArreglo = 100; // tamaño del arreglo a
int a[ tamanoArreglo ]; // crea el arreglo a
int claveBusqueda; // valor a localizar dentro de a
int pos; // Posición de la clave buscada
system ("PAUSE");
return 0; // indica terminación exitosa
} // fin de main
#include "iostream.h"
int main()
{ int A[100],B[100],C[100], n,i;
cout<<"cuantos datos desea ingresar ";
cin>>n;
cout<<"ingresando datos para el vector A \n";
for(i=0;i<n;i++)
{cout<<"dato"<<i<<":";
cin>>A[i];
}
cout<<"ingresando datos para el vector B \n";
for(i=0;i<n;i++)
{cout<<"dato"<<i<<":";
cin>>B[i];
}
for(i=0;i<n;i++)
{C[i]=A[i]*B[i];
cout<<C[i]<<endl;
}
return 0;
}
#include"iostream.h"
main()
{ int n,i,v=0,x=0,A[100];
cout<<"ingrese cantidad de notas";
cin>>n;
for(i=1;i<=n;i++)
{ cout<<"A["<<i<<"]:";
cin>>A[i];
}
for(i=1;i<=n;i++)
{ cout<<A[i]<<endl;
}
cout<<"vector inversa"<<endl;
for(i=n;i>0;i--)
{ cout<<A[i]<<endl;
}
return 0;
}
Para utilizar este algoritmo, el array debe estar ordenado. La búsqueda binaria
consiste en dividir el array por su elemento medio en dos subarrays más
pequeños, y comparar el elemento con el del centro. Si coinciden, la búsqueda se
termina. Si el elemento es menor, debe estar (si está) en el primer subarray, y si
es mayor está en el segundo.
Ejemplo:
#include"iostream.h"
main()
{ int n,A[100],i,j,central,nbuscar,encontrado=0,primero=0,ultimo,temp;
cout<<"ingrese cantidad de elementos:"; cin>>n;
for(i=1;i<=n;i++)
{ cout<<"A["<<i<<"]: ";
cin>>A[i];
}
cout<<"elementos ordenados"<<endl;
for(i=1;i<n;i++)
{ for(j=i+1;j<=n;j++)
if(A[i]>A[j])
{ temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
for(i=1;i<=n;i++)
{ cout<<"A["<<i<<"]: "<<A[i]<<endl;
}
cout<<"ingrese el numero a buscar: ";
cin>>nbuscar;
ultimo=n;
while((primero<=ultimo) && (!encontrado))
{ central=(primero + ultimo)/2;
if(nbuscar==A[central])
encontrado=1;
else
if(nbuscar>A[central])
primero=central+1;
else
ultimo=central-1;
}
if(encontrado)
cout<<"el numero "<<nbuscar<<" se encuentra en la posicion
"<<central<<endl;
else
cout<<"el numero no se encuentra en el arreglo "<<endl;
return 0;
}
7.4 Ordenamiento
Es la operación de arreglar los registros de una tabla en algún orden secuencial de
acuerdo a un criterio de ordenamiento. El ordenamiento se efectúa con base en el
valor de algún campo en un registro. El propósito principal de un ordenamiento es el
de facilitar las búsquedas de los miembros del conjunto ordenado.
El ordenar un grupo de datos significa mover los datos o sus referencias para que
queden en una secuencia tal que represente un orden, el cual puede ser numérico,
alfabético o incluso alfanumérico, ascendente o descendente.
Codigo en C++
#include"iostream.h"
main( )
{ int n,i,j,temp,A[100];
cout<<"ingrese cantidad de notas";
cin>>n;
for(i=1;i<=n;i++)
{ cout<<"Nota"<<i<<":";
cin>>A[i];
}
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{ if(A[i]>A[j])
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
for(i=1;i<=n;i++)
cout<<A[i]<<endl;
return 0;
}
Algoritmo:
Shakersort(A,N)
Inicio
Declarar i, izq, der, k, aux: entero
izq 2
der N
kN
Repetir
Para i der hasta izq inc (-1) haga
Si (A[i-1]>A[i]) entonces
Aux A[i-1]
A[i-1] A[i]
A[i] aux
ki
Fin si
Fin para
Izq k + 1
Para i izq hasta der haga
Si (A[i-1] > A[i]) entonces
Aux A[i-1]
A[i-1] A[i]
A[i] Aux
ki
Fin si
Fin para
Der k-1
Hasta que izq>der
Fin
Codigo en C++
#include<iostream.h>
#include<conio.h>
main( )
{ int izq,der, aux,i,N,k;
float A[20];
cout<<"ingrese dimencion de matriz"; cin>>N;
k=N;izq=2;der=N;
for(i=1;i<=N;i++)
{ cout<<i<<" : "; cin>>A[i];
}
while(izq<der)
{
for(i =der;i>=izq;i--)
if (A[i-1]>A[i])
{ aux=A[i-1];
A[i-1]=A[i];
A[i]=aux;
k=i;
}
izq=k+1;
for(i =izq ;i<=der;i++)
if (A[i-1]>A[i])
{ aux=A[i-1];
A[i-1]=A[i];
A[i]=aux;
k=i;
}
der=k-1;
}
for(i=1;i<=N;i++)
cout<<A[i]<<" ";
return 0;
}
Codigo en C++
#include "iostream.h"
main()
{ int A[100],N,i,k,aux;
cout<<"ingrese la dimensión del vector"; cin>>N;
for(i=1;i<=N;i++)
{ cout<<"A["<<i<<"]:";
cin>>A[i];
}
for(i=2; i<=N;i++)
{ aux=A[i];
k=i-1;
while((k>=1)&&(aux<A[k]))
{ A[k+1]=A[k];
k=k-1;
}
A[k+1]=aux;
}
for(k=1;k<=N;k++)
cout<<A[k]<<endl;
return 0;
}
Algoritmo:
seleccion(A,N)
Inicio
Declarar i, menor, k, j: entero
Para i 1 hasta N-1 haga
Menor A[i]
ki
Para j i+1 hasta N haga
Si (A[j]<menor) entonces
Menor A[j]
kj
Fin si
Fin para
A[k] A[i]
A[i] menor
Fin para
Fin
Codigo en C++
#include "iostream.h"
main()
{ int A[100],N,i,j,menor,k;
cout<<"ingrese la dimensión del vector"; cin>>N;
for(i=1;i<=N;i++)
{ cout<<"A["<<i<<"]:"; cin>>A[i];
}
for(i=1; i<=N-1;i++)
{ menor=A[i];
k=i;
for(j=i+1; j<=N;j++)
{ if(A[j]<menor)
{ menor=A[j];
k=j;
}
}
A[k]=A[i];
A[i]=menor;
}
for(k=1;k<=N;k++)
cout<<A[k]<<endl;
return 0;
}
Algoritmo:
Quicksortitera(A, N)
Inicio
Declarar top, ini, fin, pos: entero
Pilamayor: Arreglo[1..MAX] de entero
Pilamenor: Arreglo[1..MAX] de entero
Top 1
Pilamenor[top] 1
Pilamayor[top] N
Mientras Que (top>0) haga
Ini pilamenor[top]
Fin pilamayor[top]
Top top-1
Pos Reduceitera(ini, fin)
Si (ini<(pos-1)) entonces
Top top+1
Pilamenor[top] ini
Pilamayor[top] pos-1
Fin si
Si (fin>(pos+1)) entonces
Top top+1
Pilamenor[top] pos+1
Pilamayor[top] fin
Fin si
Fin MQ
Fin
8.1 Definicion
Es un conjunto de datos homogéneo, finito y ordenado, donde se hace referencia a cada
elemento por medio de dos índices. El primero se utiliza para los renglones (filas) y el
segundo para las columnas. También puede definirse como un arreglo de arreglos.
Internamente en memoria se reservan MxN posiciones consecutivas para almacenar
todos los elementos del arreglo.
Una matriz es un arreglo bidimensional, es decir, que se maneja con dos índices. En
C++ se representan sus posiciones así:
Matriz M de 3x3
M[0][0] M[0][1] M[0][2]
M[1][0] M[1][2] M[1][2]
M[2][0] M[2][1] M[2][2]
El primer índice indica las filas y el segundo las columnas.
Ejemplo:
Rellenar una matríz identidad de 4 por 4 elementos.
Una matriz identidad es aquella en la que la diagonal principal está llena de
unos y el resto de los elementos son cero. Para llenar la matriz identidad se debe
verificar que cuando los índices i y j sean iguales, la posición vale 1, en caso
contrario se asigna cero al elemento i,j.
Algoritmo
Inicio
Desde i = 1 hasta 4 hacer
Desde j = 1 hasta 4 hacer
Si i=j entonces
Matriz[i,j] =1
Sino
Matriz[i,j] =0
Fin_si
Fin_desde
Fin_desde
Fin
Ejemplos:
1. Inicializar e imprimir una matriz
#include <iostream.h>
#include <stdlib.h>
#define FILAS 2
#define COL 3
int main()
{
int matriz[FILAS][COL];
/*capturar datos de la matriz */
for (int fila = 0; fila < FILAS; fila++)
{ for (int col = 0; col < COL; col++)
{
cout << "Digite el elemento de la posición [" << fila << "][" << col << "]: ";
cin >> matriz[fila][col];
}
}
cout << "\n\n***** MATRIZ GENERADA *****\n\n" ;
for (int fila = 0; fila < FILAS; fila++)
{ for (int col = 0; col < COL; col++)
{ cout << matriz[fila][col] << "\t";
}
cout << "\n";
}
system("PAUSE");
return 0;
}
#include "iostream.h"
int main()
{ int matriz[15][15], i, j, n, su=0, m;
cout<<"ingrese número de filas:";
cin>>m;
cout<<"ingrese número de columnas:";
cin>>n;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{ cout<<"matriz"<<i<<j;
cin>>matriz[i][j];
su=su+matriz[i][j];
}
cout<<"matriz dato"<<endl;
for(i=0;i<m;i++)
{ for(j=0;j<n;j++)
cout<<matriz[i][j]<<endl;
}
cout<<"la suma total es:"<<su<<endl;
return 0;
}
#include "iostream.h"
main()
{
int n,m,i,j,A[100][100],M[100];
#include "iostream.h"
main()
{ int n,m,i,a,b,k,j,A[100][100],B[100][100],C[100][100];
cout<<"ingresando el orden de la matriz A[i][j]"<<endl;
cout<<"ingrese la fila de la matriz:";
cin>>n;
cout<<"ingrese la columna de la matriz:";
cin>>m;
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)
{ cout<<"A["<<i<<"]"<<"["<<j<<"]:";
cin>>A[i][j];
}
}
cout<<"ingresando elementos de la matriz B"<<endl;
cout<<"ingrese la fila de la matriz";
cin>>a;
cout<<"ingrese la columna de la matriz";
cin>>b;
for(i=1;i<=a;i++)
{ for(j=1;j<=b;j++)
{ cout<<"B["<<i<<"]"<<"["<<j<<"]:";
cin>>B[i][j];
}
}
cout<<"multiplicando las dos matrices"<<endl;
if(m==a)
{ for(i=1;i<=n;i++)
{ for(j=1;j<=b;j++)
{ C[i][j]=0;
for(k=1;k<=m;k++)
{ C[i][j]=C[i][j]+A[i][k]*B[k][j];
}
cout<<C[i][j]<<" ";
}
cout<<endl;
}
}
else
cout<<"no son compatibles las matrices"<<endl;
return 0;
}
Partido P1 P2 P3 P4 P5 P6 P0(Votos en
Departamento blanco)
Lima
Arequipa
…
Tumbes
void main()
{ int votos[DPTOS][7],votantes[DPTOS],abstencion[DPTOS],total,i,j;
int maximo,max_indice;
system("CLS");
for(i=0;i<DPTOS;i++) {
for(j=0;j<=6;j++) {
if(j == 0) {
cout<<"Votos en blanco en el Dpto " <<i<<": ";
cin>>votos[i][j]; // Almacena los datos leidos en la matriz
}
else {
cout<<"Votos del partido P"<<j<<" en el Dpto "<<i<<": ";
cin>>votos[i][j]; // Almacena los datos leidos en la matriz
}
}
}
cout<<endl;
for(i=0;i<DPTOS;i++){
cout<<"Personas que deben votar en el Dpto "<<i<<": ";
cin>>votantes[i];
}
cout <<endl;
for(j=1;j<=6;j++){
total=0; // Variable acumuladora, por lo cual hay que inicializarla en 0
for(i=0;i<DPTOS;i++){
total = total+votos[i][j];
}
cout<<"Votos obtenidos por el partido P"<<j<<": "<<total<<endl;
}
cout<<endl;
// Suma la matriz por filas para dar el total de votos por departamento
maximo=0;
for(i=0;i<DPTOS;i++){
total=0; // Variable acumuladora, por lo cual hay que inicializarla en 0
for(j=0;j<=6;j++){
total=total+votos[i][j];
if(i==1 && maximo<votos[i][j]){ // Busca el partido de más votos en el segundo Dpto.
maximo=votos[i][j];
max_indice=j; // Almacena el índice del partido con más votos
}
}
abstencion[i]=votantes[i]-total; // Calcula la abstención de una vez
cout<<"Votos totales en el Dpto "<<i<<": "<<total;
cout<<"; Votó el "<<total*100/votantes[i]<<"% de la población."<<endl;
}
cout<<endl<<"El partido P"<<max_indice<<" obtuvo el mayor número de votos en el segundo
Dpto."<<endl<<endl;
maximo=0;
for(i=0;i<DPTOS;i++){
if(maximo<abstencion[i]){ // Busca el Dpto de más abstención
maximo=abstencion[i];
max_indice=i;
}
cout <<"Abstención de "<<abstencion[i]<<" en el Dpto "<<i<<", para un porcentaje de"
<<abstencion[i]*100/votantes[i]<<"% "<<endl;
}
cout<<endl<<"El partido con mayor abstención fue el Dpto "<<max_indice<<endl;
system("PAUSE");
}
m=n-1;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{ cout<<"A["<<i<<"]"<<"["<<j<<"]:";
cin>>a[i][j];
}
}
det=a[1][1];
for(k=1;k<=m;k++)
{
l=k+1;
for(i=l;i<=n;i++)
{
for(j=l;j<=n;j++)
a[i][j] = ( a[k][k]*a[i][j]-a[k][j]*a[i][k] )/a[k][k]; }
det=det*a[k+1][k+1];
}
cout<<"la determinante de la matriz es: "<<det<<endl;
return 0;
}
#include<iostream.h>
#include<conio.h>
main(){
double A[100][100],B[100][100],C[100][100],R[100][100];
float U[100][100];
int i,j,k,l,m,n,tem,temporal,p;
cout<<"ingrese dimencion de matriz"; cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=2*n;j++)
{ A[i][j]=0 ;
if(j-i==n || i==j)
A[i][j]=1;
B[i][j]=A[i][j];
}
for(i=1;i<=n;i++){
cout<<endl;
for(j=1;j<=2*n;j++)
cout<<A[i][j]<<" ";
}
cout<<endl<<endl;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
cout<<i<<"-"<<j<<" : ";
cin>>A[i][j];
B[i][j]=A[i][j];
}
cout<<endl<<endl;
for(i=1;i<=n;i++){
cout<<endl;
for(j=1;j<=2*n;j++)
cout<<A[i][j]<<" ";
}
//hasta aqui ingreso matrizzzz
i=1;
for(j=1;j<=n;j++){
if(i==j && i<=n){
for(m=1;m<=2*n;m++){
U[i][m]=A[i][m]/B[i][i];
C[i][m]=U[i][m];}
}
if(i==j&&i<=n){
for(k=1;k<=n;k++)
if(i!=k && i<=n){
for(m=i;m<=2*n;m++)
C[k][m]=A[k][m]-U[i][m]*B[k][i];
}
}
for(l=1;l<=n;l++)
for(p=1;p<=n*2;p++)
A[l][p]=C[l][p];
for(l=1;l<=n;l++)
for(p=1;p<=n*2;p++){
B[l][p]=A[l][p];
}
i++;
}
cout<<endl<<endl;
for(i=1;i<=n;i++){
cout<<endl;
for(j=1;j<=n*2;j++)
cout<<U[i][j]<<" ";
}
cout<<endl<<endl;
for(i=1;i<=n;i++){
cout<<endl;
for(j=1;j<=n*2;j++)
cout<<A[i][j]<<" ";
}
cout<<endl;
getch();
}