05 Arreglos
05 Arreglos
05 Arreglos
ARREGLOS
Los arreglos son tipos de datos que permiten almacenar varios valores en una sola variable,
estas pueden ser multidimensionales.
Matriz, vector, arreglo( arreglo de 1 dimensión, 2 dimensiones, … n dimensiones)
Ejemplo de una dimensión: Ejemplo de dos dimensiones:
int x[5]; int m[3][4],t[3][4];
x[3]=7; m[2][1]=5;
x[0]=x[3]-3; m[1][2]=7;
m[0][1]=m[2][1]+4;
4 7 x 0 1 2 3
0 1 2 3 4 0 9
1 7
2 5
1 3 5 7 .. (vacío) y
0 1 2 3 … 4999
#include<iostream>
#include<math.h>
#include<time.h>
return 0;
}
//Prototipo de las funciones
void mostrar_posicion_mayor(int m,int n,int v[])
{for(int i=0;i<n;i++)
if (m==v[i])
cout<<i+1<<" ";
cout<<endl;
}
int menu();
//PROGRAMA PRINCIPAL
int main()
{ float A[Fm][Cm],B[Fm][Cm],C[Fm][Cm];
int fa=0,ca=0,fb=0,cb=0,fc=0,cc=0,opcion;
system("color f9");
srand(time(NULL));
do{
opcion=menu();
switch(opcion)
{case 1:cout<<"matriz A=\n";generar(fa,ca,A);
mostrar(fa,ca,A);break;
case 2:cout<<"matriz B=\n";generar(fb,cb,B);
mostrar(fb,cb,B);break;
case 3:cout<<"matriz A=\n";leer(fa,ca,A);
mostrar(fa,ca,A);break;
case 4:cout<<"matriz B=\n";leer(fb,cb,B);
mostrar(fb,cb,B);break;
case 5:cout<<"matriz A=\n";
mostrar(fa,ca,A);break;
case 6:cout<<"matriz B=\n";
}
int menu()
{int opcion;
cout<<"**************************************************\n";
cout<<"* MENU PRINCIPAL DE *\n";
cout<<"* Genera aleatoriamente matriz (1)A y (2)B *\n";
cout<<"* Leer por pantalla matriz (3)A y (4)B *\n";
cout<<"* Mostrar matrices (5)A, (6)B y (7)C *\n";
cout<<"* Operaciones basicas grabadas en C: *\n";
cout<<"* (8)A+B (9)A-B (10)Transpuesta(A) *\n";
cout<<"* (11)Suma de columnas de A *\n";
cout<<"* (0)Salir *\n";
cout<<"* *\n";
cout<<"**************************************************\n";
cout<<"Ingrese opcion:";
cin>>opcion;
return opcion;
}
void sumar(int fa,int ca,float A[Fm][Cm],
int fb,int cb,float B[Fm][Cm],
int &fc,int &cc,float C[Fm][Cm])
{if (fa==fb && ca==cb)
{for(int i=0;i<fa;i++)
for (int j=0;j<ca;j++)
C[i][j]=A[i][j]+B[i][j];
fc=fa;
cc=ca;
}
else
fc=cc=0;
fc=1;
cc=ca;
}
Problemas:
1) Genere aleatoriamente los datos de dos polinomios, en arreglos de una dimensión y
muestre la suma , la resta y el producto de dichos polinomios.
2) Lea los datos de un polinomio y muestre la derivada e integral de dicho polinomio
3) Lea 2 polinomios y muestre el producto entre ellas.
4) Considerando que un número gigante de 200 cifras se almacena en un vector (arreglo de
una dimensión), donde cada dígito es almacenado en cada elemento del vector, entonces
desarrolle un programa que lea 2 números grandes y calcule la suma, la resta, el producto
y el factorial.
5) Simule el juego de una rifa, considerando n participantes y considerando que el ganador
será designado en el k-esimo intento. Los que salieron sorteados antes del k-esimo intento,
son anulados del juego.
7) Implementar el juego del michi que se use un menú para que jueguen 2 personas, el
programa determinará el estado final del juego: Ganó jugador 1, Gano jugador 2 o Empate.
8) Mejorar el programa anterior, para que un jugador juegue con la máquina.
9) Implementar un programa que genere una matriz de nxn y el programa calcule la matriz
triangular superior equivalente a partir de operaciones elementales.
10) Implementar el juego del buscaminas.
11) Procesamiento de notas de un aula clase, en las filas se ubican las notas de cada alumno y
en las columnas se ubican las diferentes evaluaciones, por ejemplo, columna 1=> practica
1, Columna 2 => practica 2, así sucesivamente. El programa deberá realizar varios reportes
con el uso de un menú:
• Reporte de todas las notas mostrando al detalle todas las notas de todos los alumnos.
• Reporte de todos los alumnos desaprobados mostrando solamente su nota final
• Reporte de los alumnos que se encuentran en el tercio superior.
• Reporte de la máxima y mínima nota del aula.
Solución problema 1:
#include<iostream>
#include<math.h>
#include<time.h>
using namespace std;
//Prototipo de la funcion
#define N 1000
void generar(int p[],int n);
void mostrar(int p[],int n);
void mostrar2(int p[],int n);
void sumar(int p[],int np, int q[],int nq,int r[],int &nr);
void restar(int p[],int np, int q[],int nq,int r[],int &nr);
void producto(int p[],int np, int q[],int nq,int r[],int &nr);
//programa principal
int main()
{int p[N],q[N],r[N];
}
cout<<endl;
}
void mostrar2(int p[],int n)
{for(int i=0;i<=n;i++)
cout<<p[i]<<" ";
cout<<endl;
}
void sumar(int p[],int np, int q[],int nq,int r[],int &nr)
{if (np>nq)
{nr=np;
for (int i=nq+1;i<=nr;i++)
q[i]=0;
}
else
{nr=nq;
for (int i=np+1;i<=nr;i++)
p[i]=0;
for(int i=0;i<=nr;i++)
r[i]=p[i]+q[i];
}
void restar(int p[],int np, int q[],int nq,int r[],int &nr)
{if (np>nq)
{nr=np;
for (int i=nq+1;i<=nr;i++)
q[i]=0;
}
else
{nr=nq;
for (int i=np+1;i<=nr;i++)
p[i]=0;
}
for(int i=0;i<=nr;i++)
r[i]=p[i]-q[i];
}
for(int ip=1;ip<=nq;ip++)
{s=0;
for(int iq=ip;iq<=nq;iq++)
s=s+q[iq]*p[np-(iq-ip)];
r[np+ip]=s;
}
}
Solución:
#include<iostream>
#include<conio.h>
#include<math.h>
#include<time.h>
using namespace std;
#define NF 81
#define NC 3
mezclar_combinaciones(T);
ejecutar_test(T);
//ejecutar_aprendizaje;
return 0;
}
void generar_combinaciones(int T[NF][NC])
{
int f = 0;
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
{
T[f][0] = i + 1;
T[f][1] = j + 1;
T[f][2] = 0;
f++;
}
}
void ejecutar_test(int T[NF][NC])
{
}
}
void mezclar_combinaciones(int T[NF][NC])
{
int p;
for(int i=0;i<NF;i++)
{
p = rand() % NF;
intercambiar(T, i, p);
}
}